XML节点位置

时间:2017-10-11 16:18:34

标签: xml xslt xpath position

如何获取给定XML中节点的相对位置。假设我有xml以下,我想知道第二个a中的第一个b节点是位置3。

<a>
    <b></b>
    <b></b>
</a>
<a>
    <b></b>
    <b></b>
</a>


<xsl:for-each select="a">
            <dummy>
            <xsl:for-each select="b">
                <xsl:variable name="pos" select="position()" />
                <dummy2><xsl:value-of select="$pos"/></dummy2>
            </xsl:for-each>
           </dummmy>
</xsl:for-each>

我希望dummy2有1,2,3,4个值。

<dummy>
    <dummy2>1<dummy2>
    <dummy2>2<dummy2>
</dummmy>
<dummy>
    <dummy2>3<dummy2>
    <dummy2>4<dummy2>
</dummmy>

1 个答案:

答案 0 :(得分:0)

要检查当前结果,您需要在变量中分配所有转换,例如

    <xsl:variable name="Data">
    <xsl:for-each select="a">
        <dummy>
            <xsl:for-each select="b">
                <dummy2><xsl:number level="any"/></dummy2>
            </xsl:for-each>
        </dummy>
    </xsl:for-each>
    </xsl:variable>

之后,您可以轻松地在结果数据中解释您的查询

    <xsl:value-of select="count($Data//dummy/dummy2[not(.=preceding-sibling::*)])"></xsl:value-of>