У меня есть таблица стилей XSL, в которой с помощью клавиши выбираются XML узлы. Он выбирает термин / информация / имя элементов des c с типом "concept", которые имеют идентификатор, соответствующий атрибуту concept / @ ID элемента des c, который не имеет тип атрибута "concept" , То, что я сейчас пытаюсь сделать, - это получить счетчик всех терминов с идентификатором родственного элемента, который соответствует элементу des c с указанным типом c, который не является концепцией. Например, я хотел бы иметь возможность подсчитать, сколько терминов связано с элементом «a» типа des c, в данном случае это будет 2 термина.
XML
<rdf>
<desc type = "a">
<concept ID = "#1"/>
</desc>
<desc type = "b">
<concept ID = "#2"/>
</desc>
<desc type = "concept">
<ID>1</ID>
<term>
<info>
<name>apple</name>
<ID>1</ID>
</info>
</term>
<term>
<info>
<name>pear</name>
<ID>2</ID>
</info>
</term>
</desc>
<desc type = "concept">
<ID>2</ID>
<term>
<info>
<name>chocolate</name>
<ID>1</ID>
</info>
</term>
</desc>
</rdf>
XSL
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:key name = "terms" match = "desc[@type = 'concept']" use = "ID"/>
<xsl:template match="/">
<xsl:apply-templates select = "rdf/desc[@type != 'concept' and @type != 'a']"/>
</xsl:template>
<xsl:template match = "desc">
<xsl:variable name = "test" select = "key('terms', substring(concept/@ID, 2))"/>
<xsl:for-each select="$test/term/info">
<xsl:value-of select="name/text()"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Эта таблица стилей в настоящее время выводит название терминов, которые соответствуют элементу des c с типом "b", который является "шоколадом". Любая помощь в том, как я могу получить количество терминов, а также название было бы полезно.