带有命名空间的 XML/XSD

标签 xml validation namespaces xsd

我有一个转换后的 XML,我一直在尝试使用它创建的 XSD 进行验证。

转换后的 XML 是:

<?xml version="1.0" encoding="UTF-8"?>
<ifp:Widget xmlns:ifp="Widget.xsd">
    <ifp:Foo>foo</ifp:Foo>
    <ifp:Bar>bar</ifp:Bar>
 </ifp:Widget>

它是从(基于原始 xml)创建的 XSD 是:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
 <xs:element name="Widget">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Foo" type='xs:string'/>
            <xs:element name="Bar" type='xs:string'/>
        </xs:sequence>
    </xs:complexType>
 </xs:element>
</xs:schema>

我收到一个错误:
cvc-elt.1:找不到元素“ifp:Widget”的声明。

最佳答案

您的架构没有提到任何名为 Widget.xsd 的命名空间. XML 应该没有命名空间,即只有 <Widget>
无论生成什么 XML 需要查看,它都已损坏。

我猜 Widget.xsd实际上是您的架构的文件名,但它不属于您的 XML 中的命名空间声明。

关于带有命名空间的 XML/XSD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9104033/

相关文章:

c# - LINQ to XML 会忽略 DTD 中的包含吗?

xml - 如何根据xslt中以 "Heading"开头的属性值选择xml元素?

java - 如何在 java 中修复未闭合标记的 XML

具有相同名称的 Python 模块(即,在包中重用标准模块名称)

ios - 混合 objective-c 项目中的 Swift "namespaces"不工作

java - 如何分析XML文件?

php - Symfony 表单验证错误显示两次

jquery - 使用 Selenium 时验证 DOM 操作

javascript - 当其他模型发生变化时,如何强制在模型上运行验证?

namespaces - 如何通过使用来模拟 "load-file"行为?