第2章 XML命名空間和Schema約束-_第1頁
第2章 XML命名空間和Schema約束-_第2頁
第2章 XML命名空間和Schema約束-_第3頁
第2章 XML命名空間和Schema約束-_第4頁
第2章 XML命名空間和Schema約束-_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第二章XML名稱空間和Schema約束第1部分XML名稱空間學(xué)習(xí)目標(biāo)本單元學(xué)習(xí):名稱空間名稱空間的作用域和處理使用名稱空間的優(yōu)缺點名稱空間的使用

簡介XML可以自定義標(biāo)記集XML經(jīng)常用于兩個商務(wù)系統(tǒng)之間的通信XML中的元素名不是固定的當(dāng)兩個不同的文檔使用描述兩種不同的元素的相同名稱時,將產(chǎn)生名稱沖突名稱空間是一個用來避免名稱沖突的概念示例<?xmlversion="1.0"encoding="UTF-8"?><AUTHOR><TITLE>Mr.</TITLE><FIRST>Sidney</FIRST><SECOND>Sheldon</SECOND></AUTHOR>示例...1<?xmlversion="1.0"encoding="UTF-8"?><BOOKS><BOOK><TITLE>SkyisFalling</TITLE><PRICE>$5.6</PRICE></BOOK><BOOK><TITLE>RageofAngels</TITLE><PRICE>$4.3</PRICE></BOOK></BOOKS>使用前綴解決名稱沖突

<?xmlversion="1.0"encoding="UTF-8"?><AUTHOR><AU:TITLE>Mr.</AU:TITLE><AU:FIRST>Sidney</AU:FIRST><AU:SECOND>Sheldon</AU:SECOND><BO:BOOK><BO:TITLE>SkyisFalling</BO:TITLE><BO:PRICE>$5.6</BO:PRICE></BO:BOOK><BO:BOOK><BO:TITLE>RageofAngels</BO:TITLE><BO:PRICE>$4.3</BO:PRICE></BO:BOOK></AUTHOR>名稱空間

XML名稱空間提供了一種避免元素名稱沖突的方法它們通過給標(biāo)記名關(guān)聯(lián)一個詞匯來解決名稱沖突的問題名稱空間可以使不同概念空間下的多個元素名出現(xiàn)在同一個XML文檔中創(chuàng)建名稱空間的語法如下:xmlns:prefix=namespacevalue對元素應(yīng)用名稱空間的語法是:<NameSpace:ElementName>Content</NameSpace:ElementName>屬性和名稱空間

和元素名一樣,我們可以在屬性名前添加一個名稱空間前綴考慮一個以值/Univ/RD

聲明的名為RD

的名稱空間當(dāng)我們有了一個聲明為id

的屬性以后,我們還需要使用名為RD

的名稱空間來限定它以下示例顯示了具有名稱空間的屬性<University xmlns:RD='/Univ/RD'> <RD:DeanRD:id=”1”>John </RD:Dean></University>缺省名稱空間

如果文檔中的大多數(shù)元素屬于同一個名稱空間,那么不必對每個元素名都附加前綴可以定義一個缺省的名稱空間,并把它應(yīng)用到所有未附加前綴的元素和屬性定義一個缺省名稱空間的語法為:xmlns="namespace"示例:<NAMExmlns="/NA"> <TITLE>Mr. </TITLE> <FIRST>Sidney </FIRST> <SECOND>Sheldon </SECOND></NAME>示例<?xmlversion="1.0"encoding="US-ASCII"?> <!—除去缺省的命名空間之外,此處還定義了另外3個命名空間--> <Universityxmlns='/Univ/Default' xmlns:RD='/Univ/RD' xmlns:Admit='/Univ/Admit'> <AcademicResearchxmlns:xmlschema='/Univ/RD'> <RD:Dean>Sophiya </RD:Dean> <RD:AssistantDean>Maria示例</RD:AssistantDean> <RD:Inchargeid="3">Dickenson </RD:Incharge> </RD:AcademicResearch><Admit:AdmissionAndPlacement> <Admit:Dean>David </Admit:Dean> <Admit:AssistantDean>Joseph </Admit:AssistantDean> <Admit:Inchargeid="3">John </Admit:Incharge> </Admit:AdmissionAndPlacement> </University>XML名稱空間的優(yōu)點

可復(fù)用性:XML名稱空間可以實現(xiàn)標(biāo)記的復(fù)用模塊化:使用按照其它標(biāo)準(zhǔn)設(shè)計的元素和屬性可以產(chǎn)生模塊化的文檔可擴(kuò)展性:XML名稱空間通過加入來源于其它詞匯的元素和屬性提供了語言的可擴(kuò)展性

第2部分XML模式

學(xué)習(xí)目標(biāo)本單元的學(xué)習(xí):

XML模式的歷史XML模式較之DTD的優(yōu)點XML模式的數(shù)據(jù)類型和facet各種不同的XML模式元素創(chuàng)建簡單的XML模式文件以及如何依據(jù)這些模式來驗證XML

簡介XML模式是由Microsoft公司開創(chuàng)的一項技術(shù)它用來改進(jìn)DTD,現(xiàn)在已是W3C批準(zhǔn)的一個標(biāo)準(zhǔn)模式通過施加對允許元素、屬性等的控制充當(dāng)著一種約束機(jī)制它限制了用戶對于標(biāo)記及其元素模型的選擇模式為約束結(jié)構(gòu)和表述XML文檔的信息集定義了一組規(guī)則

有關(guān)DTD的問題

書寫和理解困難不可擴(kuò)展很難實現(xiàn)元數(shù)據(jù)的程序化處理不支持?jǐn)?shù)據(jù)類型不支持繼承XML模式的優(yōu)點

XML模式是基于XML的,而不是某些專用語法它們提供了一個開放式的數(shù)據(jù)模型,從而使我們可以擴(kuò)展詞匯,并且在不違反文檔語法的前提下建立繼承關(guān)系它們支持多種數(shù)據(jù)類型,如Integer(整型)、Float(浮點型)、Boolean(布爾型)和date(日期型)XML模式支持屬性組,從而使我們可以在邏輯上對屬性進(jìn)行組合它們支持名稱空間集成,從而使我們可以將一個文檔的個別節(jié)點與一個模式中的類型聲明關(guān)聯(lián)XML模式定義

XML模式本身是一個XML應(yīng)用,這意味著它被實現(xiàn)為XML詞匯XML模式文檔基于XML語法模式以下述語句作為開始:<?xmlversion="1.0"encoding="UTF-8"?>模式定義包含在<xs:schema>

標(biāo)記中

<xs:schema>元素

通常,一個XML模式包含一個序言,該序言后面跟有一個或多個聲明序言是一組在<xs:schema>

元素中聲明的屬性以下代碼給出了定義模式時使用的<xs:schema>

元素的語法:<xs:schemaxmlns:xs="/2001/XMLSchema">...</xs:schema><schema>

元素使用它的屬性來標(biāo)識任何將被<schema>

及其子元素使用的外部模式<xs:element>元素

該元素用來創(chuàng)建元素并定義它的結(jié)構(gòu)元素類型的定義也包含在此標(biāo)記中其語法如下:<xs:elementname="elementName"type="datatype"/>元素名對應(yīng)于XML元素名數(shù)據(jù)類型對應(yīng)于施加于元素可以保存的數(shù)據(jù)上的約束

<xs:element>

元素具有的一些屬性

屬性名值描述Name任何有效的名稱被聲明的元素名Type整型、字符串型等指定元素的數(shù)據(jù)類型Ref任何有效的名稱該元素用來引用另一元素名default任何允許使用的值指定元素使用的缺省值Fixed任何允許使用的值指定固定的值。不允許在XML文檔中給出其它值minOccurs任何正數(shù)。如果沒有限制,使用無限大的值(unbounded)用來指定允許出現(xiàn)的最少次數(shù)在XML文檔內(nèi)部引用模式

XML模式語言是由名稱空間/2001/XMLSchema

來識別的文檔可以用schemaLocation

或noNamespaceSchemaLocation

屬性來引用一個模式包含模式定義的方法如下:<RootElementxmlns:xsi="/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="externalxsdfile">示例—XSD代碼XSD代碼<?xmlversion="1.0"encoding="UTF-8"?><xs:schemaxmlns:xs="/2001/XMLSchema"> <xs:elementname="Message"type="xs:string"/></xs:schema>XML代碼<?xmlversion="1.0"encoding="UTF-8"?><Messagexmlns:xsi="/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="Message.xsd"> HelloWorld</Message>XML模式元素

因為XML模式是使用XML語法編寫的,所以XML模式定義的結(jié)構(gòu)是指我們可以用來定義標(biāo)記的XML構(gòu)造元素這部分規(guī)范將描述用來定義模式的元素和屬性同時,在這一部分中也將描述內(nèi)容模型它們顯式地指定了允許使用的元素的內(nèi)部結(jié)構(gòu)XML模式中的數(shù)據(jù)類型

基本數(shù)據(jù)類型

基本數(shù)據(jù)類型是指那些不用其它數(shù)據(jù)類型來定義的數(shù)據(jù)類型它們構(gòu)成所有其它數(shù)據(jù)類型的基礎(chǔ),而且不可以被更小的組成部分定義它們不可以具有元素或內(nèi)容屬性,因為它們是派生出所有其它數(shù)據(jù)類型的基本類型

XML模式提供了兩種用戶定義的數(shù)據(jù)類型定義:

派生的或簡單的復(fù)雜的

簡單定義使我們知道該如何創(chuàng)建派生數(shù)據(jù)類型,包括那些被內(nèi)置到模式規(guī)范中的數(shù)據(jù)類型復(fù)雜的定義主要用來描述內(nèi)容模型用戶定義類型具有以下一些特性:

值空間詞匯空間Facets或約束用戶定義的數(shù)據(jù)類型定義<xs:simpleType>元素

簡單類型定義使用<simpleType>

元素、它的屬性和任何有效的約束facets其語法如下:<xs:simpleType> <xs:restrictionbase="基礎(chǔ)數(shù)據(jù)類型">

限定條件定義… </xs:restriction></xs:simpleType><xs:restriction>元素

任何派生的類型都基于基本數(shù)據(jù)類型以及施加于它的約束它的定義如下:<xs:simpleTypename="negativeValues"> <xs:restrictionbase="xs:integer"> <xs:maxExclusivevalue="0"/> </xs:restriction></xs:simpleType>FacetFacet是一個數(shù)據(jù)類型的定義特性之一,它將一個數(shù)據(jù)類型與其它數(shù)據(jù)類型區(qū)分開來它是一個值空間特性它包括諸如一個數(shù)值數(shù)據(jù)類型或一個字符串長度的邊界之類的特性Facet分為兩類:

基本facet約束facet基本facet

基本facet定義數(shù)據(jù)類型有5種基本facet:順序(Order):對于某些數(shù)據(jù)類型,值之間存在著已定義的關(guān)系(如:數(shù)值具有有序的值)邊界(Bound):有序的數(shù)據(jù)類型可能被約束到一個值的集合或范圍基數(shù)(Cardinality):值空間內(nèi)值的個數(shù)數(shù)值(Numeric):這用來指示元素中可用的值是否是數(shù)值型的

非數(shù)值(Non-numeric):這用來指示元素中可用的值是否是非數(shù)值型的約束facet

約束facet通過限制派生數(shù)據(jù)類型值空間從而限制該數(shù)據(jù)類型的詞匯空間有幾種可以被應(yīng)用到派生數(shù)據(jù)類型的約束facet:EnumerationfractionDigits、totalDigitslength、minLength、maxLengthPatternminExclusive、maxExclusive、minInclusive、maxInclusive示例<xs:simpleType> <xs:restrictionbase="xs:integer"> <xs:minInclusivevalue="1001"/> <xs:maxInclusivevalue="9999"/> <xs:patternvalue="[1-9][0-9][0-9][1-9]"/> </xs:restriction></xs:simpleType>示例<xs:elementname="Phone"> <xs:simpleType> <xs:restrictionbase="xs:string"> <xs:pattern value="[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]"> </xs:pattern> </xs:restriction> </xs:simpleType></xs:element>復(fù)雜類型定義

復(fù)雜類型定義是屬性聲明和一個內(nèi)容類型的集合,它們分別與屬性和指定的元素類型的子元素相關(guān)復(fù)雜類型定義提供了驗證包含該類型的文檔實例的機(jī)制它們描述了元素和屬性存在及內(nèi)容它們還描述了一個元素類型的內(nèi)容,它可能只是一個元素、文本、混合的或空的它們控制著派生其它類型的能力<complexType>元素復(fù)雜類型定義使用<complexType>

元素、它的屬性和任何有效的約束facet<complexTypeabstract="boolean"base="QName"block="#all|subsetof{extension,restriction}"final="#all|subsetof{extension,restriction}"id="ID"mixed="boolean"name="NCName">示例<xs:elementname="name"><xs:complexType><xs:elementname="firstname"type="xs:string"/><xs:elementname="middlename"type="xs:string"/><xs:elementname="lastname"type="xs:string"/></xs:complexType></xs:element>選擇和順序組

<xs:elementname="paymentType"> <xs:complexType> <xs:choiceminOccurs="1"maxOccurs="1"> <xs:elementname="Cash"/> <xs:elementname="Check"/> <xs:elementname="CreditCard"/> <xs:elementname="DebitCard"/> </xs:choice> </xs:complexType></xs:element>選擇和順序組...1<xs:elementname="RECORD"> <xs:complexType> <xs:sequence> <xs:elementname="NAME"type="xs:string"/> <xs:elementname="IDNO"type="xs:integer"/> <xs:elementname="SCORE" type="xs:nonNegativeInteger"/> </xs:sequence> </xs:complexType> </xs:element><xs:all>元素<xs:all>

元素可以用來指定哪些子元素可以出現(xiàn),而不指定它們出現(xiàn)的順序我們還可以通過指定minOccurs

屬性將這些子元素設(shè)置為可選的混合內(nèi)容-xs:all示例

<xs:elementname="EmployeeList"> <xs:complexType> <xs:all> <xs:elementname="FirstName"/> <xs:elementname="MiddleName"minOccurs="0"/> <xs:elementname="LastName"/> </xs:all> </xs:complexType></xs:element><xs:attribute>元素

借助于XML模式的<xs:attribute>

元素,屬性的創(chuàng)建和元素一樣我們可以創(chuàng)建一個屬性組,并將它指向一個元素<!--definitionofa

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論