Pregunta

Permítanme comenzar diciendo que sé de position() pero me parece que no puede encontrar la manera de hacer que funcione en este contexto.

Lo que estoy tratando de hacer es iterar a través de mi cuerpo de texto y encontrar todas las imágenes. Estos se convierten en enlaces que dicen "Figura 1" y así sucesivamente. El número es proporcionada por el position() de un nodo correspondiente en un conjunto de nodos diferentes.

Este es un ejemplo de mi XML:

<understanding-individual-question>
    <section id="18" handle="questions">Questions</section>
    <entry id="162">
        <images items="3">
            <item id="215">
                <description mode="normal" handle="winter-frozen-period-for-stile-s-pond" word-count="6">Winter frozen period for Stile’s Pond.</description>
                <file size="73 KB" path="/uploads" type="image/jpg">
                    <filename>lakefrozen-1276880623.jpg</filename>
                    <meta creation="2010-06-18T13:03:43-04:00" width="532" height="479" />
                </file>
                <title mode="normal" handle="stiles-pond-frozen" word-count="3">Stile's Pond Frozen</title>
            </item>
        </images>
    </entry>
</understanding-individual-question>

He intentado un número de diferentes métodos para conseguir lo que sería la posición de ese nodo item de otro lugar en el XML pero sigo volviendo errores, nada o NaN.

Aquí hay tres ejemplos de la XSLT que he intentado:

<xsl:template match="information//img">
    <xsl:variable name="link" select="substring-after(@src,'uploads/')" />
    <em>(<a rel="figure" href="{@src}">
        <xsl:text>See Figure </xsl:text>
        <!-- Method 1: Returns all as 'NaN' -->
        <xsl:number value="/data/understanding-individual-question/entry/images/item[file/filename = $link][position()]" format="1"/>
        <!-- Method 2: Returns all as '1' -->
        <xsl:for-each select="/data/understanding-individual-question/entry/images/item[file/filename = $link]">
            <xsl:number value="position()" format="1"/>
        </xsl:for-each>
        <!-- Method 3: Returns all as '2' -->
        <xsl:number value="position()" format="1"/>
    </a>.)</em>
</xsl:template>

he comprobado mi XPATH y devuelve el nodo correcto, no hay problema. Sin embargo, no importa lo que haga nunca devuelve el position() del nodo! Y no puedo entender por qué.

soluciones de esta pregunta pero seguí recibiendo NaN .

Alguien tiene alguna idea de cómo hacer esto?

¿Fue útil?

Solución

Con su segundo uso del método:

count(preceding-sibling::item) +1
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top