Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用XSLT查找XML文件是否包含特定命名空间_Xml_Xslt - Fatal编程技术网

使用XSLT查找XML文件是否包含特定命名空间

使用XSLT查找XML文件是否包含特定命名空间,xml,xslt,Xml,Xslt,有没有人知道我是否可以找出我的xml文件是否包含某个名称空间(其中没有元素被赋予该名称) 字里行间的悲哀 这不起作用,因为我得到错误“前缀xmlns”未定义。您可以在声明xmlns:pf=”时检查例如/pf:http://example.com/ns“在XSLT代码中检查命名空间中是否有任何元素http://example.com/ns。或者您可以选中/*[namespace-uri()='http://example.com/ns“]而不在XSLT中声明名称空间。这两个检查都假定名称空间表

有没有人知道我是否可以找出我的xml文件是否包含某个名称空间(其中没有元素被赋予该名称)

字里行间的悲哀


这不起作用,因为我得到错误“前缀xmlns”未定义。

您可以在声明
xmlns:pf=”时检查例如
/pf:
http://example.com/ns“
在XSLT代码中检查命名空间中是否有任何元素
http://example.com/ns
。或者您可以选中
/*[namespace-uri()='http://example.com/ns“]
而不在XSLT中声明名称空间。这两个检查都假定名称空间表示某个名称空间URI,而不是某个前缀

找出我的xml文件是否包含某个名称空间(其中没有为元素指定该名称)

很难理解你的确切意思。如果要使用给定的名称空间URI确定输入XML是否包含名称空间声明,无论该声明是否用于将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>

阿尔法
布拉沃河
查理
XSLT1.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“
namespace.

当你说“没有元素被赋予该名称”时,你的意思是你只寻找没有在任何元素名称中使用的名称空间吗,或者你的意思是你在寻找名称空间,不管它是否在元素名中使用?嗨,很抱歉我错过了你之前的评论。我的意思是它是否用于元素名@michael.hor.257k有一个很好的解决方案:)谢谢!这正是我要找的!