欧美a级大片-欧美a级毛欧美1级a-欧美a级毛欧美1级a大片式放-欧美a级片免费看-欧美a级片视频-欧美a级片一区二区在线播放

相關(guān)欄目
新聞資訊 >>
合作媒體 >>
展會知識 >>
當(dāng)前位置:首頁 >

Schema技術(shù)(五)-一個XSD案例


XML 文檔

讓我們看看這個名為 "shiporder.xml" 的 XML 文檔:

George Bush John Adams Oxford Street London UK Empire Burlesque Special Edition 1 10.90 Hide your heart 1 9.90

上面的XML文檔包括根元素 "shiporder",其中包含必須名為 "orderid" 的屬性。"shiporder" 元素包含三個不同的子元素:"orderperson"、"shipto" 以及 "item"。"item" 元素出現(xiàn)了兩次,它含有一個 "title"、一個可選 "note" 元素、一個 "quantity" 以及一個 "price" 元素。

上面這一行 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance",告知XML解析器根據(jù)某個 schema 來驗(yàn)證此文檔。這一行:xsi:noNamespaceSchemaLocation="shiporder.xsd" 規(guī)定了 schema 的位置(在這里,它與 "shiporder.xml" 處于相同的文件夾)。

創(chuàng)建一個 XML Schema

現(xiàn)在,我們需要為上面這個 XML 文檔創(chuàng)建一個 schema。

我們可以通過打開一個新的文件來開始,并把這個文件命名為 "shiporder.xsd"。要創(chuàng)建schema,我們僅僅需要簡單地遵循 XML 文檔中的結(jié)構(gòu),定義我們所發(fā)現(xiàn)的每個元素。首先我們開始定義一個標(biāo)準(zhǔn)的 XML 聲明:

... ...

在上面的 schema 中,我們使用了標(biāo)準(zhǔn)的命名空間 (xs),與此命名空間相關(guān)聯(lián)的 URI 是 Schema 的語言定義(Schema language definition),其標(biāo)準(zhǔn)值是http://www.w3.org/2001/XMLSchema

接下來,我們需要定義 "shiporder" 元素。此元素?fù)碛幸粋€屬性,其中包含其他的元素,因此我們將它認(rèn)定為復(fù)合類型。"shiporder" 元素的子元素被 xs:sequence 元素包圍,定義了子元素的次序:

... ... ...

然后我們需要把 "orderperson" 元素定義為簡易類型(這是因?yàn)樗话魏螌傩曰蛘咂渌脑兀n愋?(xs:string) 的前綴是由命名空間的前綴規(guī)定的,此命名空間與指示預(yù)定義的 schema 數(shù)據(jù)類型的 XML schema 相關(guān)聯(lián):

接下來,我需要把兩個元素定義為復(fù)合類型:"shipto" 和 "item"。我們從定義 "shipto" 元素開始:

通過 schema,我們可使用 maxOccurs 和 minOccurs 屬性來定義某個元素可能出現(xiàn)的次數(shù)。maxOccurs 定義某元素出現(xiàn)次數(shù)的最大值,而 minOccurs 則定義某元素出現(xiàn)次數(shù)的最小值。maxOccurs 和 minOccurs 的默認(rèn)值都是 1!

現(xiàn)在,我們可以定義 "item" 元素了。這個元素可在 "shiporder" 元素內(nèi)部出現(xiàn)多次。這是通過把 "item" 元素的 maxOccurs 屬性的值設(shè)定為 "unbounded" 來實(shí)現(xiàn)的,這樣 "item" 元素就可出現(xiàn)創(chuàng)作者所希望的任意多次。請注意,"note" 元素是可選元素。我們已經(jīng)把此元素的 minOccurs 屬性設(shè)定為 0 了:

現(xiàn)在,我們可以聲明 "shiporder" 元素的屬性了。由于這是一個必選屬性,我們規(guī)定 use="required"。

注釋:此屬性的聲明必須被置于最后:

這是這個名為 "shiporder.xsd" 的 schema 文件的文檔清單:

分割 Schema

前面的設(shè)計方法非常容易,但當(dāng)文檔很復(fù)雜時卻難以閱讀和維護(hù)。

接下來介紹的設(shè)計方法基于首先對所有元素和屬性的定義,然后再使用 ref 屬性來引用它們。

這是用新方法設(shè)計的 schema 文件:

使用指定的類型(Named Types)

第三種設(shè)計方法定義了類或者類型,這樣使我們有能力重復(fù)使用元素的定義。具體的方式是:首先對簡易元素和復(fù)合元素進(jìn)行命名,然后通過元素的 type 屬性來指向它們。

這是利用第三種方法設(shè)計的 schema 文件 ("shiporder.xsd"):

restriction 元素顯示出數(shù)據(jù)類型源自于 W3C XML Schema 命名空間的數(shù)據(jù)類型。因此,下面的片段也就意味著元素或?qū)傩缘闹当仨毷亲址愋偷闹担?/p>

restriction 元素常被用于向元素施加限制。請看下面這些來自以上 schema 的片段:

這段代碼指示出,元素或?qū)傩缘闹当仨殲樽址⑶冶仨毷沁B續(xù)的六個字符,同時這些字符必須是 0-9 的數(shù)字。

--------------------------------------------------------------百戰(zhàn)卓越056天------------------

注明:本文章來源于互聯(lián)網(wǎng),如侵權(quán)請聯(lián)系客服刪除!