7

我有一个类似于此示例的 xml 文档(和复杂元素):

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

但是在我的 xml 中,我是否先添加名字或姓氏并不重要。所以我想删除“xs:sequence”部分,但我不确定应该用什么替换它。

如果不可能——那为什么不可能呢?

更新: 如果我用 < cx:all> 更改它,我会收到此错误:“所有组的所有 {parties} 的 {max 发生}必须为 0 或 1”。

4

3 回答 3

8

使用<xs:all>代替<xs:sequence>

<xs:element name="employee">
 <xs:complexType>
  <xs:all>
   <xs:element name="firstname" type="xs:string"/>
   <xs:element name="lastname" type="xs:string"/>
  </xs:all>
 </xs:complexType>
</xs:element>

请参阅有关架构指标的W3Schools 页面:

所有指标

<all>指示符指定子元素可以按任何顺序出现,并且每个子元素只能出现一次:

于 2009-11-12T14:13:33.440 回答
2
<xs:element name="employee">
    <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="firstname" type="xs:string" />
            <xs:element name="lastname" type="xs:string" />
        </xs:choice>
   </xs:complexType>
</xs:element>

这将允许您拥有任何顺序和数量的元素。

于 2012-05-29T15:55:37.293 回答
0

您需要全部指示符( <xs:all>)。

<xs:element name="employee">
  <xs:complexType>
    <xs:all>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:all>
 </xs:complexType>
</xs:element>

W3Schools上的XML 模式教程非常有帮助。

于 2009-11-12T14:15:53.027 回答