【问题标题】:XSLT: Check if tag exists on the outputted XMLXSLT:检查输出的 XML 上是否存在标记
【发布时间】:2011-05-26 17:17:21
【问题描述】:

如何使用 xslt 检查标签是否存在? 不同之处在于我想检查我正在创建的 XML(不是输入 XML)。

有点像<xsl:when test="phone">,但用于输出。

【问题讨论】:

  • 使用 XSLT 时,您对输入文档执行选择和测试。您通过转换输入来创建输出。除非您想测试节点集变量中元素的存在性,否则您的问题对我来说没有多大意义。在这种情况下,无论如何,您将使用与检查输入相同的方式。

标签: xml xslt xslt-2.0 xslt-1.0


【解决方案1】:

样式表的结果树是只写的。如果你想阅读它,你可以从另一个转换中做到这一点——转换管道是一种有用的设计模式。但是你还没有说你要解决什么问题。

【讨论】:

    【解决方案2】:

    除非您链接两个样式表,其中第二个将第一个的结果作为输入,或者除非您将结果存储在变量中,例如

    <xsl:variable name="temp-result">
     <xsl:apply-templates/>
    <xsl:variable>
    
    <xsl:if test="$temp-result//phone">
      <xsl:copy-of select="$temp-result"/>
    </xsl:if>
    

    我认为没有办法。请注意,上述使用变量的方法在 XSLT 2.0 中也能正常工作,而在 1.0 中,您需要在 test="exsl:node-set($temp-result)//phone" 中使用像 exsl:node-set 这样的扩展函数。

    第三种选择可能存在于支持模式的 XSLT 2.0 中,方法是根据模式验证结果,这样您可以确保结果是模式的实例。

    【讨论】:

      猜你喜欢
      • 2016-08-29
      • 2018-09-01
      • 2020-06-07
      • 2011-01-18
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-31
      相关资源
      最近更新 更多