没有指标的XSD complexType定义

时间:2013-08-27 22:57:25

标签: xsd complextype

如果我想定义复杂类型,我可以去

<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>

或者,我可以替换

<xs:sequence> ...     </xs:sequence>
上面带

标签

<xs:all> ...     </xs:all>

<xs:choice> ...     </xs:choice>

并验证。

然而,这些都对元素的顺序/出现施加了限制。

有没有办法在没有这些指标的情况下定义复杂元素?

被“启发”了

<xs:complexType name="personinfo2">
<xs:complexContent>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:complexContent>
</xs:complexType>
到目前为止,但没有奏效。

1 个答案:

答案 0 :(得分:0)

你真的应该阅读关于XSD的教程。

不,如果没有指定(显式或隐式)xs:sequence,xs:choice或xs:all之一,则无法定义内容模型。

如果您不想对子元素的序列或出现次数进行任何限制,那么您可能需要的是:

<xs:complexType name="sample">
  <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="e1" type="xs:string"/>
    <xs:element name="e2" type="xs:string"/>
  </xs:choice>
</xs:complexType>

这允许以任何顺序任意数量的e1和e2子女。如果您发现不希望任何类型为personinfo的有效元素包含37个lastname元素和36个firstname元素,那么您会发现一些关于您做什么和不想做什么的事情。