国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

XML 的兩種主要驗證機制

2015-07-13 12:26陳娟
電腦知識與技術(shù) 2015年13期
關(guān)鍵詞:驗證

陳娟

摘要:為保證標(biāo)準(zhǔn)通用標(biāo)記語言、可擴展標(biāo)記語言文檔格式正確,可通過驗證判斷文檔是否有效。驗證是把 XML 文檔的結(jié)構(gòu)、標(biāo)記名稱、數(shù)據(jù)類型等與預(yù)先設(shè)定的要求作比較的過程。預(yù)先設(shè)定的要求被保存在模式文檔中。W3C標(biāo)準(zhǔn)制定了兩種XML的驗證機制(模式文檔):DTD(Document Type Definition)和XSD(XML Schema Definition)。

關(guān)鍵詞:驗證; XML; W3C; DTD; XSD

中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2015)13-0082-02

Abstract: In order to ensure the standard generalized markup language, extensible markup language document format is correct, can be verified by the judgment document is valid. Verification is the structure, the tag name, data type of XML document and the preset requirements for comparison process. The preset requirements are stored in the document model. W3C standard authentication mechanism of two kinds of XML (schema) :DTD(Document Type Definition)和XSD(XML Schema Definition)。

Key words: verification; XML; W3C; DTD; XSD

1 問題的提出

XML在數(shù)據(jù)描述過程中,用戶可以自定義數(shù)據(jù)的結(jié)構(gòu),因此,在使用XML文檔之前需要對數(shù)據(jù)進行篩選,防止無效的數(shù)據(jù)出現(xiàn),以確保數(shù)據(jù)的結(jié)構(gòu)標(biāo)準(zhǔn)化。不同的用戶只需定義好標(biāo)準(zhǔn)文檔類型定義,各用戶都能依文檔類型定義建立文檔實例,并且進行驗證,如此就可以輕易的建立標(biāo)準(zhǔn)和交換數(shù)據(jù),這樣滿足了網(wǎng)絡(luò)共享和數(shù)據(jù)交互。一般教材中會提到兩種驗證機制:DTD 和 XSD。

2 DTD驗證

文檔類型定義(DTD)可定義合法的XML文檔構(gòu)建模塊。它使用一系列合法的元素來定義文檔的結(jié)構(gòu)。是一套關(guān)于標(biāo)記的語法規(guī)則,它說明了在XML文檔中可以使用哪些標(biāo)記,哪些標(biāo)記具有屬性,以及所使用的標(biāo)記出現(xiàn)的順序是什么。DTD的文件格式是SGML,因此我們在學(xué)習(xí)DTD語法時需區(qū)分它與XML語法規(guī)則。在XML文檔中的使用DTD主要有三種方式:內(nèi)部引用、外部引用和內(nèi)外結(jié)合引用。

DTD的定義主要包括在DOCTYPE 聲明中,三種方式分別為<!DOCTYPE根元素 [元素聲明]> 、<!DOCTYPE根元素 SYSTEM "文件名">、<!DOCTYPE根元素 SYSTEM "文件名" [元素聲明]>。在講授過程中一般建議使用外聯(lián)方式,這樣數(shù)據(jù)文檔與驗證文檔分開更易維護。

在DTD文檔中,可以對源XML文檔的元素、屬性及元素出現(xiàn)的順序進行描述,在描述的過程中,包括元素和屬性的類型、元素出現(xiàn)的次數(shù)等。這里對DTD文檔的具體語法就不作詳細的介紹了。

3 XSD驗證

XML Schema 定義(XML Schema Definition,XSD)是一個XML文檔,用于描述另一個XML文檔。定義 XML 文檔的合法構(gòu)建模塊,類似DTD。它的文件格式是XML。在XML文檔中的使用XSD只有一種方式:外聯(lián)。XSD的引用主要是在XML源文件的根元素中添加noNamespaceSchemaLocation 屬性,而該屬性所在的命名空間為http://www.w3.org/2001/XMLSchema-instance。例如:。

在XSD文檔中,對源XML文件的描述所需的元素所在的命名空間為上述URL。根元素是schema,所有對源數(shù)據(jù)文件的描述都包括在根元素里,在描述過程中,幾乎可以實現(xiàn)在DTD中對數(shù)據(jù)的所有描述,除此之外,對元素出現(xiàn)的次數(shù)更具體化。另外,XSD的最大特點就是支持數(shù)據(jù)類型。XSD標(biāo)準(zhǔn)里有內(nèi)置的數(shù)據(jù)類型,而DTD中沒有。而正是因為XSD中的數(shù)據(jù)類型,確保了不同的用戶在理解數(shù)據(jù)同一數(shù)據(jù)時保持一致。

4 舉例分析

下面對名為”shiporder.xml”源XML文檔,分別進行兩種不同的驗證,通過比較它們之前的區(qū)別,分別對兩種驗證機制的語法和用法進行講解。文檔片段如下:

在XML文檔中shiporder元素包括三個子元素,其中item元素出現(xiàn)了兩次也許更多次,還包括屬性orderid;三個子元素又分別包括子元素。在DTD中描述時,shiporder的描述<!ELEMENT shiporder (shipto,item*)>,圓括號中的列表可以確定其子元素出現(xiàn)的順序,而“item”后面的“*”表示item元素出現(xiàn)的次數(shù)是零次或者多次,而不能確定具體的次數(shù);在XSD中描述時,對于有子元素的這類元素,通常用complexType元素來描述其結(jié)構(gòu),在該元素中通過使用三種控制器即:all、sequence、choice來控制子元素結(jié)構(gòu)。其中sequence來控制子元素的順序。例子中通過maxOccurs屬性來確定元素出現(xiàn)的最大次數(shù)。而這個屬性在all控制器中,其值只能是“0”或者“1”,其它兩種控制器該值可以任意設(shè)置,與maxOccurs屬性對應(yīng)的屬性minOccurs,在sequence控制器中其值只能是“1”。通過這兩個屬性的設(shè)置可以限制子元素出現(xiàn)的最小和最大次數(shù),且次數(shù)的具體值可以確定。另外,在描述類型的過程中,DTD描述數(shù)據(jù)時,僅限于抽象的類型,譬如“#PCDATA”、“CDATA”,它們分別用于描述元素和屬性的文本類型,像元素quantity,屬性orderid它們只能被描述為文本類型,但是在XSD中,它們分別被描述成string、integer。當(dāng)然,XSD中對數(shù)據(jù)類型的描述不僅僅只有內(nèi)置類型,可以通過在simpleType元素中的restriction元素來對數(shù)據(jù)類型作更具體的描述,譬如對數(shù)據(jù)的長度、數(shù)據(jù)的模式、數(shù)據(jù)的范圍等。

XSD描述中結(jié)構(gòu)和類型可以自定義并且重用。源XML文件中的元素根據(jù)其結(jié)構(gòu)不同,一般分成兩種:1)無屬性且無子元素的元素;2)有屬性或者有子元素的元素。在XSD描述中,分別使用上述提到的simpleType元素和complexType元素來進行具體的定義,這兩個元素都包含name屬性,通過對該屬性賦值來分別為兩種結(jié)構(gòu)命名。這樣在XSD描述過程中,出現(xiàn)與該結(jié)構(gòu)相同的描述,我們可以直接通過name的名字來直接引用。而這種類型的描述在DTD中是無法實現(xiàn)的。

5 總結(jié)

上述通過一個簡單的例子對XML中的兩種驗證機制,從文檔格式、描述的語法進行了分析和比較,突出了XSD中對數(shù)據(jù)類型的描述特點??梢钥闯鯴ML Schema 是基于 XML 的 DTD 替代物。XSD彌補的DTD中的很多不足之處,而今也被用在大部分的網(wǎng)絡(luò)應(yīng)用程序中。

參考文獻:

[1] David Hunter,Jeff R.XML入門經(jīng)典[M]. 4版. 北京: 清華大學(xué)出版社, 2009.

[2] 馬在強. XML實用教程[M]. 北京: 清華大學(xué)出版社, 2008.

[3] Dr Shahram Khosravi.ASP.NET 2.0服務(wù)器控件與組件開發(fā)高級編程[M]. 北京: 人民郵電出版社, 2007.

[4] 韓忠明. XML數(shù)據(jù)查詢與信息檢索系統(tǒng)[M]. 北京: 中國水利水電出版社, 2013.

[5] 李秋云, 郝建國. XML及WAP開發(fā)手冊[M]. 北京: 人民郵電出版社, 2002.

猜你喜歡
驗證
合理猜想,有效驗證
小題也可大做
彈藥保障需求分析實驗?zāi)P洼敵鰯?shù)據(jù)的驗證研究
汽車外后視鏡抖動問題模型的試驗驗證
HPGe γ譜儀無源效率刻度軟件驗證
丽水市| 棋牌| 东平县| 景洪市| 丁青县| 海原县| 宁河县| 南澳县| 溧阳市| 峨眉山市| 闻喜县| 永丰县| 牟定县| 西安市| 溧阳市| 霍邱县| 岳阳县| 瓮安县| 台北市| 子长县| 山丹县| 本溪| 若羌县| 宾川县| 长宁县| 青浦区| 易门县| 丹棱县| 永嘉县| 古交市| 孟津县| 喀喇沁旗| 阿克陶县| 新邵县| 偏关县| 乐业县| 黑山县| 黑水县| 海南省| 桃江县| 长沙县|