XSLT:检查输出的XML上是否存在标记

时间:2011-05-26 17:17:21

标签: xml xslt xslt-2.0 xslt-1.0

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

有点像<xsl:when test="phone">但是输出相反。

2 个答案:

答案 0 :(得分:1)

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

<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时,您需要在exsl:node-set中使用test="exsl:node-set($temp-result)//phone"之类的扩展函数。

通过针对模式验证结果,模式感知XSLT 2.0可能存在第三个选项,这样您就可以确保结果是模式的实例。

答案 1 :(得分:1)

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