xml – XSLT:如果标签存在,应用模板;如果没有,请选择静态值

我一般都喜欢XSLT,所以请忍受我

考虑到这一点,我想要做的是检查XML中的某个标签.如果在那里我想应用一个模板.如果没有,我想添加它(作为一个空白值).基本上总是迫使它在最终输出.我该怎么做?

我有这样的东西

<xsl:choose>
    <xsl:when test="@href">
        <xsl:apply-templates select="country" />
    </xsl:when>
    <xsl:otherwise>
    </xsl:otherwise>
</xsl:choose>

代码的顶端是我认为我错了.需要的东西在否则的标签和我的部分是错的我想.

<xsl:template match="country">
    <xsl:if test=". != '' or count(./@*) != 0">
        <xsl:copy-of select="."/>
    </xsl:if>
</xsl:template>

谁能帮忙?先谢谢你.

编辑:

是的,最终我需要至少一个< country />标签在XML中.但是它根本不存在是可能的.如果它不存在,我必须把它放在.一个很好的输入将是< country> US< / country>

在父元素的模板中,预期国家元素将被使用.

<xsl:template match="foo">
  <xsl:if test="not(country)">
    <country>US</country>
  </xsl:if>
  <xsl:apply-templates/>
</xsl:template>

而不是foo使用父元素的名称.当然,你也可以做其他的东西,如复制元素,我专注于如果检查.您真的不需要xsl:choose / when /在我的视图中,xsl:if应该足够,因为apply-templates不会对不存在的子元素执行任何操作.

相关文章
相关标签/搜索