我是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编辑器。
我是否正确理解元素可能会或可能不会出现在包含元素中?
感谢您的帮助。
答案 0 :(得分: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>