XSD:元素和属性之间的差异

siv*_*udh 15 xsd

我是XSD的新手,我很困惑何时使用属性,何时使用元素?

为什么我们不能在属性中指定minOccurs和maxOccurs?

另外,为什么我们不能在元素中指定use ="required"?

mar*_*c_s 29

元素是XML元素 - 开始标记,一些内容,结束标记 - 它们是XML文档的构建块:

<test>someValue</test>
Run Code Online (Sandbox Code Playgroud)

在这里,"测试"将是一个元素.

属性是标签上的附加信息 - 它是元素上的"附加组件"或额外信息,但不能单独存在:

<test id="5">somevalue</test>
Run Code Online (Sandbox Code Playgroud)

"id"是一个属性.

您不能在单个标记上具有相同名称的多个属性 - > 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>
Run Code Online (Sandbox Code Playgroud)

在该类型的元素内部,子元素"Element1"和"Element2"是必需的,并且必须按此顺序出现 - 不需要"必需"或不需要(与属性一样).是否需要元素是通过使用minOccurs和maxOccurs来定义的; 默认情况下两者都是= 1,例如元素必须出现,并且只能出现一次.通过调整这些设置,您可以将元素定义为可选(minOccurs = 0),或允许它多次显示(maxOccurs> 1).

我强烈建议您查看有关XML SchemaW3Schools教程,并了解有关XML架构的更多信息.


Kan*_*mar 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>
Run Code Online (Sandbox Code Playgroud)

XML格式

<contactInformation id=100>
    <firstname>VELU</firstname>
    <workCountryId>120</workCountryId>
</contactInformation>
Run Code Online (Sandbox Code Playgroud)


attribute默认情况下是可选的。要指定该属性是必需的,请使用该use属性:

例如 <xs:attribute name="id" type="xs:long" use="required"/>

有关属性元素的更多信息。

complexType元件是包含其它元素和/或属性的XML元素。

all该子元素可以以任意顺序出现,并且每个子元素元素指定可出现零或一次。

maxOccurs可选的。指定元素可以出现的最大次数。该值必须为1。

minOccurs可选的。指定元素可以出现的最小次数。该值可以是0或1。默认值是1