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