在不包含其他元素的元素上应用模板

时间:2012-11-02 00:27:48

标签: xml xslt xpath

假设我有一个元素x,如果该元素不包含,我想做点什么 另一个元素y,例如:

<xsl:for-each select="//x">
    <xs:if test="expression to check does not contain y">

    </xs:if>
</xsl:for-each>

2 个答案:

答案 0 :(得分:0)

 not(y)

测试元素是否没有直接子元素y。

答案 1 :(得分:0)

更好地使用

<xsl:apply-templates select = "//x[not(y)]"/>

这会在任何没有x元素的y元素上应用模板。

这样,您不会在所选的执行内部指定任何条件逻辑,匹配模板。

如果“包含”是指“有一个后代(不仅是孩子),那么上面应该指定为

<xsl:apply-templates select = "//x[not(descendant::y)]"/>