XSD 验证说我的 <any> 未定义
XSD validation says my <any> is not defined
我正在尝试使用 <xs:any />
节点构建模式。当我验证它说插入的子节点未定义。我以为 any
允许我有未定义的子节点。
我的架构:
<xs:schema xmlns="Policy" targetNamespace="Policy" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Request">
<xs:complexType>
<xs:sequence>
<xs:any />
</xs:sequence>
<xs:attribute name="Routing" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:schema>
我的XML:
<gp:Request Routing="foo" xmlns:gp="Policy">
<bar/>
</gp:Request>
它标记了 bar
节点。我做错了什么?
您正在见证 xs:any/@processContents="strict"
的预期行为,这是默认值。当 @processContents
设置为 strict
时, 元素定义必须存在,并且 XML 中的元素必须对该声明有效 .
改为
<xs:any processContents="lax" />
如果您希望进行验证仅当元素定义存在时,或者
<xs:any processContents="skip" />
如果您希望不进行验证,无论元素是否在 XSD 中定义。
另见
- processContents strict vs lax vs skip for xsd:any
我正在尝试使用 <xs:any />
节点构建模式。当我验证它说插入的子节点未定义。我以为 any
允许我有未定义的子节点。
我的架构:
<xs:schema xmlns="Policy" targetNamespace="Policy" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Request">
<xs:complexType>
<xs:sequence>
<xs:any />
</xs:sequence>
<xs:attribute name="Routing" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:schema>
我的XML:
<gp:Request Routing="foo" xmlns:gp="Policy">
<bar/>
</gp:Request>
它标记了 bar
节点。我做错了什么?
您正在见证 xs:any/@processContents="strict"
的预期行为,这是默认值。当 @processContents
设置为 strict
时, 元素定义必须存在,并且 XML 中的元素必须对该声明有效 .
改为
<xs:any processContents="lax" />
如果您希望进行验证仅当元素定义存在时,或者
<xs:any processContents="skip" />
如果您希望不进行验证,无论元素是否在 XSD 中定义。
另见
- processContents strict vs lax vs skip for xsd:any