У меня есть документ, похожий на
<root>
<element>
<subelement1 />
<subelement2 />
</element>
<element>
<subelement2 />
<subelement1 />
</element>
</root>
В моем листе XSLT в контексте /element[2]/[someNode]
я хочу получить число, представляющее расстояние /element[1]/[someNode]
(т. Е. Количество предшествующих братьев и сестер /element1/[someNode]
). Например, в контексте /element[2]/subelement1
я бы хотел получить какой-нибудь способ получить число 2, расстояние от /element[1]
до /element[1]/subelement2
. Мне только когда-либо нужно расстояние данного имени узла от первого экземпляра <element>
.
Интуитивно я думал, что мог бы построить это как
<xsl:variable name="nodename" select="name()" />
<xsl:value-of select="/element[1]/$nodename/preceding-sibling::*" />
но, к сожалению, этот лист не компилируется. Возможно ли то, что я пытаюсь достичь в XSLT?