Tengo un documento que se ve algo como¿Puedo construir esta consulta XPath de forma dinámica en XSLT?
<root>
<element>
<subelement1 />
<subelement2 />
</element>
<element>
<subelement2 />
<subelement1 />
</element>
</root>
En mi hoja XSLT en el contexto de /element[2]/[someNode]
Quiero conseguir un número que representa la distancia de /element[1]/[someNode]
(es decir, el número de hermanos anteriores de /element1/[someNode]
). Por ejemplo, en el contexto de /element[2]/subelement1
me gustaría tener alguna forma de obtener el número 2, la distancia de /element[1]
a /element[1]/subelement2
. Solo necesito la distancia del nombre de nodo dado desde la primera instancia de <element>
.
Intuitivamente pensé que podía construir esto como
<xsl:variable name="nodename" select="name()" />
<xsl:value-of select="/element[1]/$nodename/preceding-sibling::*" />
pero desafortunadamente esta hoja no se compila. ¿Lo que intento lograr es posible en XSLT?
Su ejemplo parece inconsistente: en el contexto de '/ element [2]/[someNode]' quieres encontrar '/ element [1]/[someNode]' con un ejemplo en '/ element [2]/subelement1' quieres encontrar el distancia de '/ element [1]' a '/ element [1]/subelement 2' - ¿entonces es [algúnNodo] aquí subelemento2 o subelemento1? –
Véase también http://stackoverflow.com/questions/4630023/dynamic-xpath-in-xslt – Vadzim