У меня есть документ, который выглядит следующим образом:
<template>
<otherstuff>
<group name="foo">
...stuff...
</group>
</template>
<template>
<otherstuff>
<group name="bar">
...different stuff...
</group>
</template>
<template>
<otherstuff>
<group name="foo">
...same stuff as first foo group...
</group>
</template>
Что я хочу сделать, это вызвать конкретный шаблон для каждого экземпляра данного имени группы - так один раз для «foo» и один раз для"бар".Поскольку они идентичны, мне все равно, какой из них используется для вызова этого шаблона.
После ответов на Выбор уникальных узлов на основе комбинации двух значений атрибута , япроизвел этот код:
<xsl:key name="groupsByName" match="//group" use="@name"/>
<xsl:template match="/">
<xsl:for-each select="//group[count(.|key('groupsByName',@name)[1])!=1]">
<xsl:call-template name="template-or-group"/>
</xsl:for-each>
</xsl:template>
В результате, однако, шаблон не вызывается.Я также подозреваю, что, поскольку мой случай проще, чем вопрос, на котором я основывал свой код, возможно, существует более простой способ.Однако мой XSLT недостаточно силен, чтобы понять, что это может быть.