XSLT - 如果它包含无效数据,则排除节点

时间:2017-03-08 16:25:39

标签: xslt xpath xslt-1.0

我试图检查子节点的值,并将其包含在已转换的XML中,只要它的值不是-1。下面是输入xml的示例。

<root>
   <a>-1</a>
   <b>valid</b>
   <c>valid</c>
   <d>valid</d>
</root>

XSLT的相关部分:

<xsl:choose>
     <xsl:when test="/a != -1">
          <xsl:value-of select="*"></xsl:value-of>     
     </xsl:when>
     <xsl:otherwise>
          <xsl:value-of select="*[not(a)]"></xsl:value-of>
     </xsl:otherwise>
</xsl:choose>

允许元素b到c的值为-1,因此我需要特别检查该值的<a>元素,并且只应排除它。目前我在选择块中执行-1检查,并尝试使用<xsl:value-of select="*[not(a)]"></xsl:value-of>将其排除。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

如果您使用xsl:apply-templates使用标准的递归下降处理模型,那么您只需要一个无用的规则

<xsl:template match="a[.=-1]"/>

排除这些元素。

如果您正在使用其他处理模型,则需要向我们展示您的代码。