2009-11-13 127 views
11

我是XSD的新手,對於何時使用屬性以及何時使用元素,我感到很困惑。XSD:元素和屬性之間的區別

爲什麼不能我們指定屬性minOccurs和maxOccurs的?

另外,爲什麼我們不能在元素中指定use =「required」?

+0

可能的[XML屬性vs XML元素]的副本(http://stackoverflow.com/questions/33746/xml-attribute-vs-xml-element) – kjhughes 2016-08-05 12:32:55

回答

25

元素是XML元素 - 一個開放的標籤,有些內容,關閉標籤 - 他們是你的XML文檔的基石:

<test>someValue</test> 

在這裏,「測試」將是一個元素。

屬性是在標籤上的其他信息 - 這是一個「附加」或額外的元素上的信息,但絕不能單獨存在:

<test id="5">somevalue</test> 

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

該類型的元素在裏面,子元素「部件1」和「元素2」是必需的,必須按此順序出現 - 不需要「必需」或不需要(如使用屬性)。是否需要元素是由minOccurs和maxOccurs的使用定義的;默認情況下兩者都是= 1,例如,該元素必須發生,並且只能發生一次。通過調整這些設置,可以將元素定義爲可選(minOccurs = 0),或者允許它顯示多次(maxOccurs> 1)。

我強烈建議你檢查出W3Schools Tutorial on XML Schema和學習一些更多的XML模式。

馬克

3
<element myAttribute="value"> 
    <subElement /> 
    <subElement anotherAttribute="this is an attribute's value">Element value</subElement> 
</element> 

您不能在XML中擁有多個具有相同名稱的屬性,因此您無法對屬性使用minOccurs和maxOccurs。

你不需要使用=「需要」的元素,因爲你可以的minOccurs =「1」代替。

何時使用屬性以及何時使用元素是您的選擇。下面是一些指導原則:http://www.ibm.com/developerworks/xml/library/x-eleatt.html

3

元素是一個XML節點 - 它可以包含其他節點,或屬性。它可以是簡單類型或複雜類型。它是一個XML實體。

屬性是描述符。它不能包含任何內容,只能是簡單的類型。

看看this。當然,你可以只是谷歌像「XML元素VS屬性」

+0

與其他答覆不同,他們似乎試圖解釋* how *如何定義元素/屬性,因此您很重要。 – dstibbe 2009-11-13 06:49:24

4

實施例: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屬性:

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

更多關於attributeselements

A complexType元素是包含其他元素和/或屬性的XML元素。

all元素指定子元素可以按任何順序出現,並且每個子元素可以出現零次或一次。

maxOccurs可選。指定元素可以發生的最大次數。該值必須爲1.

minOccurs可選。指定元素可以發生的最小次數。值可以是0或1.默認值是1

相關問題