XSL - 如果节点将给定节点作为父节点,则执行代码

时间:2010-01-18 12:30:32

标签: xml xslt

我有以下XML(简化):

<node1>
    <node2>
        <node3>
        </node3>
    </node2>
</node1>

我需要确定(使用XSL)node3是否有一个名为node1的父级(不仅是中级父级,因此在示例中node3是node1的子级)

以下代码无效:

<xsl:if test="parent::node1">

</xsl:if>

谢谢

2 个答案:

答案 0 :(得分:10)

node3 不是直接,而是后代。改为使用 ancestor 轴,它选择当前节点的所有祖先(父级,祖父级等)。

http://www.w3schools.com/xpath/xpath_axes.asp

<xsl:if test="ancestor::node1">

</xsl:if>

答案 1 :(得分:1)

试试这个:

<xsl:if test="count(ancestor::node1)&gt;0">

</xsl:if>

如果您愿意,可以省略计数,但不是必需的。当您处于递归结构中以查找当前节点所在的深度时,它会很有用。