是否可以允许任何有效的 XML 作为 XSD 中元素的 child?

Is it possible to allow any valid XML as a child of an element in an XSD?

我知道 XSD 的全部意义在于定义 XML 的结构,但是是否可以让 child 成为 任何有效的XML?例如:

如果我有这个XSD

<xsd:complexType name="soExample">
  <xsd:all>
    <xsd:element name="field1" type="xsd:integer" />
  </xsd:all>
</xsd:complexType>

一个有效的XML是

<soExample>
  <field1>25</field1>
</soExample>

现在我想要一个特殊的字段field2,它允许我把任何可以解析的XML放在里面,XSD看起来像:

<xsd:complexType name="soExample">
  <xsd:all>
    <xsd:element name="field1" type="xsd:integer" />
    <xsd:element name="field2" type="so:special" />
  </xsd:all>
</xsd:complexType>

有效的 XML 将是:

<soExample>
  <field1>25</field1>
  <field2>
    <anything>3</anything>
  </field2>
</soExample>

<soExample>
  <field1>25</field1>
  <field2>
    <cars>
      <favorite>"miata"</favorite>
    </cars>
  </field2>
</soExample>

我觉得这不可能,因为没有解决类型的好方法...但值得一问。

,xsd:any的目的是让anyXML 在 XML 文档中的给定点:

<xsd:element name="field2"/>
  <xsd:complexType>
    <xsd:sequence>
      <xsd:any processContents="skip"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>

有关 xsd:any/@processContents 支持的各种值的说明,请参阅 processContents strict vs lax vs skip for xsd:any

请注意,您也可以不指定 field2 的内容模型:

<xsd:element name="field2"/>

另见 XML Schema that allows anything (xsd:any)