2013-04-29 50 views
0

我是xml的新手,我想了解xsd:all元素。 作爲MSDN說:使用xsd定義元素的正確方法:全部

的xsd:所有允許該組中的元素出現(或不出現)在含有元素的任何順序。

所以,按照我的理解,如果我們讓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編輯器。

我是否正確理解元素可能會或可能不會出現在包含元素中?

謝謝你的幫助。

回答

1

如果你想要一些元素是可選的,給他們minOccurs="0"。要指定名稱,姓氏和城市都可以按任意順序進行,並且城市可選:

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