我是XSD的新手,我对何时使用属性以及何时使用元素感到困惑?
为什么我们不能在属性中指定minOccurs和maxOccurs?
另外,为什么我们不能在元素中指定use =“required”?
答案 0 :(得分:27)
元素是一个XML元素 - 一个开始标记,一些内容,一个结束标记 - 它们是XML文档的构建块:
<test>someValue</test>
在这里,“测试”将是一个元素。
属性是标签上的附加信息 - 它是元素上的“附加组件”或额外信息,但不能单独存在:
<test id="5">somevalue</test>
“id”是一个属性。
单个标记上不能有多个同名属性 - &gt; minOccurs / maxOccurs毫无意义。您可以为属性定义必需(或不定义) - 其他任何内容都没有意义。
元素的定义是它们在复杂类型中的出现 - 例如如果你有一个内部带有<xs:sequence>
的复杂类型 - 你定义所有元素必须存在并且必须按照这个特定的顺序:
<xs:complexType name="SomeType">
<xs:sequence>
<xs:element name="Element1" type="xs:string" />
<xs:element name="Element2" type="xs:string" />
</xs:sequence>
</xs:complexType>
在该类型的元素中,子元素“Element1”和“Element2”是必需的,并且必须按此顺序出现 - 不需要“必需”或不需要(与属性一样)。是否需要元素是通过使用minOccurs和maxOccurs来定义的;两者都是默认值= 1,例如元素必须出现,并且只能出现一次。通过调整这些设置,您可以将元素定义为可选(minOccurs = 0),或允许它多次显示(maxOccurs&gt; 1)。
我强烈建议您查看W3Schools Tutorial on XML Schema并了解有关XML架构的更多信息。
马克
答案 1 :(得分:5)
示例:XSD格式
<xs:complexType name="contactInformation">
<xs:all>
<xs:element name="firstName" type="xs:string" minOccurs="0"/>
<xs:element name="workCountryId" type="xs:long" minOccurs="0"/>
</xs:all>
<xs:attribute name="id" type="xs:long"/>
</xs:complexType>
XML格式
<contactInformation id=100>
<firstname>VELU</firstname>
<workCountryId>120</workCountryId>
</contactInformation>
默认情况下,attribute
是可选的。要指定该属性是必需的,请使用use
属性:
e.g。 <xs:attribute name="id" type="xs:long" use="required"/>
有关attributes和elements的更多信息。
complexType
元素是包含其他元素和/或属性的XML元素。
all
元素指定子元素可以按任何顺序出现,并且每个子元素可以出现零次或一次。
maxOccurs
可选。指定元素可以发生的最大次数。值必须为1.
minOccurs
可选。指定元素可以发生的最小次数。值可以是0或1.默认值为1
答案 2 :(得分:3)
<element myAttribute="value">
<subElement />
<subElement anotherAttribute="this is an attribute's value">Element value</subElement>
</element>
XML中不能有多个具有相同名称的属性,因此不能对属性使用minOccurs和maxOccurs。
元素不需要使用=“required”,因为你可以改为使用minOccurs =“1”。
您可以选择何时使用属性以及何时使用元素。以下是一些指南:http://www.ibm.com/developerworks/xml/library/x-eleatt.html
答案 3 :(得分:3)
元素是XML节点 - 它可以包含其他节点或属性。它可以是简单类型或复杂类型。它是一个XML实体。
属性是描述符。它不能包含任何内容,只能是一个简单的类型。
看看this。当然,你可以像谷歌一样“XML元素与属性”