我有一个转换后的 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/