如果我想定义复杂类型,我可以去
<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>
到目前为止,但没有奏效。
答案 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元素,那么您会发现一些关于您做什么和不想做什么的事情。