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