XSD 複合元素概述

大雄45發表於2022-11-25
導讀 複合元素包含了其他的元素及/或屬性。

什麼是複合元素?

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

有四種型別的複合元素:

  1. 空元素
  2. 包含其他元素的元素
  3. 僅包含文字的元素
  4. 包含元素和文字的元素

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

複合元素的例子

複合元素,"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>

如何定義複合元素?

請看這個複合 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>

原文來自:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2920304/,如需轉載,請註明出處,否則將追究法律責任。

相關文章