Получить позицию элемента () независимо от родителя - PullRequest
1 голос
/ 27 октября 2010

Допустим, у вас есть XML-документ, такой как

<parents>
    <parent>
        <element />
        <element />
    </parent>
    <parent>
        <element />
        <element />
    </parent>
</parents>

Во время обработки мне нужно знать, что элементы 1, 2, 3, 4 в документе, не то, но вызов position() вернет 1, 2, 1, 2. Обычно я изменяю xml, но в этом случае это невозможно, пока я обрабатываю parent 2, мне как-то нужно знать, что это первый элемент, действительно элемент 3.

Спасибо, -с

Ответы [ 2 ]

4 голосов
/ 27 октября 2010

Использование <xsl:number>

Это преобразование:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
 </xsl:template>

 <xsl:template match="element">
     <xsl:copy>
       <xsl:number level="any" count="element"/>
     </xsl:copy>
 </xsl:template>
</xsl:stylesheet>

при применении к предоставленному документу XML :

<parents>
    <parent>
        <element />
        <element />
    </parent>
    <parent>
        <element />
        <element />
    </parent>
</parents>

дает желаемый результат :

<parents>
    <parent>
        <element>1</element>
        <element>2</element>
    </parent>
    <parent>
        <element>3</element>
        <element>4</element>
    </parent>
</parents>
1 голос
/ 27 октября 2010

Понял, это на самом деле довольно просто

<xsl:value-of select="count(preceding::element)"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...