выясните, содержит ли мой файл xml определенное пространство имен (где никаким элементам не дано это имя).
Трудно понять, что именно вы подразумеваете под этим. Если вы хотите выяснить, содержит ли вход XML объявление пространства имен с использованием заданного URI пространства имен, независимо от того, используется ли это объявление для размещения какого-либо из узлов XML в указанном пространстве имен или нет, вы можете использовать тест в виде:
<xsl:if test="//namespace::*[.='your-namespace-URI']">
Пример:
XML
<root xmlns:ns1="http://example.com/a">
<item>Alpha</item>
<item>Bravo</item>
<item>Charlie</item>
</root>
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<result>
<xsl:if test="//namespace::*[.='http://example.com/a']">YES</xsl:if>
</result>
</xsl:template>
</xsl:stylesheet>
Результат
<?xml version="1.0" encoding="UTF-8"?>
<result>YES</result>
Результат здесь положительный, хотя XML не имеет узлов, которые на самом деле находятся в "http://example.com/a"
пространство имен.