我正在尝试使用他们发送的模式来验证客户端 XML。示意图如下所示:
<?xml version="1.0" encoding="UTF-8">
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.client.com"
targetNamespace="http://www.client.com"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="0.1">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element ref="Parent" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Parent">
<xs:complexType>
<xs:sequence>
<xs:element name="Child1" type="xs:string"/>
<xs:element name="Child2" type="xs:string" nillable="true"/>
<xs:element name="Child3" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我想验证的 XML 示例是
<Parent>
<Child1>Entry</Child1>
<Child2 xsi:nil="true"/>
<Child3>Entry</Child3>
</Parent>
我的问题是:上面的 XML 实际上格式正确吗?我对 XML 的(较差的)理解使我认为“xsi”标签需要命名空间,实际上,当我们验证这是我们得到的错误时(标签“xsi”未绑定到任何命名空间)。将 XML 更改为如下所示:
<Parent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Child1>Entry</Child1>
<Child2 xsi:nil="true"/>
<Child3>Entry</Child3>
</Parent>
解决了我们的问题,对我来说更有意义。但是客户说原始 XML 在 XMLSpy 和 VisualStudio 中验证,所以也许我遗漏了什么?
任何帮助将不胜感激。非常感谢!