Здравствуйте. Я пытаюсь отсортировать xml по номеру вхождения элемента ' answer ' с атрибутом ' id ' и получить простую сводку.
<person id="1">
<answer id="A"/>
<answer id="B"/>
</person>
<person id="2">
<answer id="A"/>
<answer id="C"/>
</person>
<person id="3">
<answer id="C"/>
</person>
Я хочу просто краткий текст на выходе:
A = 2 раза (с)
C = 2 раз (а)
B = 1 раз (а)
В XSLT 2.0 я попробовал:
<xsl:for-each select="distinct-values(/person/answer)">
<xsl:sort select="count(/person/answer)" data-type="number"/>
<xsl:value-of select="./@id"/> =
<xsl:value-of select="count(/person/answer[@id=./@id])"/> time(s)
</xsl:for-each>
но это не работает:
в XMLSpy 2008:
«Ошибка в выражении XPath 2.0 Не элемент узла»
на саксонском 9:
XPTY0020: ведущий '/' не может выбрать корневой узел дерева, содержащий элемент контекста: элемент контекста является атомарным значением
Не удалось скомпилировать таблицу стилей. Обнаружена 1 ошибка.