【问题标题】:Apply template on element that does not contain another element在不包含其他元素的元素上应用模板
【发布时间】: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>

【问题讨论】:

    标签: xml xslt xpath


    【解决方案1】:
     not(y)
    

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

    【讨论】:

      【解决方案2】:

      更好用

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

      这会将模板应用于没有 y 子元素的任何 x 元素。

      通过这种方式,您无需在选择执行的匹配模板中指定任何条件逻辑。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-17
        • 2020-03-27
        • 2013-01-25
        • 1970-01-01
        • 1970-01-01
        • 2016-03-28
        相关资源
        最近更新 更多