учитывая следующий XML
<?xml version="1.0"?><?xml-stylesheet type="text/xsl"?>
<root>
<hi>
<hello-world><greeter> a </greeter><greeter> b </greeter></hello-world>
<hello-world><greeter> c </greeter><greeter> d </greeter></hello-world>
</hi>
<hi>
<hello-world><greeter> e </greeter><greeter> f </greeter></hello-world>
<hello-world><greeter> g </greeter><greeter> h </greeter></hello-world>
</hi>
</root>
Я перебираю каждый элемент greeter в поддеревьях hi, и мне нужно вывести положение элемента в узле, содержащем hi
Пока у меня есть этот XSL:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="hi">
<xsl:for-each select="hello-world" >
<xsl:for-each select="greeter" >
<xsl:value-of select="concat('+',count(ancestor::hi//greeter))" />
</xsl:for-each >
</xsl:for-each >
</xsl:template>
</xsl:stylesheet>
Однако это выводит:
+4+4+4+4
+4+4+4+4
В то время как мне нужно:
+1+2+3+4
+1+2+3+4
Я пробовал ancestor::hi//greeter, ancestor::hi//preceding::greeter , ancestor::hi//preceding-sibling:: приветствие и т. д. безрезультатно.
Как я могу этого добиться?
Спасибо за помощь