XSLT: как получить список всех используемых пространств имен
Я пишу таблицу стилей XSLT 1.0 для преобразования XML-документов с несколькими пространствами имен в HTML. В каком-то месте в результате HTML я хочу перечислить все пространства имен, которые произошли в документе.
Это возможно?
Я думал о чем-то вроде
<xsl:for-each select="//*|//@*">
<xsl:value-of select="namespace-uri(.)" />
</xsl:for-each>
но, конечно, я получил бы миллиарды дубликатов. Так что мне придется как-то отфильтровать то, что я уже напечатал.
Рекурсивный вызов шаблонов будет работать, но я не могу понять, как добраться до всех элементов.
Доступ к//@xmlns:*
напрямую не работает, потому что никто не может получить к нему доступ через XPath (нельзя привязать любой префикс кxmlns:
Пространство имен).