我有一个 XML,由于以下问题而验证失败: 元素“example:lotNumber”的前缀“example”未绑定。行“4”,列“19”。 元素“example:lotNumber”的前缀“example”未绑定。
我已经在 XSD 中声明了命名空间,因为它是默认命名空间,不需要再次包含在 XML 中。如何让XML通过XSD验证?
不希望在 XML 中包含命名空间
<note xmlns:example="urn:example:mda:">
,因为它是默认命名空间。即使我不在 XML 中包含默认命名空间,我也想确保 XML 通过验证。
以下是我的 XML: 以下是我的 XML 和 XSD:
<note >
<to>Tove</to>
<from>Jani</from>
<example:lotNumber>XML DEFAULT</example:lotNumber>
</note>
以下是包含默认命名空间的 XSD:
Folloiwng is XSD:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:example="urn:example:mda:">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="to"/>
<xs:element type="xs:string" name="from"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
这只是一个示例,但
example
可以包含任何元素,例如:
示例:helloXML 默认新新一个
示例:hello1XML 默认新新一个
因此,我无法在 XSD 中包含
lotNumber
并使其传递值是用户定义的,因此它可以是任何值。如何在不包含默认命名空间的情况下使 XML 通过 XSD 验证。
如果我在 XML 中包含命名空间,那么它会正常工作,但用户可以跳过,那么它也应该通过:
<note xmlns:example="urn:example:mda:">
<to>Tove</to>
<from>Jani</from>
<example:lotNumber>XML DEFAULT NEW NEW ONE</example:lotNumber>
</note>
这与架构无关。在被认为适合使用模式进行验证之前,您的 XML 必须格式良好,如果它包含未声明的命名空间前缀,那么它的格式不正确。