在架构(XSD)中定义不同类型的子级



从模式定义开始,我有一个标签,它在运行时创建它的子级,所以我们可能有两个序列的子级名称,即

序列1:

<task>
<a/>
<b/>
<c/>
<d/>
<e/>
</task>

序列2:

<task>
<g/>
<h/>
<i/>
<d/>
</task>

如何在XSD中定义它。ANY可以使用,但它不能确保孩子的数量,尽管我保持它的maxnumber未绑定。

我们可以跳过这个标签中的孩子吗?

在XSD中,它将

<xs:element name="task">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="a" type="xs:string"/>
      <xs:element name="b" type="xs:string"/>
      <xs:element name="c" type="xs:string"/>
      <xs:element name="d" type="xs:string"/>
      <xs:element name="e" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

因此,当你要创建它时,你会知道孩子的数量,以及每个孩子的名字。您可以在用于生成XSD的JAXB类中更改它,这就是

它工作:

  <xs:complexType name="task">
    <xs:sequence>
        <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

最新更新