Это продолжение этого вопроса .
У меня есть следующий входной XML
<file>
<data>
<item>2</item>
<item>4</item>
<item>6</item>
<item>7</item>
</data>
<names>
<person><id>1</id><name>Anton</name></person>
<person><id>2</id><name>Bruce</name></person>
<person><id>3</id><name>Chris</name></person>
<person><id>4</id><name>Dirk</name></person>
<person><id>5</id><name>Erik</name></person>
<person><id>6</id><name>Fred</name></person>
</names>
<morenames>
<person><id>6</id><name>Ferdinand</name></person>
<person><id>7</id><name>George</name></person>
</morenames>
</file>
Этот XSLT покажет Bruce, Dirk, Fred
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"/>
<xsl:key name="pers-by-id" match="names/person" use="id"/>
<xsl:template match="/">
<xsl:apply-templates select="key('pers-by-id', file/data/item)/name"/>
</xsl:template>
<xsl:template match="name">
<xsl:if test="position() > 1">, </xsl:if>
<xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>
Кто-нибудь знает, как я могу изменить этот XSLT, чтобы он показывал Bruce, Dirk, Fred, George
?Обратите внимание, что:
- элементы следует искать в
<names>
first - , только если они не найдены в
<names>
, следует попытаться найти элемент в <morenames>
- Фердинанд никогда не должен показываться, потому что его
<id>
также появляется в <names>