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