版權(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名稱空間提供了一種避免元素名稱沖突的方法它們通過給標(biāo)記名關(guān)聯(lián)一個(gè)詞匯來(lái)解決名稱沖突的問題名稱空間可以使不同概念空間下的多個(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名稱空間通過加入來(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公司開創(chuàng)的一項(xiàng)技術(shù)它用來(lái)改進(jìn)DTD,現(xiàn)在已是W3C批準(zhǔn)的一個(gè)標(biāo)準(zhǔn)模式通過施加對(duì)允許元素、屬性等的控制充當(dāng)著一種約束機(jī)制它限制了用戶對(duì)于標(biāo)記及其元素模型的選擇模式為約束結(jié)構(gòu)和表述XML文檔的信息集定義了一組規(guī)則
有關(guān)DTD的問題
書寫和理解困難不可擴(kuò)展很難實(shí)現(xiàn)元數(shù)據(jù)的程序化處理不支持?jǐn)?shù)據(jù)類型不支持繼承XML模式的優(yōu)點(diǎn)
XML模式是基于XML的,而不是某些專用語(yǔ)法它們提供了一個(gè)開放式的數(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ǔ)句作為開始:<?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ù)。如果沒有限制,使用無(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ū)分開來(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通過限制派生數(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)的順序我們還可以通過指定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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026人工智能教育平臺(tái)行業(yè)市場(chǎng)供需現(xiàn)狀分析及投資規(guī)劃發(fā)展研究報(bào)告
- 2026輕工業(yè)市場(chǎng)現(xiàn)狀分析供需動(dòng)態(tài)及投資策略評(píng)估研究報(bào)告
- 2026中國(guó)玻璃微珠道路標(biāo)線材料交通安全標(biāo)準(zhǔn)提升與區(qū)域市場(chǎng)調(diào)研
- 理科類考研專業(yè)難度適配與科學(xué)擇校完整思路
- 小學(xué)語(yǔ)文統(tǒng)編版(2024)一年級(jí)下冊(cè)怎么都快樂第一課時(shí)教案設(shè)計(jì)
- 三年級(jí)品德與社會(huì)下冊(cè) 感謝您老師(一)教學(xué)設(shè)計(jì) 未來(lái)版
- 生物必修2《遺傳與進(jìn)化》第2節(jié)孟德爾的豌豆雜交實(shí)驗(yàn)(二)教案
- 黑龍江省雞西市八年級(jí)生物下冊(cè) 7.3.2 生物進(jìn)化的歷程教案 (新版)新人教版
- 軟科學(xué)研究計(jì)劃和項(xiàng)目管理辦法
- 人教版高中化學(xué)必修第一冊(cè)第二章海水中的重要元素鈉和氯第一節(jié)第3課時(shí)碳酸鈉和碳酸氫鈉焰色試驗(yàn)課件
- 師德師風(fēng)考試題庫(kù)及答案
- 寧夏石嘴山市大武口區(qū)2026年社區(qū)專職工作人員招聘【結(jié)構(gòu)化面試題庫(kù)+高分答題模板】(含考官評(píng)分要點(diǎn))
- 2026天津石油職業(yè)技術(shù)學(xué)院招聘20人模擬試卷帶答案詳解(新)
- 云南電力技術(shù)有限責(zé)任公司招聘筆試題庫(kù)2026
- 2026寧夏國(guó)運(yùn)新能源股份有限公司招聘45人筆試備考試題及答案詳解
- 2026江蘇鎮(zhèn)江市京口區(qū)健康路街道辦事處編制外城管協(xié)管員招聘2人筆試參考題庫(kù)及答案詳解
- 河道綜合治理項(xiàng)目建議書
- 貴州省遵義市紅花崗區(qū)2025-2026學(xué)年四下數(shù)學(xué)期末檢測(cè)試題含解析
- 2026年安徽省直機(jī)關(guān)公開遴選公務(wù)員筆試題及答案解析(B類)
- 火車站安防監(jiān)控施工方案
- 2026年廣東省公需課《人工智能賦能高質(zhì)量發(fā)展》試題及答案
評(píng)論
0/150
提交評(píng)論