0

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

<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>

到目前为止,但没有工作。

4

1 回答 1

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 元素,那么您已经发现了一些关于您想要什么和不想要什么的信息。

于 2013-08-28T01:28:09.247 回答