Это немного сложно объяснить, поэтому я говорю на XML ..
XML-файл, который я хочу преобразовать
<Items>
<Item ID="1" Name="Student">
<Cell Name=""/>
<Cell Number=""/>
</Item>
<Item ID="1" Name="Professor">
<Cell Name=""/>
<Cell Number=""/>
</Item>
values.xml со всеми значениями атрибутов
<students>
<count>2</count>
<student number="1">
<name>Peter</name>
<number>1234</number>
</student>
<student number="2">
<name>Stefan</name>
<number>4567</number>
</student>
</students>
желаемый вывод
<Items>
<Item ID="1" Name="Student">
<Cell Name="Max"/>
<Cell Number="1234"/>
</Student>
<Item ID="2" Name=Student>
<Cell Name="Stefan"/>
<Cell Number="4567"/>
</Professor>
</Items>
Моя идея
<xsl:variable name="total" select="document('values.xml')"/>
<!-- Identity Transformation --> ||WORKS FINE||
<!-- copy students n-times --> ||WORKS FINE||
<!-- set attribute: name --> ||DOESN'T WORK||
<xsl:template match="v:Items/Item/Cell[1]">
<xsl:param name="c" select="1"/>
<xsl:param name="values" select="$total/students/student[@number=$c]"/>
<xsl:copy>
<xsl:attribute name="Name">
<xsl:copy-of select="$values/name"/>
</xsl:attribute>
<xsl:apply-templates/>
</xsl:copy>
<xsl:if test="$c < $total/students/count">
<xsl:apply-templates select=".">
<xsl:with-param name="c" select="$c+1"/>
</xsl:apply-templates>
</xsl:if>
</xsl:template>
Я получаю оба значения атрибута в каждом элементе.Но мне нужно первое значение атрибута в первом (Cell-) элементе, второе значение атрибута во втором (Cell-) элементе и т. Д.