如何在xslt中检查当前节点的父节点是否是根节点?

Sar*_*nan 10 xml xslt xpath xpath-2.0

我想在Xslt中检查当前节点的父节点是否是根节点.我这样做了吗?请指导我摆脱这个问题......

谢谢和问候,P.SARAVANAN

Dan*_*ley 8

你可以用not(ancestor::*).

用法示例:

  <xsl:template match="node()|@*">
    <xsl:if test="not(ancestor::*)">
      <xsl:message>The root element is "<xsl:value-of select="name()"/>".</xsl:message>
    </xsl:if>
    <xsl:copy>
      <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
  </xsl:template>
Run Code Online (Sandbox Code Playgroud)

  • 两个限定条件:(a)这对于XSLT 1.0来说是可以的,其中根节点始终是文档节点; 它不适用于2.0,其中根节点可能是元素节点(或实际上是属性或文本节点).(b)除了消息之外,给出的代码是可以的.作为根(文档)节点的子节点的注释或处理指令将满足测试,但会产生虚假消息. (5认同)

Dim*_*hev 7

在XPath 1.0(XSLT 1.0)中:

not(parent::*)
Run Code Online (Sandbox Code Playgroud)

或者您可以使用:

generate-id(..) = generate-id(/)
Run Code Online (Sandbox Code Playgroud)

在XPath 2.0(XSLT 2.0)中:

.. is root()
Run Code Online (Sandbox Code Playgroud)