У меня есть группа тегов с атрибутами, и я хочу добавить определенные значения в новую группу только после сопоставления атрибутов.
Входной файл выглядит так:
<content>
<manifest>
<item id="id1272682" href="ch01.html"/>
<item id="id1272759" href="ch02.html"/>
</manifest>
<spine>
<itemref idref="id1272759"/>
<itemref idref="id1273380"/>
</spine>
</content>
Я хочу, чтобы мой XSLT искал в позвоночнике любые значения itemref / @ idref (их может быть больше одного), которые соответствуют элементу / @ id в манифесте, и добавил это значение в позвоночник, чтобы выходные данные выглядели как это:
<spine>
<itemref idref="id1272759"/>
</spine>
Вот что я имею до сих пор. Похоже, что оператор if: работает, так как я получаю правильное количество тегов itemref, но не получаю значение idref.
<xsl:if test="itemref[attribute::idref = ../../manifest/item/@id]">
<xsl:element name="itemref">
<xsl:attribute name="idref">
<xsl:value-of select="@idref"/>
</xsl:attribute>
</xsl:element>
</xsl:if>
И мой вывод:
<spine>
<itemref idref=""/>
</spine>