版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第第4章章 XML Scherma模式模式4.3 XML Schema標(biāo)記及屬性定義 4.5 XML Schema的組定義 4.1 什么是XML Schema 4.2 XML Schema的文檔結(jié)構(gòu) 4.4 全局聲明和局部聲明 第第4章章 XML Scherma模式模式4.7 XML文件與Schema文件的匹配 4.8 XML文件對于XML Schema模式的校驗(yàn) 4.6 XML Schema中的注釋 4.1 什么是什么是XML Schema(1) XML Schema是W3C開發(fā)的一種新的約束XML文件的模式,是一種特殊的XML文件,遵循XML的語法規(guī)則。DTD則具有自己的語法,所以,只需懂
2、得XML的語法規(guī)則即可編寫Schema,無需學(xué)習(xí)其他語法規(guī)則。 XML Schema可以彌補(bǔ)DTD的不足之處,例如:DTD的數(shù)據(jù)類型有限,當(dāng)聲明一個(gè)標(biāo)記的標(biāo)記內(nèi)容為文本數(shù)據(jù)時(shí),聲明為“#PCDATA”,卻不能限制文本的具體類型(如:整型,浮點(diǎn)型等)。而XML Schema則可以具體定義數(shù)據(jù)的具體類型,XML Schema不但提供了豐富的數(shù)據(jù)類型,還允許用戶自定義類型。 XML Schema常用的數(shù)據(jù)類型見下表:4.1 什么是什么是XML Schema(2)更多詳細(xì)信息可參考:/TR/xmlschema-2/#built-in-datatypes基本數(shù)據(jù)類型說明及
3、舉例備注String表示字符串,例:“Hello” Boolean表示布爾型,例:true或false Decimal表示十進(jìn)制任意精度數(shù)字,例:33.3,25.0Decimal用于準(zhǔn)確表現(xiàn)數(shù)值Float表示單精度32位浮點(diǎn)數(shù) Double表示雙精度64位浮點(diǎn)數(shù) DateTime表示時(shí)間,數(shù)據(jù)形式為:CCYY-MM-DDThh:mm:ss,例:2008-12-27/09:55:23CC,YY,MM,DD分別表示世紀(jì),年,月,日。T表示分隔符.hh,mm,ss分別表示時(shí),分,秒Time表示時(shí)間,數(shù)據(jù)形式為:hh:mm:ss.sss,例:10:11:23 Century表示世紀(jì),數(shù)據(jù)形式為:CC,
4、例:20 gYear表示年份,數(shù)據(jù)形式為:CCYY,例:2008 gMonth表式月份值,數(shù)據(jù)形式為:CCYY-MM,例:2008-12 gDate表示日其值,數(shù)據(jù)形式為:CCYY-MM-DD,例:2008-12-27 AnyURL任意一個(gè)URL,例:http:/www.aabb.cc XML Schema中常用的基本數(shù)據(jù)類型 4.1 什么是什么是XML Schema(3)與DTD相比,XML Schema具有如下優(yōu)點(diǎn):(1)可以更容易地描述文檔結(jié)構(gòu)。(2)可以方便地定義數(shù)據(jù)模型。(3)可重用性。 雖然Schema比DTD對數(shù)據(jù)的限制好,但實(shí)現(xiàn)相同的功能Schema比DTD的代碼長很多。而且,
5、Schema也不是萬能的,DTD可以實(shí)現(xiàn)Schema不能實(shí)現(xiàn)的功能。XML Schema不能完全替代DTD,它們各有優(yōu)勢。 返回上面代碼中第一行以XML聲明開始,說明這是一個(gè)XML文件。所有內(nèi)容都添加在根標(biāo)記。“xsd”是名稱空間的前綴,可以任意定義,一般都設(shè)置為“xsd”或“xs”。 XML Schema文檔是特殊的XML文檔,要遵循XML的語法規(guī)則。W3C規(guī)定,一個(gè)XML Schema文檔的根標(biāo)記必須是“schema”,名稱空間必須是“/2001/XMLSchema”,下面是它的基本形式如下: 4.2 XML Schema的文檔結(jié)構(gòu)的文檔結(jié)構(gòu)(1) Sche
6、ma內(nèi)容這段程序只定義了一個(gè)標(biāo)記。 一個(gè)簡單的實(shí)例:4.2 XML Schema的文檔結(jié)構(gòu)的文檔結(jié)構(gòu)(2) 返回4.3 XML Schema標(biāo)記及屬性標(biāo)記及屬性定義定義 4.3.1 簡單類型標(biāo)記的定義 4.3.2 自定義數(shù)據(jù)類型 4.3.3 復(fù)雜類型標(biāo)記子標(biāo)記的定義 4.3.4 復(fù)雜類型標(biāo)記的屬性的定義 4.3.5 空標(biāo)記及混合內(nèi)容標(biāo)記的定義 返回簡單類型標(biāo)記的定義(簡單類型標(biāo)記的定義(1) 簡單標(biāo)記是指不帶有任何屬性及子標(biāo)記的標(biāo)記,定義簡單標(biāo)記可以通過標(biāo)記來完成。格式為: 例如: 簡單類型標(biāo)記的定義(簡單類型標(biāo)記的定義(2) 標(biāo)記的屬性名稱和作用見下表: 屬性名稱作用name表示標(biāo)記的名稱,
7、值為XML的有效名稱type表示標(biāo)記內(nèi)容的類型ref表示引用已經(jīng)定義的標(biāo)記,不能和type同時(shí)使用use表示該標(biāo)記出現(xiàn)的類型,值分可以是optional、prohibited或required。所代表的意義分別是可選的、禁止的和必須的from表示該標(biāo)記是否受名稱空間限制,值可以是qualified或unqualified。id表示可以唯一標(biāo)識該標(biāo)記的符號default標(biāo)記的默認(rèn)值fixed表示標(biāo)記的值固定不變,不能和default同時(shí)使用返回自定義數(shù)據(jù)類型(自定義數(shù)據(jù)類型(1) XML Schema已經(jīng)提供了40多種的數(shù)據(jù)類型,把數(shù)據(jù)已經(jīng)分的很具體了,但有時(shí)為了更好的滿足需要,Schema還可
8、自定義的數(shù)據(jù)類型。自定義數(shù)據(jù)類型是指以一個(gè)XML Schema類型為基礎(chǔ),添加一些限制條件,使之成為一個(gè)新的類型。自定義數(shù)據(jù)類型使用標(biāo)記,通過這個(gè)標(biāo)記可以給XML Schema提供的數(shù)據(jù)類型添加一些限制,從而構(gòu)造出新的類型。常用的有以下6中類型 :1限定數(shù)值范圍 2限定數(shù)值位數(shù) 3限定字符串范圍 4枚舉類型 5列表類型 6聯(lián)合類型 自定義數(shù)據(jù)類型(自定義數(shù)據(jù)類型(2) 1限定數(shù)值范圍 XML Schema中提供了4種標(biāo)記用來限制數(shù)值的范圍,、和它們都有一個(gè)“value”屬性,意義分別為: (1) 表示小于等于“value”屬性的值。(2) 表示大于等于“value”屬性的值。(3) 表示小于“
9、value”屬性的值。(4) 表示大于“value”屬性的值。 自定義數(shù)據(jù)類型(自定義數(shù)據(jù)類型(3) 1限定數(shù)值范圍例如: 上面這段代碼定義了一個(gè)“score”標(biāo)記,標(biāo)記值的類型為“simpleType1”。接下來的6行定義了一個(gè)新的類型,名稱為“simpleType1”。標(biāo)記的“base”定義了該類型的基本類型是“float”,接下來的兩行限定了數(shù)值范圍是0100之間,包括0和100。自定義數(shù)據(jù)類型(自定義數(shù)據(jù)類型(4) 2限定數(shù)值位數(shù) 在XML Schema中有一個(gè)“decimal”數(shù)據(jù)類型,用來準(zhǔn)確地表示數(shù)值。通過標(biāo)記和來準(zhǔn)確限制數(shù)值。其中: 用來限制數(shù)值的總位數(shù)。用來限制小數(shù)點(diǎn)后面的位
10、數(shù)。例如: 自定義數(shù)據(jù)類型(自定義數(shù)據(jù)類型(5) 3限定字符串范圍 限定字符串范圍分為兩種:限定字符串長度和限定字符串內(nèi)容。XML Schema通過、和來限定字符串的長度,用來限定字符串的內(nèi)容。 限定字符串長度的例子 : 自定義數(shù)據(jù)類型(自定義數(shù)據(jù)類型(6) 3限定字符串范圍 XML Schema中的標(biāo)記可以限定字符串的內(nèi)容,例如: 上面這段代碼定義了一個(gè)“tel”標(biāo)記,該標(biāo)記的值要滿足正則表達(dá)式“(0d2,3-)?d7,8”所限定的值。這個(gè)表達(dá)式的意義是,“d”表示任意數(shù)字,“0d2,3”表示區(qū)號,以“0”開頭后面是23位數(shù)字?!?”是固定字符,“?”表示有0個(gè)或1個(gè),“d7,8”表示7到8
11、位數(shù)字。所以,該表達(dá)式所表示的值是一個(gè)可以帶區(qū)號,也可以不帶區(qū)號的電話號碼。 自定義數(shù)據(jù)類型(自定義數(shù)據(jù)類型(7) 4枚舉類型 XML Schema中使用標(biāo)記來定義枚舉類型。例如: 上面的這段代碼定義了一個(gè)標(biāo)記“jilin”,該標(biāo)記的值只能為“changchun”、“jilin”和“songyuan”中的一個(gè)。枚舉類型可用于除布爾型以外的所有簡單類型。枚舉的值可以包含空格,但每一個(gè)枚舉項(xiàng)的值必須是唯一的。 自定義數(shù)據(jù)類型(自定義數(shù)據(jù)類型(8) 5列表類型 在XML Schema中,用標(biāo)記來定義列表類型。例如: 在定義列表類型的同時(shí),還可以指定列表的長度或長度范圍,分別用標(biāo)記或、來指定。例如:
12、自定義數(shù)據(jù)類型(自定義數(shù)據(jù)類型(9) 6聯(lián)合類型 聯(lián)合類型是一個(gè)標(biāo)記的內(nèi)容可以是多種類型中的一種,例如: 上面的代碼段說明,“code”標(biāo)記的內(nèi)容可以是字符串型的數(shù)據(jù),也可以是整型的數(shù)據(jù)。如果標(biāo)記內(nèi)容的數(shù)據(jù)類型不包含在“memberTypes”中所列舉的數(shù)據(jù)類型中,則相應(yīng)XML文件也不是有效的XML文件。 返回復(fù)雜類型標(biāo)記子標(biāo)記的定義復(fù)雜類型標(biāo)記子標(biāo)記的定義 (1) 復(fù)雜類型的標(biāo)記是指含有子標(biāo)記或?qū)傩缘臉?biāo)記。在XML Schema中,用標(biāo)記來定義復(fù)雜類型的標(biāo)記。通過可以指定標(biāo)記與標(biāo)記或標(biāo)記與屬性的從屬關(guān)系。 定義子標(biāo)記的語法格式為: 子標(biāo)記描述 復(fù)雜類型標(biāo)記子標(biāo)記的定義復(fù)雜類型標(biāo)記子標(biāo)記的定義
13、 (2)一個(gè)實(shí)例: 這段程序定義了4個(gè)標(biāo)記,標(biāo)記“eng”、“math”、“physics”是“score”的子標(biāo)記。在標(biāo)記塊中,通過標(biāo)記封裝了一組標(biāo)記,表示這些標(biāo)記的出現(xiàn)有固定的順序。 復(fù)雜類型標(biāo)記子標(biāo)記的定義復(fù)雜類型標(biāo)記子標(biāo)記的定義 (3) 除了標(biāo)記外,其他可選的標(biāo)記還有和。表示其中包含的標(biāo)記可以無順序地出現(xiàn)一個(gè)或多個(gè)。表示其中包含的標(biāo)記可以任意出現(xiàn)一個(gè)。 在XML Schema中,用“minOccurs”和“maxOccurs”屬性來定義子標(biāo)記出現(xiàn)的次數(shù),分別表示最少出現(xiàn)次數(shù)和最多出現(xiàn)次數(shù)。有以下幾種情況:(1)maxOccurs=”*”,表示該標(biāo)記可以出現(xiàn)一次或多次。(2)maxOcc
14、urs=”1”,表示該標(biāo)記只能出現(xiàn)一次。(3)minOccurs=”0”,表示該標(biāo)記可選,即出現(xiàn)0次或1次。 除了上述情況,還可以指定其他具體的值。 復(fù)雜類型標(biāo)記子標(biāo)記的定義復(fù)雜類型標(biāo)記子標(biāo)記的定義 (4)一個(gè)例子 : 這段程序說明,“name”標(biāo)記是一個(gè)必須出現(xiàn)的標(biāo)記,“sex”標(biāo)記沒有這兩個(gè)屬性,也表示是必須出現(xiàn)的標(biāo)記。“age”是一個(gè)可選的標(biāo)記。 返回復(fù)雜類型標(biāo)記的屬性的定義(復(fù)雜類型標(biāo)記的屬性的定義(1) XML Schema中,標(biāo)記的屬性通過標(biāo)記來聲明,其基本語法格式為: 標(biāo)記的屬性除了“name”和“type”屬性外,還有其他一個(gè)常用的屬性“use”,表示該屬性出現(xiàn)的情況,屬性值可
15、以是optional、prohibited和required中的一個(gè)。分別表示該屬性是可有可無、禁止賦值的和必須賦值?!皍se”屬性的值還可以是fixed或default,意義分別為:該屬性的值是固定的或指定屬性的默認(rèn)值,默認(rèn)值可以改變。 復(fù)雜類型標(biāo)記的屬性的定義(復(fù)雜類型標(biāo)記的屬性的定義(2) 例子: 返回空標(biāo)記及混合內(nèi)容標(biāo)記的定義空標(biāo)記及混合內(nèi)容標(biāo)記的定義(1) 空標(biāo)記是指不含有任何標(biāo)記內(nèi)容的標(biāo)記,但可以含有屬性。例如,空標(biāo)記可以用如下的方法定義: 這段代碼定義了一個(gè)新的類型“emptyType”,“content”屬性為“empty”說明該類型的標(biāo)記不含有任何標(biāo)記內(nèi)容,標(biāo)記的“base”
16、屬性的值為“anyType”,說明該類型不建立在任何類型的基礎(chǔ)上。該類型含有一個(gè)屬性“att1”,屬性值為字符串類型。 空標(biāo)記及混合內(nèi)容標(biāo)記的定義空標(biāo)記及混合內(nèi)容標(biāo)記的定義(2) 混合內(nèi)容的標(biāo)記是指既包含文本內(nèi)容又包含子標(biāo)記的標(biāo)記。下面的例子定義了一個(gè)含有混合內(nèi)容的標(biāo)記。 上面代碼中 標(biāo)記的“content”屬性的值設(shè)置成“mixed”,說明該類型標(biāo)記所標(biāo)記的內(nèi)容可以有文本,也可以有子標(biāo)記。上面這段代碼說明,該類型的標(biāo)記可以含有文本數(shù)據(jù),也可以含有一個(gè)子標(biāo)記“element1”。 空標(biāo)記及混合內(nèi)容標(biāo)記的定義空標(biāo)記及混合內(nèi)容標(biāo)記的定義(3)定義只含有文本數(shù)據(jù)和屬性的標(biāo)記的格式為: 上面代碼中標(biāo)記
17、說明該標(biāo)記的內(nèi)容只包含某一類型的文本,文本類型通過“base”屬性來指定。 返回4.4 全局聲明和局部聲明全局聲明和局部聲明 在XML Schema中,標(biāo)記可以分為全局和局部的。直接在元素下聲明的標(biāo)記和屬性是全局的,這些元素和屬性可以通過和元素的“ref”屬性來引用。 注意:(1)聲明的全局標(biāo)記和屬性的名稱必須是唯一的。(2)在全局聲明中不能使用“ref”屬性。(3)全局聲明的標(biāo)記在XML文檔中可以作為根標(biāo)記出現(xiàn)。 在復(fù)雜類型定義內(nèi)部聲明的標(biāo)記和屬性是局部的,由于簡單類型不包含子標(biāo)記和屬性,所以局部標(biāo)記和屬性不能在簡單類型定義內(nèi)部聲明。 返回4.5 XML Schema的組定義的組定義 (1)
18、 對于Schema中多次重復(fù)出現(xiàn)的一組標(biāo)記或?qū)傩?,我們可以把它們定義成一個(gè)標(biāo)記組或?qū)傩越M,然后通過引用來使用。這樣可以大大提高代碼的重用性,從而也使代碼的結(jié)構(gòu)性變得更強(qiáng)。在XML Schema中標(biāo)記組用標(biāo)記定義,屬性組用標(biāo)記來定義。例如,定義一個(gè)組: 4.5 XML Schema的組定義的組定義 (2)使用組: 標(biāo)記和標(biāo)記類似于標(biāo)記,但不同的是,標(biāo)記結(jié)構(gòu)可以被標(biāo)記使用,而標(biāo)記結(jié)構(gòu)或標(biāo)記結(jié)構(gòu)只能被標(biāo)記調(diào)用。 返回4.6 XML Schema中的注釋中的注釋 Schema文件的注釋可以和XML文件的注釋方法相同,即: 此外,Schema還提供了另一種添加注釋的功能,通過標(biāo)記來添加注釋,它含有兩個(gè)子
19、標(biāo)記和。它們的區(qū)別在于,前者是面向用戶的,后者是面向解析器的。 例如: book typy book 返回4.7 XML文件與文件與Schema文件的文件的匹配匹配 XML文件關(guān)聯(lián)Schema文件是在根標(biāo)記內(nèi)聲明,格式為: XML文件內(nèi)容 XML文件內(nèi)容 例如: 返回4.8 XML文件對于文件對于XML Schema模式的校驗(yàn)(模式的校驗(yàn)(1) 檢驗(yàn)XML文件是否滿足Schema模式也是通過DOM解析器進(jìn)行檢驗(yàn)。 DOM驗(yàn)證程序包含兩個(gè)Java文件,MyHandler.java和ValidateSchema.java。MyHandler.java用來判斷錯(cuò)誤的類型,ValidateSchema
20、.java用來創(chuàng)建DOM對象和驗(yàn)證文件。文件MyHandler.java的代碼簡單,只是重寫了兩個(gè)方法: public class MyHandler extends DefaultHandler String em=null; /一般錯(cuò)誤提示,XML文件的有效性錯(cuò)誤 public void error(SAXParseException e)throws SAXException em=e.getMessage(); System.out.println(一般錯(cuò)誤+em); /嚴(yán)重錯(cuò)誤提示,XML文件的規(guī)范性錯(cuò)誤 public void fataError(SAXParseException e)throws SAXException em=e.getMessage(); System.out.println(致命錯(cuò)誤+em); 4.8 XML文件對于文件對于XML Schema模式的校驗(yàn)(模式的校驗(yàn)(2)返回文件ValidateSchema.java負(fù)責(zé)創(chuàng)建解析器,解析文件,主要代碼如下: /創(chuàng)建Docum
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024旅行社與文化機(jī)構(gòu)旅游文化交流合作協(xié)議范本3篇
- 專項(xiàng)砂石料運(yùn)輸服務(wù)協(xié)議范本版
- 2024沈陽市網(wǎng)絡(luò)營銷推廣服務(wù)合同
- 1《我們班4歲了》(說課稿)2023-2024學(xué)年統(tǒng)編版道德與法治四年級上冊
- 2024年盆栽購銷協(xié)議書:買賣雙方的義務(wù)與權(quán)益
- 增資擴(kuò)股股權(quán)轉(zhuǎn)讓協(xié)議書(2篇)
- 墻紙膠批發(fā)采購合同(2篇)
- 2024汽車租賃合同長期
- JF版山西建筑項(xiàng)目施工合同版B版
- 知識產(chǎn)權(quán)戰(zhàn)略合作協(xié)議
- 我國地方政府債務(wù)風(fēng)險(xiǎn)及其防范研究的開題報(bào)告
- 靜脈治療護(hù)理質(zhì)量考核評價(jià)標(biāo)準(zhǔn)
- 老年肌肉衰減綜合征(肌少癥)-課件
- 九防突發(fā)事件應(yīng)急預(yù)案
- 神經(jīng)內(nèi)科應(yīng)急預(yù)案完整版
- 2023零售藥店醫(yī)保培訓(xùn)試題及答案篇
- UCC3895芯片內(nèi)部原理解析
- 航空航天技術(shù)概論
- 脫水篩 說明書
- GB/T 9410-2008移動通信天線通用技術(shù)規(guī)范
- GB/T 13772.2-1992機(jī)織物中紗線抗滑移性測定方法模擬縫合法
評論
0/150
提交評論