Schema技術(shù)(三)-復(fù)合元素的四種類(lèi)型XSD定義
XSD復(fù)合元素:
1、什么是復(fù)合元素?
復(fù)合元素指包含其他元素及/或?qū)傩缘?XML 元素。
注意:上面說(shuō)的是其他元素或?qū)傩裕瑩Q句話來(lái)說(shuō)就是,包含子元素的和含有屬性的都是符合元素。
總結(jié):
四種類(lèi)型復(fù)合元素:
空元素包含其他元素的元素僅包含文本的元素包含元素和文本的元素注釋?zhuān)荷鲜鲈鼐砂瑢傩裕?/p>
2、復(fù)合元素的例子:
對(duì)應(yīng)上面的四種類(lèi)型:
分別的例子為:
1、復(fù)合元素,"product",是空的:
2、復(fù)合元素,"employee",僅包含其他元素:
3、復(fù)合元素,"food",僅包含文本:
4、復(fù)合元素,"description",包含元素和文本:
3、如何定義符合元素?
對(duì)于以復(fù)合x(chóng)ml元素:
在XML Schema中,我們有兩種方式來(lái)定義復(fù)合元素:
1、通過(guò)命名此元素,可直接對(duì)"employee"元素進(jìn)行聲明,就像這樣:
注意:假如您使用上面所描述的方法,那么僅有 "employee" 可使用所規(guī)定的復(fù)合類(lèi)型。請(qǐng)注意其子元素,"firstname" 以及 "lastname",被包圍在指示器 中。這意味著子元素必須以它們被聲明的次序出現(xiàn)。
2、"employee" 元素可以使用 type 屬性,這個(gè)屬性的作用是引用要使用的復(fù)合類(lèi)型的名稱(chēng):
注意:如果您使用了上面所描述的方法,那么若干元素均可以使用相同的復(fù)合類(lèi)型,比如這樣:
3、您也可以在已有的復(fù)合元素之上以某個(gè)復(fù)合元素為基礎(chǔ),然后添加一些元素,就像這樣:
4、針對(duì)四種類(lèi)型,我們?nèi)绾斡肵ML Schema對(duì)其進(jìn)行定義?
1、XSD復(fù)合空元素:
空的復(fù)合元素不能包含內(nèi)容,只能含有屬性。
一個(gè)空的 XML 元素:
上面的 "product" 元素根本沒(méi)有內(nèi)容。為了定義無(wú)內(nèi)容的類(lèi)型,我們就必須聲明一個(gè)在其內(nèi)容中只能包含元素的類(lèi)型,但是實(shí)際上我們并不會(huì)聲明任何元素,比如這樣:
在上面的例子中,我們定義了一個(gè)帶有復(fù)合內(nèi)容的復(fù)合類(lèi)型。complexContent 元素給出的信號(hào)是,我們打算限定或者拓展某個(gè)復(fù)合類(lèi)型的內(nèi)容模型,而 integer 限定則聲明了一個(gè)屬性但不會(huì)引入任何的元素內(nèi)容。
不過(guò),也可以更加緊湊地聲明此 "product" 元素:
或者您可以為一個(gè) complexType 元素起一個(gè)名字,然后為 "product" 元素設(shè)置一個(gè) type 屬性并引用這個(gè) complexType 名稱(chēng)(通過(guò)使用此方法,若干個(gè)元素均可引用相同的復(fù)合類(lèi)型):
2、XSD復(fù)合類(lèi)型-僅含元素
僅含元素的復(fù)合類(lèi)型元素是只能包含其他元素的元素。
XML 元素,"person",僅包含其他的元素:
您可在 schema 中這樣定義 "person" 元素:
請(qǐng)留意這個(gè) 。它意味著被定義的元素必須按上面的次序出現(xiàn)在 "person" 元素中。
或者您可以為 complexType 元素設(shè)定一個(gè)名稱(chēng),并讓 "person" 元素的 type 屬性來(lái)引用此名稱(chēng)(如使用此方法,若干元素均可引用相同的復(fù)合類(lèi)型):
3、XSD僅含文本復(fù)合元素
僅含文本的復(fù)合元素可包含文本和屬性。
此類(lèi)型僅包含簡(jiǎn)易的內(nèi)容(文本和屬性),因此我們要向此內(nèi)容添加 simpleContent 元素。當(dāng)使用簡(jiǎn)易內(nèi)容時(shí),我們就必須在 simpleContent 元素內(nèi)定義擴(kuò)展或限定,就像這樣:
或者:
提示:請(qǐng)使用 extension 或 restriction 元素來(lái)擴(kuò)展或限制元素的基本簡(jiǎn)易類(lèi)型。
這里有一個(gè) XML 元素的例子,"shoesize",其中僅包含文本:
下面這個(gè)例子聲明了一個(gè)復(fù)合類(lèi)型,其內(nèi)容被定義為整數(shù)值,并且 "shoesize" 元素含有名為 "country" 的屬性:
我們也可為 complexType 元素設(shè)定一個(gè)名稱(chēng),并讓 "shoesize" 元素的 type 屬性來(lái)引用此名稱(chēng)(通過(guò)使用此方法,若干元素均可引用相同的復(fù)合類(lèi)型):
4、XSD帶有混合內(nèi)容的復(fù)合類(lèi)型:
混合的復(fù)合類(lèi)型可包含屬性、元素以及文本。
XML 元素,"letter",含有文本以及其他元素:
下面這個(gè) schema 聲明了這個(gè) "letter" 元素:
注釋?zhuān)簽榱耸棺址麛?shù)據(jù)可以出現(xiàn)在 "letter" 的子元素之間,mixed 屬性必須被設(shè)置為 "true"。 標(biāo)簽 (name、orderid 以及 shipdate ) 意味著被定義的元素必須依次出現(xiàn)在 "letter" 元素內(nèi)部。
我們也可以為 complexType 元素起一個(gè)名字,并讓 "letter" 元素的 type 屬性引用 complexType 的這個(gè)名稱(chēng)(通過(guò)這個(gè)方法,若干元素均可引用同一個(gè)復(fù)合類(lèi)型):
--------------------------------------------------------------------未完待續(xù)------------------
------------------------------------------------------百戰(zhàn)卓越049天------------------------
注明:本文章來(lái)源于互聯(lián)網(wǎng),如侵權(quán)請(qǐng)聯(lián)系客服刪除!