Используя XSLT 2.0 и Apache FOP, я хочу иметь возможность создавать новую переменную, иметь уникальные и отсортированные значения внутри нее по category
, но сохранить узлы.Таким образом, новая переменная должна иметь следующие узлы:
<category>1. First Aid</category>
<category>2. Access control</category>
<category>3. Fire safety</category>
<category>4. Recognition</category>
Входной XML имеет следующий вид:
<equipment>
<E0132>
<category>1. First Aid</category>
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</description>
</E0132>
<E0133>
<category>1. First Aid</category>
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</description>
</E0133>
<E4122>
<category>3. Fire safety</category>
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</description>
</E4122>
<E4182>
<category>3. Fire safety</category>
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</description>
</E4182>
<E4622>
<category>2. Access control</category>
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</description>
</E4622>
<E5225>
<category>4. Recognition</category>
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</description>
</E5225>
</equipment>
Что касается XSL, то это то, что я до сих пор имел:
<xsl:variable name="equipment">
<xsl:for-each-group select="//equipment/node()" group-by="category">
<xsl:sort select="." order="ascending" />
<xsl:value-of select="."/>
</xsl:for-each-group>
</xsl:variable>
Но все работает не так, как ожидалось.Он не содержит узлов category
, как мне хотелось бы, и я не знаю, как интегрировать здесь distinct-values()
функцию XSL для достижения уникальности.