У меня есть вывод xml, подобный этому:
<data>
<item-types>
<entry id="1" items="5">
<category>Frozen</category>
</entry>
<entry id="2" items="4">
<category>Breakfast</category>
</entry>
</item-types>
<items>
<entry id="28">
<item-number>1115</item-number>
<name>Marion Berries, IQF</name>
<area>
<item id="1">Groceries - Frozen</item>
</area>
</entry>
<entry id="29">
<item-number>1117</item-number>
<name>Peach Cups</name>
<area>
<item id="1">Groceries - Frozen</item>
</area>
</entry>
<entry id="35">
<item-number>1570</item-number>
<name>Sausage Patty</name>
<area>
<item id="2">Groceries - Breakfast</item>
</area>
</entry>
<entry id="32">
<item-number>1575</item-number>
<name>French Toast Stix, WG</name>
<area>
<item id="2">Groceries - Breakfast</item>
</area>
</entry>
</items>
</data>
items-types
- категории пунктов ниже. item-types/entry/@id
относится непосредственно к items/entry/area/item/@id
, и я пытаюсь упорядочить элементы по категориям для вывода.
Пока что я использую следующее XSL-преобразование.
<xsl:template match="item-types/entry">
<h3><xsl:value-of select="concat(@id,'. ',category)" /></h3>
<ul>
<xsl:apply-templates select="/data/items/entry[area/item/@id = @id]" />
</ul>
</xsl:template>
<xsl:template match="items/entry">
<li>
<xsl:value-of select="concat(item-number,'. ',name,' (',area/item/@id,')')" />
</li>
</xsl:template>
Проблема в том, что он не работает. Я считаю, что проблема заключается в предикате в строке 4 преобразования: [area/item/@id = @id]
Когда я удаляю это, он показывает все элементы в каждой категории.
Есть ли способ показать предметы "Замороженные" в категории "Замороженные" и предметы "Завтрак" в категории "Завтрак"?
Спасибо!