Источник-XML:
<data>
<item>
<values>
<element1>
<language>EN</language>
<text>text</text>
</element1>
<element2>
<language>DE</language>
<text>Text</text>
</element2>
</values>
</item>
<item>
<values>
<element5>
<language>EN</language>
<text>description</text>
</element5>
<element6>
<language>DE</language>
<text>Beschreibung</text>
</element6>
</values>
</item> </data>
Я хочу получить все элементы на языке 'EN'. Сначала у меня есть цикл, в котором я сохранил имена элементов в переменной. На следующем шаге я хочу получить только элементы на языке «EN». В результате этого шага мне нужны только имя элемента и текст, которые имеют язык «EN» для построения таблицы.
Я пробовал это:
<xsl:param name="element" select="'element1'"/>
<xsl:template match="/">
<xsl:if test="data/item/values[local-name()=$element]/language[text()='EN']">
</xsl:if>
</xsl:template>
А на выходе XSLT должно быть что-то вроде:
<table id="123">
<tgroup cols="2">
<colspec colname="c1" colnum="1" colwidth="1.0*"/>
<colspec colname="c2" colnum="2" colwidth="1.0*"/>
<thead>
<row>
<entry>Name</entry>
<entry>Values</entry>
</row>
</thead>
<tbody>
<row>
<entry>
<ph>element1</ph>
</entry>
<entry>text</entry>
</row>
<row>
<entry>
<ph>element5</ph>
</entry>
<entry>description</entry>
</row>
</tbody>
</tgroup>
</table>
Я знаю, что есть другие способы решения этой проблемы. Но для других этапов преобразования важно проверить каждый элемент отдельно.
Заранее спасибо!