У меня есть XML как это:
<assessment>
<variables>
<variable>
<attributes>
<variable_name value="FRED"/>
</attributes>
</variable>
</variables>
<variables>
<variable>
<attributes>
<variable_name value="MORTIMER"/>
</attributes>
</variable>
</variables>
<variables>
<variable>
<attributes>
<variable_name value="FRED"/>
</attributes>
</variable>
</variables>
</assessment>
Я знаю, что с этим XSLT:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="html"/>
<xsl:template match="assessment">
<xsl:for-each select=".//variables/variable/attributes/variable_name">
<xsl:value-of select="@value"/>
<br/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Я могу вывести следующее:
FRED
MORTIMER
FRED
Но что я действительно хочу вывести, так это:
FRED: 2
MORTIMER: 1
То есть я хочу перечислить отдельные элементы и сколько раз каждый из них встречается. Обратите внимание, что я хочу, чтобы элементы отображались в порядке их первого появления (что может исключить некоторые решения, использующие сортировку).
Как мне это сделать?