Я создаю рекурсивную функцию XSLT, которая запускает все дочерние файлы Xml.
<xsl:call-template name="testing">
<xsl:with-param name="root" select="ItemSet"></xsl:with-param>
</xsl:call-template>
Во время работы XSLT мне нужно получить значение корневого узла переменной, где я нахожусь
потому что при вызове корневой переменной я получаю узел со всеми дочерними узлами, но все, что мне нужно, это одно значение узла, и, поскольку оно является рекурсивным, я не могу воздействовать на теги дочерних узлов, потому что он всегда изменяется. Итак, как я могу получить переменную одно конкретное значение в любое время?
Ни $root
, ни " . "
не работает.
XSL код:
<xsl:variable name="trial" select="count(./*)"></xsl:variable>
<xsl:choose>
<xsl:when test="count(./*) = 0">
:<xsl:value-of select="$root" /> <br/>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="./*">
<xsl:call-template name="testing">
<xsl:with-param name="root" select=".">
</xsl:with-param>
</xsl:call-template>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
XML-код:
<ItemSet>
<Item>
1
<iteml1>
1.1
</iteml1>
<iteml1>
1.2
</iteml1>
</Item>
<Item>
2
<iteml1>
2.1
<iteml2>
2.1.1
</iteml2>
</iteml1>
</Item>
</ItemSet>
что делать, если вместо строки кода * поставить строку кода:
1
1: 1.1 :
1: 1.2
2
2: 2.1
2: 2.1: 2.1.2