使用XSLT查找XML文件是否包含特定命名空间
有没有人知道我是否可以找出我的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中声明名称空间。这两个检查都假定名称空间表
这不起作用,因为我得到错误“前缀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有一个很好的解决方案:)谢谢!这正是我要找的!