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

相关内容

最新更新