Примечание: решение должно быть в XSLt 1.0
Я полный новичок в XSLT, поэтому извиняюсь, если решения других вопросов, касающихся циклов, сработают для моей проблемы, но мне пока не повезло.
У меня есть XML-файл с несколькими узлами, например:
<Roles>
<field name="linecode" instance="1" value="EY"/>
<field name="number" instance="1" value="265"/>
<field name="linecode" instance="2" value="PK"/>
<field name="number" instance="2" value="123"/>
<field name="abc" instance="1" value="123"/>
<field name="xyz" instance="1" value="123"/>
</Role>
Мне нужно перебрать эти узлы и вывести <field name="linecode">
вместе с соответствующим ему экземпляром № <field name="number">
. Однако, если я использую цикл for-each, он будет перебирать штраф <field name="linecode">s
, но вывести тот же <field name="number">
не работает.
Можно ли как-нибудь синхронизировать их, чтобы, например, вывод был
EY - 265
PK - 123
Я также пытался использовать following-sibling
, но он не работает для меня. Любая помощь высоко ценится. .
Вот мой пример xslt.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Roles">
<xsl:for-each select="field[@name='linecode']">
<xsl:value-of select="@value"/>
<xsl:text> - </xsl:text>
<xsl:value-of select="field[@name='number' and instance='@instance']"/>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
Если бы кто-нибудь мог придумать альтернативу циклам, которая бы тоже работала, я был бы признателен.