【发布时间】:2012-11-02 00:27:47
【问题描述】:
假设我有一个元素 x,如果该元素不包含 另一个元素 y,例如:
<xsl:for-each select="//x">
<xs:if test="expression to check does not contain y">
</xs:if>
</xsl:for-each>
【问题讨论】:
假设我有一个元素 x,如果该元素不包含 另一个元素 y,例如:
<xsl:for-each select="//x">
<xs:if test="expression to check does not contain y">
</xs:if>
</xsl:for-each>
【问题讨论】:
not(y)
测试一个元素是否没有直接子元素 y。
【讨论】:
更好用:
<xsl:apply-templates select = "//x[not(y)]"/>
这会将模板应用于没有 y 子元素的任何 x 元素。
通过这种方式,您无需在选择执行的匹配模板中指定任何条件逻辑。
如果“包含”是指“有后代(不仅仅是孩子),那么上面的内容应该指定为:
<xsl:apply-templates select = "//x[not(descendant::y)]"/>
【讨论】: