Вы можете использовать функцию position () , чтобы найти позицию текущего элемента <tag>
в его родительском элементе, давая вам 1, 2, 3 ... для каждого тега.
Единственное препятствие заключается в том, что вам нужно оценить position()
в шаблоне tag
(потому что именно здесь <tag>
является узлом контекста), а затем передать значение в шаблон status
в качестве параметра , Кроме того, чтобы position()
подсчитывал, на каком <tag>
вы находитесь в <tags>
, вам нужно изменить match=
шаблона tag
, чтобы он соответствовал только <tag>
, и вызывать этот шаблон в контексте <tags>
родительский узел.
Итак, шаблон верхнего уровня выглядит так:
<xsl:template match="/labels/tags">
<form method="POST" action="scripts/form.php">
<div class="mainC">
<xsl:apply-templates select="tag"/>
</div>
<input type="hidden" name="hidden" id="linkData"/>
</form>
</xsl:template>
... а затем шаблон tag
:
<xsl:template match="tag">
<div class="columnDiv">
<h3><xsl:value-of select="@type"/></h3>
<xsl:apply-templates select="/labels/statuses">
<xsl:with-param name="pos" select="position()" />
</xsl:apply-templates>
</div>
</xsl:template>
... и шаблон status
выглядит следующим образом:
<xsl:template match="status">
<xsl:param name="pos" />
<div class="subDiv">
<label><xsl:value-of select ="@type"/></label>
<select name="{@type}{$pos}">
<xsl:apply-templates select="./answer"/>
</select>
</div>
</xsl:template>