日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

XML學(xué)習(xí)筆記(四)Schema介紹篇_Xml教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:XML學(xué)習(xí)筆記(五)Schema語法之簡單類型
Preface:本文是W3CSchools上《Schema指南》的學(xué)習(xí)筆記。其中大部分內(nèi)容是對指南的翻譯總結(jié)。由于原文的例子更詳盡生動(dòng),如果各位想閱讀原文可以到這個(gè)網(wǎng)址http://www.w3schools.com/schema/default.asp。 同時(shí),W3CSchools提供了測試,大家可以測試一下自己

一、概述

XML Schema用于描述XML文檔結(jié)構(gòu)的文件。另一種用于該用途的文件(技術(shù))是DTD。XML Schema有時(shí)又稱為XML Schema Definition,所以也會(huì)稱為XSD。因此Schema文件是以xsd為后綴的。

下面詳細(xì)的說明一下所謂的“定義XML文檔結(jié)構(gòu)結(jié)構(gòu)”的意義。
  • 定義可以出現(xiàn)在文檔中的Element。
  • 定義可以出現(xiàn)在文檔中的Attribute。
  • 定義哪些Element是子元素。
  • 定義Element的順序。
  • 定義子元素的數(shù)目。
  • 定義一個(gè)元素是否能為空,是否能包含文本。
  • 為每個(gè)Element和Attribute定義數(shù)據(jù)類型。
  • 為Element和Attribute定義默認(rèn)值和固定值。
因?yàn)橛辛艘陨系亩x,我們才能更清晰的使用XML描述我們要表達(dá)的內(nèi)容。使XML的接受方能更容易明白內(nèi)容的含義。

Schema和DTD的比較
可以說Schema是DTD的替代品,雖然作用一樣,但Schema是比DTD更新,更好的一種技術(shù),因?yàn)椋?/p>

  • Schema是可擴(kuò)展的,可以隨著將來的需要進(jìn)行擴(kuò)展。 (可以在其他的Schema中重用現(xiàn)有的Schema;從標(biāo)準(zhǔn)類型中派生創(chuàng)建你自己的數(shù)據(jù)類型;在同一文檔中引用多個(gè)Schema。)
  • Schema是用XML編寫的。 (因此你無需重新學(xué)習(xí)一種語言;你可以使用XML的編輯器對Schema進(jìn)行編輯;可以使用XML Parser去分析Schema;可以使用XML DOM去操作Schema;可以使用XSLT對Schema進(jìn)行轉(zhuǎn)換。)
  • Schema支持?jǐn)?shù)據(jù)類型。 (從而能更好的描述文檔支持的內(nèi)容;更好的驗(yàn)證文檔的有效性;更好的與數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互;更好的定義數(shù)據(jù)約束;更好的定義數(shù)據(jù)格式;更好的支持各類型數(shù)據(jù)間的轉(zhuǎn)換。)
  • Schema支持命名空間。
更重要的是Schema是W3C推薦的標(biāo)準(zhǔn)。

二、在XML文檔中引用Schema

<?xml version="1.0"?>
<note
xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com note.xsd">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

以上的XML文件引用了note.xsd的Schema文件進(jìn)行結(jié)構(gòu)定義,這樣Parser會(huì)根據(jù)該Schema文件對XML進(jìn)行有效性檢驗(yàn)。顯然關(guān)鍵的地方是文檔根元素“note”中屬性的定義。下面解析相關(guān)屬性的意義。

xmlns="http://www.w3schools.com"
說明文檔的默認(rèn)命名空間是“http://www.w3schools.com”。關(guān)于命名空間的作用,在XML學(xué)習(xí)筆記(三)中有介紹。

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
這里定義一個(gè)Schema的實(shí)例命名空間。只有作了這個(gè)定義才能使用schemaLocation屬性。xsi是XML Schema Instance的意思。

xsi:schemaLocation="http://www.w3schools.com note.xsd"
如上所述,因?yàn)槲覀円呀?jīng)定義了xsi命名空間所以可以使用schemaLocation屬性了。schemaLocation屬性由成對的值組成可以有多對。(因?yàn)橐粋(gè)XML文檔可以有多個(gè)命名空間,所以schemaLocation值可以有多對)第一個(gè)值“http://www.w3schools.com”是要使用schema進(jìn)行有效驗(yàn)證的命名空間的元素。第二個(gè)值“note.xsd”是要使用的schema文檔的路徑。

以下是中國XML論壇的兩篇貼子可以作為參考和補(bǔ)充:
http://bbs.xml.org.cn/dispbbs.asp?boardID=23&ID=37706
http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=9270

三、Schema文檔的基本結(jié)構(gòu)

首先給出一個(gè)完整的Schema文檔
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

首先必須強(qiáng)調(diào)的是<schema>元素是Schema文檔的根元素。注意大小寫,Schema也是XML,XML是大小寫敏感的。<schema>Element的所有子元素都是用于定義XML文檔結(jié)構(gòu)的。具體的語法在下篇介紹。在這里我們集中關(guān)注<schema>的屬性。

xmlns:xs="http://www.w3.org/2001/XMLSchema"
這里指明了一個(gè)命名空間“http://www.w3.org/2001/XMLSchema”。同時(shí)定義了一個(gè)前綴“xs”。<schema>自己和所有子元素都使用“xs”前綴,說明屬于該命名空間。

targetNamespace="http://www.w3schools.com"
targetNamespace是目標(biāo)命名空間。這語句說明,這個(gè)Schema定義的元素(note, to, from, heading, body)是來自“http://www.w3schools.com”這個(gè)命名空間的。從另一個(gè)角度可以理解為,引用這個(gè)Schema進(jìn)行有效性驗(yàn)證的XML的元素應(yīng)該是使用該命名空間的。

xmlns="http://www.w3schools.com"
因?yàn)镾chema也是XML。這語句說明這個(gè)XML的默認(rèn)命名空間是“http://www.w3schools.com”。

elementFormDefault="qualified"
這句表示在本Schema中定義的Element,如果在XML實(shí)例文檔出現(xiàn)的話,都要進(jìn)行命名空間匹配。

同樣給出一篇中國XML論壇的帖子作為參考和補(bǔ)充:
http://bbs.xml.org.cn/dispbbs.asp?boardID=23&ID=35354
 

分享:淺析XMLHTTPRequest的屬性和方法
由于現(xiàn)在在公司負(fù)責(zé)制作標(biāo)準(zhǔn)的靜態(tài)頁面,為了增強(qiáng)客戶體驗(yàn),所以經(jīng)常要做些AJAX效果,也學(xué)你也和我一樣在,學(xué)習(xí)AJAX。而設(shè)計(jì)AJAX時(shí)使用的一個(gè)重要的技術(shù)(工具)就是XMLHTTPRequest對象了。這里海嘯把我學(xué)習(xí)XMLHTTPRequest對象的一點(diǎn)資料拿出來跟大家一起分

來源:模板無憂//所屬分類:Xml教程/更新時(shí)間:2010-02-05
相關(guān)Xml教程