鉴于此XSD:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="ABC" xmlns:abc="ABC">
<xs:complexType name="thing">
<xs:sequence>
<xs:element name="NAME" type="xs:string" />
<xs:element name="DESCRIPTION" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:element name="things">
<xs:complexType>
<xs:sequence>
<xs:element name="thing" type="abc:accident"
maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我在解决以下问题时遇到了问题:
<?xml version="1.0" encoding="UTF-8"?>
<things>
<thing>
<NAME>Zaphod Beeblebrox</NAME>
<DESCRIPTION>Just this guy</DESCRIPTION>
</thing>
</things>
我认为这完全取决于命名空间......我只在XSD验证中收到了关于“命名空间”的错误,因此我只在XSD中添加了一个命名空间。但我不控制XML插入某种命名空间引用。
是否有一些简单的方法可以将XML中的<things>
验证为<abc:things>
- 或者是一种完全排除XSD中命名空间的方法?
答案 0 :(得分:1)
如果您的XML已设置,
<?xml version="1.0" encoding="UTF-8"?>
<things xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="try.xsd">
<thing>
<NAME>Zaphod Beeblebrox</NAME>
<DESCRIPTION>Just this guy</DESCRIPTION>
</thing>
</things>
并且它不使用命名空间,然后只是编写XSD而不使用命名空间:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="thing">
<xs:sequence>
<xs:element name="NAME" type="xs:string" />
<xs:element name="DESCRIPTION" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:element name="things">
<xs:complexType>
<xs:sequence>
<xs:element name="thing" type="thing"
maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
上述XSD将成功验证上述XML。