XSD 復合元素

復合元素包含了其他的元素及/或屬性。


XSD 復合元素

<h2>什麼是復合元素?

復合元素指包含其他元素及/或屬性的 XML 元素。

有四種類型的復合元素:

  • 空元素

  • 包含其他元素的元素

  • 僅包含文本的元素

  • 包含元素和文本的元素

注意: 上述元素均可包含屬性!


XSD 復合元素

復合元素的例子

復合元素,”product”,是空的:

<product pid=”1345″/>

復合元素,”employee”,僅包含其他元素:

<employee>

<firstname>John</firstname>

<lastname>Smith</lastname>

</employee>

復合 XML 元素,”food”,僅包含文本:

<food type=”dessert”>Ice cream</food>

復合XML元素,”description”包含元素和文本:

<description>

It happened on <date>03.03.99</date> ….

</description>


XSD 復合元素

如何定義復合元素?

請看這個復合 XML 元素,”employee”,僅包含其他元素:

<employee>

<firstname>John</firstname>

<lastname>Smith</lastname>

</employee>

在 XML Schema 中,我們有兩種方式來定義復合元素:

1. 透過命名此元素,可直接對”employee”元素進行聲明,就像這樣:

<xs:element name=”employee”>

<xs:complexType>

<xs:sequence>

<xs:element name=”firstname” type=”xs:string”/>

<xs:element name=”lastname” type=”xs:string”/>

</xs:sequence>

</xs:complexType>

</xs:element>

假如您使用上面所描述的方法,那麼僅有 “employee” 可使用所規定的復合類型。請注意其子元素,”firstname” 以及 “lastname”,被包圍在指示器 <sequence>中。這意味著子元素必須以它們被聲明的次序出現。您會在 XSD 指示器 這一節學習更多有關指示器的知識。

2. “employee” 元素可以使用 type 屬性,這個屬性的作用是引用要使用的復合類型的名稱:

<xs:element name=”employee” type=”personinfo”/>

<xs:complexType name=”personinfo”>

<xs:sequence>

<xs:element name=”firstname” type=”xs:string”/>

<xs:element name=”lastname” type=”xs:string”/>

</xs:sequence>

</xs:complexType>

如果您使用了上面所描述的方法,那麼若幹元素均可以使用相同的復合類型,比如這樣:

<xs:element name=”employee” type=”personinfo”/>

<xs:element name=”student” type=”personinfo”/>

<xs:element name=”member” type=”personinfo”/>

<xs:complexType name=”personinfo”>

<xs:sequence>

<xs:element name=”firstname” type=”xs:string”/>

<xs:element name=”lastname” type=”xs:string”/>

</xs:sequence>

</xs:complexType>

您也可以在已有的復合元素之上以某個復合元素為基礎,然後添加一些元素,就像這樣:

<xs:element name=”employee” type=”fullpersoninfo”/>

<xs:complexType name=”personinfo”>

<xs:sequence>

<xs:element name=”firstname” type=”xs:string”/>

<xs:element name=”lastname” type=”xs:string”/>

</xs:sequence>

</xs:complexType>

<xs:complexType name=”fullpersoninfo”>

<xs:complexContent>

<xs:extension base=”personinfo”>

<xs:sequence>

<xs:element name=”address” type=”xs:string”/>

<xs:element name=”city” type=”xs:string”/>

<xs:element name=”country” type=”xs:string”/>

</xs:sequence>

</xs:extension>

</xs:complexContent>

</xs:complexType>

如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!

小夥伴們,感覺我的分享很不錯的別忘記「讚賞」我一下喲!

使用 Facebook 預約

About 小秘書 22242 Articles
不用擔心找不到好對象,戀愛小秘書 - 綺綺 會根據您的喜好和條件,幫您安排與理想對象一對一排約、聯誼、交友友活動,現在就加入綺綺的LINE_ID:erostp