XSLT: как получить список всех используемых пространств имен

Я пишу таблицу стилей XSLT 1.0 для преобразования XML-документов с несколькими пространствами имен в HTML. В каком-то месте в результате HTML я хочу перечислить все пространства имен, которые произошли в документе.

Это возможно?

Я думал о чем-то вроде

<xsl:for-each select="//*|//@*">
  <xsl:value-of select="namespace-uri(.)" />
</xsl:for-each>

но, конечно, я получил бы миллиарды дубликатов. Так что мне придется как-то отфильтровать то, что я уже напечатал.

Рекурсивный вызов шаблонов будет работать, но я не могу понять, как добраться до всех элементов.

Доступ к//@xmlns:* напрямую не работает, потому что никто не может получить к нему доступ через XPath (нельзя привязать любой префикс кxmlns: Пространство имен).

Ответы на вопрос(2)

Ваш ответ на вопрос