微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

xml – xpath / xslt确定相对于所有同名节点的上下文节点的索引?

给定下面的模式 – 使用“查询”节点作为上下文,是否可以使用xpath / xslt确定该“查询”节点相对于文档中所有“查询”节点的索引(而不是相对于其的position()直接兄弟姐妹).

TIA,

杰夫

<section>
    <name>About</name>
    <link>about</link>
    <questions>
        <question>
            <query>Question 1</query>
            <answer>Lorem ipsum dolor sit amet,consectetur adipiscing elit. In cursus,elit id lacinia semper,ligula nunc rhoncus ante,in euismod tortor nibh dictum tellus.</answer>
        </question>
    </questions>
</section>

<section>
    <name>Contact</name>
    <link>contact</link>
    <questions>
        <question>
            <query>Question 1</query>
            <answer>Lorem ipsum dolor sit amet,in euismod tortor nibh dictum tellus.</answer>
        </question>
        <question>
            <query>Question 2</query>
            <answer>Lorem ipsum dolor sit amet,in euismod tortor nibh dictum tellus.</answer>
        </question>
    </questions>
</section>

解决方法

使用:

count(preceding::question)+1

此转换执行详尽的测试:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>

 <xsl:variable name="vQs" select="//question"/>

 <xsl:template match="/">
  <xsl:for-each select="$vQs">
    <xsl:value-of select=
    "count(preceding::question)+1"/>
    <xsl:text> </xsl:text>
  </xsl:for-each>
 </xsl:template>
</xsl:stylesheet>

将以上转换应用于以下XML文档时:

<t>
    <section>
        <name>About</name>
        <link>about</link>
        <questions>
            <question>
                <query>Question 1</query>
                <answer>Lorem ipsum dolor sit amet,in euismod tortor nibh dictum tellus.</answer>
            </question>
            <question>
                <query>Question 2</query>
                <answer>Lorem ipsum dolor sit amet,in euismod tortor nibh dictum tellus.</answer>
            </question>
        </questions>
    </section>
    <section>
        <name>Contact</name>
        <link>contact</link>
        <questions>
            <question>
                <query>Question 3</query>
                <answer>Lorem ipsum dolor sit amet,in euismod tortor nibh dictum tellus.</answer>
            </question>
            <question>
                <query>Question 4</query>
                <answer>Lorem ipsum dolor sit amet,in euismod tortor nibh dictum tellus.</answer>
            </question>
            <question>
                <query>Question 5</query>
                <answer>Lorem ipsum dolor sit amet,in euismod tortor nibh dictum tellus.</answer>
            </question>
        </questions>
    </section>
</t>

产生了想要的结果:

1 2 3 4 5

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。