0

我是 xml 新手,我正在尝试理解 xsd:all 元素。正如 MSDN 所说:

xsd:all 允许组中的元素在包含元素中以任何顺序出现(或不出现)。

所以,据我所知,如果我们做一个 xsd 模式的简单示例:

  <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" >  
    <xsd:element name = "MyElem">
     <xsd:complexType>
            <xsd:all>
            <xsd:element name = "name" type = "xsd:string" />
            <xsd:element name = "lastname" type = "xsd:string" />
            <xsd:element name = "city" type = "xsd:string" />
            </xsd:all>
     </xsd:complexType>
    </xsd:element>
  </xsd:schema>

然后我们可以有一个这样的xml文件:

<MyElem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Example.xsd" >
    <name>"some_name"</name>
    <lastname>"some_last_name"</lastname>
    <city>"somecity"</city>          
</MyElem>

这很清楚。但是,当我尝试不向MyElem提供任何元素时,正如定义中提到的那样(允许元素出现或不出现),我在 xml 文件中得到错误,它说:

在这个位置预计会有以下元素。

我正在使用 Altova xmlSpy xml 编辑器。

我是否正确理解元素可能会或可能不会出现在包含元素中?

谢谢你的帮助。

4

1 回答 1

1

If you want some elements to be optional, give them minOccurs="0". To specify that name, lastname, and city may all occur in any order, with city being optional:

<xsd:all>
  <xsd:element name = "name" type = "xsd:string" />
  <xsd:element name = "lastname" type = "xsd:string" />
  <xsd:element name = "city" type = "xsd:string" minOccurs="0"/>
</xsd:all>
于 2013-04-30T01:12:57.457 回答