欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
XML Schema 與 XML DTD的技術(shù)比較與分析
<="" font="">
XML DTD 是目前使用最廣泛的一種 XML 模式,XML Schema 則已經(jīng)成為 W3C 的正式推薦標準,并有替代 XML DTD 的趨勢。那么,從技術(shù)角度看,XML Schema 與 XML DTD 有那些區別,XML Schema 又有那些優(yōu)勢呢?

引言

XML DTD(XML的文檔類(lèi)型定義)是近幾年來(lái)XML技術(shù)領(lǐng)域所使用的最廣泛的一種模式。但是,由于XML DTD并不能完全滿(mǎn)足XML自動(dòng)化處理的要求,例如不能很好實(shí)現應用程序不同模塊間的相互協(xié)調,缺乏對文檔結構、屬性、數據類(lèi)型等約束的足夠描述等等,所以W3C于2001年5月正式推薦XML Schema為XML 的標準模式。顯然,W3C希望以XML Schema來(lái)作為XML模式描述語(yǔ)言的主流,并逐漸代替XML DTD。那么XML Schema與XML DTD相比到底有哪些優(yōu)勢呢,XML DTD是否真的會(huì )在XML的模式描述領(lǐng)域中逐漸消失呢?



izset="41" sizcache="2"> izset="42" sizcache="2">
<="" font="">


回頁(yè)首


XML模式與XML格式

XML模式是指用來(lái)描述XML結構、約束等因素的語(yǔ)言,例如XML Schema、XML DTD、XDR,SOX等等。XML格式則是XML文檔本身所具有的格式。本文以XML Schema來(lái)代表W3C所推薦的XML Schema模式標準,而以"XML模式"來(lái)代表所有的XML模式描述語(yǔ)言。

從模式的描述語(yǔ)言來(lái)說(shuō),XML Schema和XML DTD都屬于語(yǔ)法模式。與概念模式不同,語(yǔ)法模式在對同一事物描述時(shí),可以采用不同的語(yǔ)法,例如在對關(guān)系模式描述時(shí),無(wú)論是使用XML Schema還是XML DTD,都既可以用元素也可以用屬性來(lái)描述關(guān)系模式的列。

模式必須以某種格式來(lái)表示,XML Schema的格式與XML DTD的格式有著(zhù)非常明顯的區別,XML Schema事實(shí)上也是XML的一種應用,也就是說(shuō)XML Schema的格式與XML的格式是完全相同的,而作為SGML DTD的一個(gè)子集,XML DTD具有著(zhù)與XML格式完全不同的格式。這種區別會(huì )給XML Schema的使用帶來(lái)許多好處:

  1. XML用戶(hù)在使用XML Schema的時(shí)候,不需要為了理解XML Schema而重新學(xué)習,節省了時(shí)間;
  2. 由于XML Schema本身也是一種XML,所以許多的XML編輯工具、API 開(kāi)發(fā)包、XML語(yǔ)法分析器可以直接的應用到XML Schema,而不需要修改。
  3. 作為XML的一個(gè)應用,XML Schema理所當然的繼承了XML的自描述性和可擴展性,這使得XML Schema 更具有可讀性和靈活性。
  4. 由于格式完全與XML一樣,XML Schema除了可以像XML一樣處理外,也可以同它所描述的XML文檔以同樣的方式存儲在一起,方便管理。
  5. XML Schema與XML格式的一致性,使得以XML為數據交換的應用系統之間,也可以方便的進(jìn)行模式交換。
  6. XML有非常高的合法性要求,XML DTD對XML的描述,往往也被用作驗證XML合法性的一個(gè)基礎,但是XML DTD本身的合法性卻缺少較好的驗證機制,必需獨立處理。XML Schema則不同,它與XML有著(zhù)同樣的合法性驗證機制。


izset="44" sizcache="2"> izset="45" sizcache="2">
<="" font=""> <="" font="">


回頁(yè)首


數據類(lèi)型

或許,對于許多開(kāi)發(fā)人員來(lái)講,XML Schema與XML DTD相比的一個(gè)最顯著(zhù)的特征,就是其對數據類(lèi)型的支持了。這完全是因為XML DTD提供的數據類(lèi)型只有CDATA 、Enumerated、NMTOKEN 、NMTOKENS等十種內置(built-in)數據類(lèi)型。這樣少的數據類(lèi)型通常無(wú)法滿(mǎn)足文檔的可理解性和數據交換的需要。XML Schema則不同,它內置了三十七種數據類(lèi)型,如long,int,short,double等常用的數據類(lèi)型,并通過(guò)將數據類(lèi)型表示為由value space、lexical space和facet三部分組成的三元組而獲得更大的靈活性。但是, XML Schema數據類(lèi)型的真正靈活性來(lái)自于其對用戶(hù)自定義類(lèi)型的支持。XML Schema提供兩種方式來(lái)實(shí)現數據類(lèi)型的定義。

1)簡(jiǎn)單類(lèi)型定義(simpleType),即在XML Schema內置的數據類(lèi)型基礎上或其它由XML Schema內置的數據類(lèi)型繼承或定義所得到的簡(jiǎn)單的數據類(lèi)型(simpleType)基礎上,通過(guò)restriction,list 或者 union方式定義新的數據類(lèi)型。

例如:


源碼1 restriction方式的定義
<simpleType name='Sku'>
                        <restriction base='string'>
                        <pattern value='\d{3}-[A-Z]{2}'/>
                        </restriction>
                        </simpleType>



源碼2 list方式的定義
<simpleType name='listOfDouble'>
                        <list itemType='double'/>
                        </simpleType>



源碼3 union方式的定義
<xsd:attribute name="size">
                        <xsd:simpleType>
                        <xsd:union>
                        <xsd:simpleType>
                        <xsd:restriction base="xsd:positiveInteger">
                        <xsd:minInclusive value="1"/>
                        <xsd:maxInclusive value="12"/>
                        </xsd:restriction>
                        </xsd:simpleType>
                        <xsd:simpleType>
                        <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="month"/>
                        </xsd:restriction>
                        </xsd:simpleType>
                        </xsd:union>
                        </xsd:simpleType>
                        </xsd:attribute>

2) 復合類(lèi)型定義(complexType),該方法提供了一種功能強大的復雜數據類(lèi)型定義機制,可以實(shí)現包括結構描述在內的復雜的數據類(lèi)型。下面是一個(gè)以complexType定義實(shí)現關(guān)系模式中表結構的例子,設有表T_C_Type(Psign,Count),其中Psign為CHAR數據類(lèi)型,Count為NUMBER數據類(lèi)型。則有:


源碼4 complexType定義
<!--表結構類(lèi)型定義-->
                        <complexType name="T_C_Type">
                        <sequence minOccurs="0" maxOccurs="unbounded">
                        <element name="Psign">
                        <complexType>
                        <simpleContent>
                        <restriction base="string">
                        <attribute name="value" type="string"/>
                        </restriction>
                        </simpleContent>
                        </complexType>
                        </element>
                        <element name="Count" minOccurs="0">
                        <complexType>
                        <complexContent>
                        <restriction base="anyType">
                        <attribute name="value" type="int" use="optional"/>
                        </restriction>
                        </complexContent>
                        </complexType>
                        </element>
                        </sequence>
                        </complexType>

不僅如此,XML Schema還允許元素的內容取空值,這一點(diǎn)可以擴大XML Schema對數據情況的描述范圍,而XML DTD則無(wú)能為力。例如:


源碼5 XML Schema 元素取空值的定義
<element name='test' nullable='true'/>



izset="52" sizcache="2"> izset="53" sizcache="2">
<="" font=""> <="" font="">


回頁(yè)首


元素順序的支持

XML DTD與XML Schema 都支持對子元素節點(diǎn)順序的描述,但XML DTD沒(méi)有提供對于無(wú)序情況的描述,也就是如果以XML DTD來(lái)描述元素的無(wú)順序出現情況,它必須采用窮舉元素各種可能出現的排列順序的方式來(lái)實(shí)現,這種方法不僅繁瑣,有時(shí)甚至是不現實(shí)的。例如對于table的a,b子元素,如果希望它們以任意的順序出現,用XML DTD來(lái)描述:


源碼6 a,b子元素任意順序出現的XML DTD定義
<?xml version="1.0" encoding="UTF-8"?>
                        <!ELEMENT ENTER_NAME_OF_ROOT_ELEMENT_HERE EMPTY>
                        <!ELEMENT table ((a,b)|(b,a))>
                        <!ELEMENT a  (#PCDATA)>
                        <!ELEMENT b (#PCDATA)>
                        

XML Schema提供了<all>標記來(lái)描述這種情況:


源碼7 a,b子元素任意順序出現的XML Schema定義
<xsd:element name="a" type="xsd:string"/>
                        <xsd:element name="b" type="xsd:string"/>
                        <xsd:element name="table">
                        <xsd:complexType>
                        <xsd:all>
                        <xsd:element ref="a"/>
                        <xsd:element ref="b"/>
                        </xsd:all>
                        </xsd:complexType>
                        </xsd:element>

可見(jiàn),用XML Schema來(lái)實(shí)現子元素的無(wú)序描述要簡(jiǎn)單的多。



izset="57" sizcache="2"> izset="58" sizcache="2">
<="" font=""> <="" font="">


回頁(yè)首


命名空間

在XML中引入命名空間的目的是為了能夠在一個(gè)XML文檔中使用其它XML文檔中的一些具有通用性的定義(通常是一些元素或數據類(lèi)型等的定義),并保證不產(chǎn)生語(yǔ)義上的沖突。XML DTD并不能支持這一特性,這進(jìn)一步限制了XML DTD的適用范圍。而XML Schema則很好的滿(mǎn)足了這一點(diǎn)。

并且, XML Schema還提供了include 和 import兩種引用命名空間的方法。下面的例子中XML Schema文檔引用了其它兩個(gè)XML Schema的定義,通過(guò)使用import實(shí)現了混合使用不同命名空間的目的。例子中還定義了不同命名空間中元素之間的keyref約束。


源碼8 XML Schema對命名空間的使用
schema targetNamespace="http://202.117.84.144"
                        xmlns:xs="http://202.117.84.144"
                        xmlns="http://www.w3.org/2001/XMLSchema"
                        xmlns:a="http://202.117.84.228/middlewareSqlServer2000sqlservertest20211784228"
                        xmlns:b="http://202.117.84.228/middlewareOracle805ioracletest20211784144"
                        elementFormDefault="qualified">
                        <import namespace="http://202.117.84.228/middlewareSqlServer2000sqlservertest20211784228"
                        schemaLocation="F:\xml schema\middlewareSqlServer2000sqlservertest20211784228.xsd"/>
                        <import namespace="http://202.117.84.228/middlewareOracle805ioracletest20211784144"
                        schemaLocation="F:\xml schema\middlewareOrcal805ioracletest20211784144.xsd"/>
                        <annotation>
                        <documentation xml:lang="cn">
                        schema for Middleware
                        Copyright 2001 Zhou Jingtao. All rights reserved.
                        </documentation>
                        </annotation>
                        <element name="CombineDatabase">
                        <complexType>
                        <sequence>
                        <element name="CombinGlobeSchema">
                        <complexType>
                        <sequence>
                        <element ref="a:H-Database"/>
                        <element ref="b:H-Database"/>
                        </sequence>
                        </complexType>
                        <keyref name="SqlServerTest_T_C_Psign" refer="b:gz_jgxx_ID_pk">
                        <selector xpath="a:H-Database/a:SqlServerTest/a:T_C/a:Count"/>
                        <field xpath="@value"/>
                        </keyref>
                        </element>
                        </sequence>
                        </complexType>
                        </element>
                        </schema>



izset="61" sizcache="2"> izset="62" sizcache="2">
<="" font=""> <="" font="">


回頁(yè)首


對于A(yíng)PI的支持

在掌握和使用XML技術(shù)時(shí),DOM和SAX可能是技術(shù)人員最常使用到的XML API。DOM和SAX只對XML實(shí)例文檔有效,雖然可以通過(guò)它們實(shí)現以XML DTD來(lái)驗證XML文檔,但是DOM和SAX卻沒(méi)有提供解析XML DTD文檔內容的功能,也就是說(shuō)我們無(wú)法通過(guò)DOM或SAX來(lái)得到DTD中元素、屬性的聲明和約束的描述。但是在基于XML+DTD的數據交換過(guò)程中,一些應用程序需要得到DTD本身的描述內容和結構,以方便對XML文檔中數據的處理,例如在使用關(guān)系數據庫存儲XML 文檔的過(guò)程中就涉及到如何將XML DTD映射為關(guān)系模式描述的問(wèn)題。為了實(shí)現對XML DTD的解讀,研究人員必須為XML DTD開(kāi)發(fā)新的接口或者專(zhuān)用工具,帶來(lái)了很大的不便。

由于XML Schema本身就是一個(gè)XML 文檔,所以我們可以通過(guò)使用DOM、SAX或JDOM等XML API很容易的解析XML Schema,這就實(shí)現了XML文檔與其描述模式處理方式的一致性,利于數據的傳輸和交換。



izset="64" sizcache="2"> izset="65" sizcache="2">
<="" font=""> <="" font="">


回頁(yè)首


更加清晰的屬性出現情況的限制、以及缺省值和枚舉

XML DTD以關(guān)鍵字#IMPlIED、#FIXED和#REQUIRED來(lái)指定屬性是否出現,并支持屬性缺省值的定義。XML Schema則提供了更明確的標記來(lái)實(shí)現清晰易懂的表示。XML Schema廢棄了XML DTD的#IMPlIED,不再支持屬性的隱含狀態(tài),而要求必須給出明確的狀態(tài),并以prohibited來(lái)表示屬性的禁用。對于缺省值的表達則更為直觀(guān),用default來(lái)直接給出。


源碼9 XML DTD 、XML Schema對屬性出現情況的限制
<!ATTLIST TestDTD testAr1 CDATA  #IMPLIED>
                        <!ATTLIST TestDTD testAr2 CDATA  #REQUIRED>
                        <!ATTLIST TestDTD testAr3 CDATA  #FIXED "3">
                        <!ATTLIST TestDTD testAr4 CDATA  "3">
                        <xsd:attribute name="TestAr1" type="xsd:string" use="optional" default="3"/>
                        <xsd:attribute name="TestAr2" type="xsd:string" use="prohibited"/>
                        <xsd:attribute name="TestAr3" type="xsd:string" use="required" fixed="3"/>

對于XML Schema在枚舉方面的改進(jìn),請參見(jiàn)參考資料中"XML 問(wèn)題 #7 W3C XML Schema 與文檔類(lèi)型定義 (DTD) 比較"一文(文獻9)。



izset="68" sizcache="2"> izset="69" sizcache="2">
<="" font=""> <="" font="">


回頁(yè)首


注釋

XML DTD和XML Schema都支持<!-注釋內容-->這樣的注釋方法,但是XML Schema提供了更靈活和有用的注釋方式:documentation和appinfo。它們提供了面向讀者和應用的注釋。


源碼10 XML Schema的注釋
<xsd:annotation>
                        <xsd:documentation>面向用戶(hù)和應用的注釋</xsd:documentation>
                        <xsd:appinfo>
                        //這是一段C語(yǔ)言代碼。
                        #include stdio.h
                        void main()
                        {
                        int i,j;
                        i =1;
                        j=i+1;
                        }
                        </xsd:appinfo>



izset="72" sizcache="2"> izset="73" sizcache="2">
<="" font=""> <="" font="">


回頁(yè)首


對數據庫的支持

目前如何將關(guān)系數據表示為XML數據和如何實(shí)現基于關(guān)系數據庫的XML數據存儲、查詢(xún)和更新已經(jīng)成為了研究的熱點(diǎn)。Deutsh,Florescu[5],Kossman[5],Shanmugasundaram[6,7]和D W Lee[8]等人都在XML與關(guān)系數據的相互轉化問(wèn)題方面作了較深入的研究。然而由于XML Schema成為正式推薦標準的時(shí)間較晚,加之XML DTD語(yǔ)法相對簡(jiǎn)單,所以現在大部分的研究和應用都是基于XML DTD展開(kāi)的。但是,XML DTD在對關(guān)系數據的描述方面明顯存在著(zhù)不足,例如XML DTD有限的數據類(lèi)型根本無(wú)法完成對關(guān)系數據數據類(lèi)型的一一映射,也無(wú)法實(shí)現大部分的數據規則的描述。XML Schema提供了更多的內建數據類(lèi)型,并支持用戶(hù)對數據類(lèi)型的擴展,基本上滿(mǎn)足了關(guān)系模式在數據描述上的需要,這一點(diǎn)可以作為XML Schema比XML DTD更適合描述關(guān)系數據的一個(gè)主要的原因。



izset="75" sizcache="2"> izset="76" sizcache="2">
<="" font=""> <="" font="">


回頁(yè)首


一個(gè)結論

通過(guò)比較,可以看出,XML Schema比XML DTD具有更強的表現力,能夠更好的滿(mǎn)足不同領(lǐng)域應用的需求。那么,是不是可以說(shuō)XML DTD會(huì )很快被XML Schema替代并最終消失呢。從作者的觀(guān)點(diǎn)來(lái)看,XML Schema雖然在大多數的應用領(lǐng)域都有替代XML DTD的趨勢,但是XML DTD仍然有它的適用范圍,并不可能被XML Schema完全替代:

  • XML DTD是作為XML 標準的一部分發(fā)布的,W3C似乎并沒(méi)有準備將其從XML標準中廢除掉,對于XML DTD的支持還將持續。
  • 目前大多數的面向XML應用,都對XML DTD做了很好的支持,XML DTD的工具也相對較為成熟,一般情況下,這些應用和工具并不會(huì )選擇以XML Schema替換XML DTD的方式對其升級,更多的選擇應該是二者都支持。當然,對于那些對數據交換或者描述能力要求較高、XML DTD已不能滿(mǎn)足功能需求的應用來(lái)說(shuō),以XML Schema來(lái)代替XML DTD已經(jīng)成為一種必然趨勢。
  • 當前大多數與XML 模式相關(guān)的算法研究都是基于XML DTD展開(kāi)的,作為一種研究的延續,并不會(huì )放棄XML DTD的研究成果,但是,針對XML Schema的研究將會(huì )成為一個(gè)新的熱點(diǎn)。
  • 在一些相對要求簡(jiǎn)單的處理環(huán)境中,XML DTD仍然會(huì )占有它的一席之地。
  • 同其他技術(shù)的發(fā)展一樣,由于新標準的出現,XML DTD的作用會(huì )逐漸減弱,但正如層次數據庫在今天仍然在使用一樣, 對XML Schema是否會(huì )完全替代XML DTD做一個(gè)結論似乎為時(shí)過(guò)早。

所以,作為一種強有力的標準,XML Schema作為XML模式的主流已經(jīng)成為一種趨勢;但作為一種最簡(jiǎn)單的XML模式,XML DTD也還將會(huì )在一段時(shí)間內發(fā)揮它應有的作用。



參考資料

學(xué)習
  • Fallside D C. XML Schema Part 0: Primer. http://www.w3.org/TR/xmlschema-0, 2001.5 XML Schema 標準的總體介紹。

  • Thompson H,et al . XML Schema Part 1: Structures. http://www.w3.org/TR/xmlschema-1, 2001.5 XML Schema的結構標準

  • Biron P V, Malhotra A. XML Schema Part 2: Datatypes. http://www.w3.org/TR/xmlschema-2, 2001.5 XML Schema的數據類(lèi)型標準。

  • 參考以下文章
    • Lee D W, Chu W W. Comparative Analysis of Six XML Schema Languages.ACM SIGMOD Record, 2000.9,29(3): 76~87 該文對XML 模式中的XML DTD , XML Schema , XDR , SOX , Schematron, DSD作了詳細的比較,其中對于XML Schema的論述,由于當時(shí)XML Schema標準還未定稿,所以與最新的標準相比有些出入。
    • Florescu D, Kossman D. Storing and Querying XML Data Using a RDBMS. IEEE Data Engineering Bulletin, 1999,22(3): 27~34 研究了如何利用RDBMS實(shí)現XML數據的存儲和查詢(xún)。
    • Shanmugasundaram J, et al..Efficiently Publishing Relational Data as XML Documents..The VLDB Journal, 2000, 65~76 提出了一種基于SQL語(yǔ)言的的關(guān)系數據到XML的有效發(fā)布方法。
    • Shanmugasundaram J,et al.Querying XML Views of Relational Data.The VLDB Journal, 2001, 261~270提出了用來(lái)實(shí)現復雜XQuery的框架結構,研究如何提高XML視的查詢(xún)效率。
    • Lee D W, Chu W W. Constraints-preserving Transformation from XML Document Type Definition to Relational Schema.International Conference on Conceptual Modeling / the Entity Relationship Approach, 2000, 323~338 詳細論述了XML DTD到關(guān)系模式的映射算法CPI。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
XML 文件:XML 架構快速指南 - MSDN Magazine,2002年4月
XML認證教程,第 6 部分: XML Schema
xsd schema 語(yǔ)法
XML開(kāi)發(fā)筆記 — 總結
Web Services學(xué)習路線(xiàn)圖之XML學(xué)習篇-SOA-Java
XMLSchema全接觸
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久