Здравствуйте.
Вопрос вроде не сложный, но что-то меня заклинило.
Есть XML:
<root>
<authors>
<author name="Dave Thomas"/>
<author name="Bill Smith"/>
<author name="Jack Herrington"/>
</authors>
<sellers>
<seller name="John Gain"/>
<seller name="Garry Garrison"/>
<seller name="Bill Smith"/>
</sellers>
</root>
В нем список авторов (authors/author) и продавцов (sellers/seller). Иногда автор является и продавцом (напр. Bill Smith). Авторы и продавцы находятся в разных секциях – authors и sellers.
Мне надо из обоих секций получить общий список имен, в котором имена не должны повторятся. Т.е. Bill Smith должен быть в списке в одном экземпляре.
Понимаю, что делать это надо с помощью preceding-sibling, но как её отфильтровать — не поиму.
<xsl:for-each select="root/*/*[not(@id=preceding-sibling::*/*/@id)]">
<xsl:value-of select="@id"/> <br/>
</xsl:for-each>