版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二章XML名稱空間和Schema約束第1部分XML名稱空間學(xué)習(xí)目標(biāo)本單元學(xué)習(xí):名稱空間名稱空間的作用域和處理使用名稱空間的優(yōu)缺點(diǎn)名稱空間的使用
簡(jiǎn)介XML可以自定義標(biāo)記集XML經(jīng)常用于兩個(gè)商務(wù)系統(tǒng)之間的通信XML中的元素名不是固定的當(dāng)兩個(gè)不同的文檔使用描述兩種不同的元素的相同名稱時(shí),將產(chǎn)生名稱沖突名稱空間是一個(gè)用來(lái)避免名稱沖突的概念示例<?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名稱空間提供了一種避免元素名稱沖突的方法它們通過(guò)給標(biāo)記名關(guān)聯(lián)一個(gè)詞匯來(lái)解決名稱沖突的問(wèn)題名稱空間可以使不同概念空間下的多個(gè)元素名出現(xiàn)在同一個(gè)XML文檔中創(chuàng)建名稱空間的語(yǔ)法如下:xmlns:prefix=namespacevalue對(duì)元素應(yīng)用名稱空間的語(yǔ)法是:<NameSpace:ElementName>Content</NameSpace:ElementName>屬性和名稱空間
和元素名一樣,我們可以在屬性名前添加一個(gè)名稱空間前綴考慮一個(gè)以值/Univ/RD
聲明的名為RD
的名稱空間當(dāng)我們有了一個(gè)聲明為id
的屬性以后,我們還需要使用名為RD
的名稱空間來(lái)限定它以下示例顯示了具有名稱空間的屬性<University xmlns:RD='/Univ/RD'> <RD:DeanRD:id=”1”>John </RD:Dean></University>缺省名稱空間
如果文檔中的大多數(shù)元素屬于同一個(gè)名稱空間,那么不必對(duì)每個(gè)元素名都附加前綴可以定義一個(gè)缺省的名稱空間,并把它應(yīng)用到所有未附加前綴的元素和屬性定義一個(gè)缺省名稱空間的語(yǔ)法為:xmlns="namespace"示例:<NAMExmlns="/NA"> <TITLE>Mr. </TITLE> <FIRST>Sidney </FIRST> <SECOND>Sheldon </SECOND></NAME>示例<?xmlversion="1.0"encoding="US-ASCII"?> <!—除去缺省的命名空間之外,此處還定義了另外3個(gè)命名空間--> <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)點(diǎn)
可復(fù)用性:XML名稱空間可以實(shí)現(xiàn)標(biāo)記的復(fù)用模塊化:使用按照其它標(biāo)準(zhǔn)設(shè)計(jì)的元素和屬性可以產(chǎn)生模塊化的文檔可擴(kuò)展性:XML名稱空間通過(guò)加入來(lái)源于其它詞匯的元素和屬性提供了語(yǔ)言的可擴(kuò)展性
第2部分XML模式
學(xué)習(xí)目標(biāo)本單元的學(xué)習(xí):
XML模式的歷史XML模式較之DTD的優(yōu)點(diǎn)XML模式的數(shù)據(jù)類型和facet各種不同的XML模式元素創(chuàng)建簡(jiǎn)單的XML模式文件以及如何依據(jù)這些模式來(lái)驗(yàn)證XML
簡(jiǎn)介XML模式是由Microsoft公司開(kāi)創(chuàng)的一項(xiàng)技術(shù)它用來(lái)改進(jìn)DTD,現(xiàn)在已是W3C批準(zhǔn)的一個(gè)標(biāo)準(zhǔn)模式通過(guò)施加對(duì)允許元素、屬性等的控制充當(dāng)著一種約束機(jī)制它限制了用戶對(duì)于標(biāo)記及其元素模型的選擇模式為約束結(jié)構(gòu)和表述XML文檔的信息集定義了一組規(guī)則
有關(guān)DTD的問(wèn)題
書寫和理解困難不可擴(kuò)展很難實(shí)現(xiàn)元數(shù)據(jù)的程序化處理不支持?jǐn)?shù)據(jù)類型不支持繼承XML模式的優(yōu)點(diǎn)
XML模式是基于XML的,而不是某些專用語(yǔ)法它們提供了一個(gè)開(kāi)放式的數(shù)據(jù)模型,從而使我們可以擴(kuò)展詞匯,并且在不違反文檔語(yǔ)法的前提下建立繼承關(guān)系它們支持多種數(shù)據(jù)類型,如Integer(整型)、Float(浮點(diǎn)型)、Boolean(布爾型)和date(日期型)XML模式支持屬性組,從而使我們可以在邏輯上對(duì)屬性進(jìn)行組合它們支持名稱空間集成,從而使我們可以將一個(gè)文檔的個(gè)別節(jié)點(diǎn)與一個(gè)模式中的類型聲明關(guān)聯(lián)XML模式定義
XML模式本身是一個(gè)XML應(yīng)用,這意味著它被實(shí)現(xiàn)為XML詞匯XML模式文檔基于XML語(yǔ)法模式以下述語(yǔ)句作為開(kāi)始:<?xmlversion="1.0"encoding="UTF-8"?>模式定義包含在<xs:schema>
標(biāo)記中
<xs:schema>元素
通常,一個(gè)XML模式包含一個(gè)序言,該序言后面跟有一個(gè)或多個(gè)聲明序言是一組在<xs:schema>
元素中聲明的屬性以下代碼給出了定義模式時(shí)使用的<xs:schema>
元素的語(yǔ)法:<xs:schemaxmlns:xs="/2001/XMLSchema">...</xs:schema><schema>
元素使用它的屬性來(lái)標(biāo)識(shí)任何將被<schema>
及其子元素使用的外部模式<xs:element>元素
該元素用來(lái)創(chuàng)建元素并定義它的結(jié)構(gòu)元素類型的定義也包含在此標(biāo)記中其語(yǔ)法如下:<xs:elementname="elementName"type="datatype"/>元素名對(duì)應(yīng)于XML元素名數(shù)據(jù)類型對(duì)應(yīng)于施加于元素可以保存的數(shù)據(jù)上的約束
<xs:element>
元素具有的一些屬性
屬性名值描述Name任何有效的名稱被聲明的元素名Type整型、字符串型等指定元素的數(shù)據(jù)類型Ref任何有效的名稱該元素用來(lái)引用另一元素名default任何允許使用的值指定元素使用的缺省值Fixed任何允許使用的值指定固定的值。不允許在XML文檔中給出其它值minOccurs任何正數(shù)。如果沒(méi)有限制,使用無(wú)限大的值(unbounded)用來(lái)指定允許出現(xiàn)的最少次數(shù)在XML文檔內(nèi)部引用模式
XML模式語(yǔ)言是由名稱空間/2001/XMLSchema
來(lái)識(shí)別的文檔可以用schemaLocation
或noNamespaceSchemaLocation
屬性來(lái)引用一個(gè)模式包含模式定義的方法如下:<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模式元素
因?yàn)閄ML模式是使用XML語(yǔ)法編寫的,所以XML模式定義的結(jié)構(gòu)是指我們可以用來(lái)定義標(biāo)記的XML構(gòu)造元素這部分規(guī)范將描述用來(lái)定義模式的元素和屬性同時(shí),在這一部分中也將描述內(nèi)容模型它們顯式地指定了允許使用的元素的內(nèi)部結(jié)構(gòu)XML模式中的數(shù)據(jù)類型
基本數(shù)據(jù)類型
基本數(shù)據(jù)類型是指那些不用其它數(shù)據(jù)類型來(lái)定義的數(shù)據(jù)類型它們構(gòu)成所有其它數(shù)據(jù)類型的基礎(chǔ),而且不可以被更小的組成部分定義它們不可以具有元素或內(nèi)容屬性,因?yàn)樗鼈兪桥缮鏊衅渌鼣?shù)據(jù)類型的基本類型
XML模式提供了兩種用戶定義的數(shù)據(jù)類型定義:
派生的或簡(jiǎn)單的復(fù)雜的
簡(jiǎn)單定義使我們知道該如何創(chuàng)建派生數(shù)據(jù)類型,包括那些被內(nèi)置到模式規(guī)范中的數(shù)據(jù)類型復(fù)雜的定義主要用來(lái)描述內(nèi)容模型用戶定義類型具有以下一些特性:
值空間詞匯空間Facets或約束用戶定義的數(shù)據(jù)類型定義<xs:simpleType>元素
簡(jiǎn)單類型定義使用<simpleType>
元素、它的屬性和任何有效的約束facets其語(yǔ)法如下:<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是一個(gè)數(shù)據(jù)類型的定義特性之一,它將一個(gè)數(shù)據(jù)類型與其它數(shù)據(jù)類型區(qū)分開(kāi)來(lái)它是一個(gè)值空間特性它包括諸如一個(gè)數(shù)值數(shù)據(jù)類型或一個(gè)字符串長(zhǎng)度的邊界之類的特性Facet分為兩類:
基本facet約束facet基本facet
基本facet定義數(shù)據(jù)類型有5種基本facet:順序(Order):對(duì)于某些數(shù)據(jù)類型,值之間存在著已定義的關(guān)系(如:數(shù)值具有有序的值)邊界(Bound):有序的數(shù)據(jù)類型可能被約束到一個(gè)值的集合或范圍基數(shù)(Cardinality):值空間內(nèi)值的個(gè)數(shù)數(shù)值(Numeric):這用來(lái)指示元素中可用的值是否是數(shù)值型的
非數(shù)值(Non-numeric):這用來(lái)指示元素中可用的值是否是非數(shù)值型的約束facet
約束facet通過(guò)限制派生數(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ù)雜類型定義是屬性聲明和一個(gè)內(nèi)容類型的集合,它們分別與屬性和指定的元素類型的子元素相關(guān)復(fù)雜類型定義提供了驗(yàn)證包含該類型的文檔實(shí)例的機(jī)制它們描述了元素和屬性存在及內(nèi)容它們還描述了一個(gè)元素類型的內(nèi)容,它可能只是一個(gè)元素、文本、混合的或空的它們控制著派生其它類型的能力<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>
元素可以用來(lái)指定哪些子元素可以出現(xiàn),而不指定它們出現(xiàn)的順序我們還可以通過(guò)指定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)建一個(gè)屬性組,并將它指向一個(gè)元素<!--definitionofa
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023-2024年機(jī)械員之機(jī)械員基礎(chǔ)知識(shí)模擬題庫(kù)及答案
- 2022年中考地理一輪復(fù)習(xí):亞洲
- 2022年心理考試試題及答案
- 2024版吊裝安裝合同范本
- 2024年物流配送中心裝卸操作承包合同3篇
- 2025版跨境電商知識(shí)產(chǎn)權(quán)糾紛處理合作協(xié)議3篇
- 加盟店簽合同范本(2篇)
- 2024年汽車運(yùn)輸車輛運(yùn)輸安全培訓(xùn)合同范本3篇
- 二零二五年度二次供水工程環(huán)保驗(yàn)收合同
- 二零二五年度企業(yè)級(jí)二手服務(wù)器采購(gòu)與租賃服務(wù)合同3篇
- 《空調(diào)零部件介紹》課件
- 2024年度醫(yī)院內(nèi)分泌與代謝科述職報(bào)告課件
- 手術(shù)室無(wú)菌操作流程
- 農(nóng)業(yè)機(jī)械控制系統(tǒng)硬件在環(huán)測(cè)試規(guī)范
- 翁潭電站大王山輸水隧洞施工控制網(wǎng)設(shè)計(jì)說(shuō)明書
- 隆胸術(shù)培訓(xùn)課件
- 鋼筋焊接培訓(xùn)課件
- 行政內(nèi)勤培訓(xùn)課件
- 化纖企業(yè)(化學(xué)纖維紡織企業(yè))安全生產(chǎn)操作規(guī)程
- 重大事故隱患專項(xiàng)排查檢查表
- 中建住宅二次結(jié)構(gòu)專項(xiàng)施工方案
評(píng)論
0/150
提交評(píng)論