av软件(永久免费)-av三级片在线-av三区在线在线播放-av色国产色拍-av色狠狠一-av色图

相關欄目
新聞資訊 >>
合作媒體 >>
展會知識 >>
當前位置:首頁 >

xsd,dtd,tld有什么區別和聯系?


DTD(Document Type Definition)和XSD(XML Schemas Definition)是XML文檔的描述文件,用于檢驗XML文檔格式的正確性。

TLD(taglib description)是JSP的標簽庫描述文件。如要在JSP頁面中實現JSP標簽,必須首先定義實現標簽的類,然后在標簽庫描述文件(TLD)中將寫好的類映射成jsp標簽,最后在JSP文件中使用定義好的標簽,就可以生成動態的JSP內容。

---------------------------------------------------------

DTD(Document Type Definition) 是一套關于標記符的語法規則。

它是XML1.0版規格的一部分,是XML文件的驗證機制,屬于XML文件組成的一部分。DTD 是一種保證XML文檔格式正確的有效方法,可通過比較XML文檔和DTD文件來看文檔是否符合規范,元素和標簽使用是否正確。XML文件提供應用程序一個 數據交換的格式,DTD正是讓XML文件能成為數據交換標準,因為不同的公司只需定義好標準DTD,各公司都能依DTD建立XML文件,并且進行驗證,如 此就可以輕易的建立標準和交換數據,這樣滿足了網絡共享和數據交互。DTD文件是一個ASCII文本文件,后綴名為.dtd。

1)為什么需要dtd,xsd 這種xml文檔定義描述?

對于一個格式良好的XML文檔,我們只能保證這個文檔的格式符合XML規范,但是元素與元素之間的關系、元素與屬性的關系,屬性的取值是否正確,我們就無法得知了。對于一個格式良好的文檔,如果僅僅是在有限的應用中使用,或者作為數據的存儲傳輸,那么也能很好的滿足我們的應用。但是如果要讓其他用戶理解你的XML文檔,或者和其他的應用進行數據交換,那么就有必要提供一種機制,來保證我們所寫的XML文檔和別人所寫的XML文檔其結構是相同的,元素與元素之間的關系是正確的,屬性的取值也是符合要求的。

2)在XML當中引入DTD有哪些方式?

我們可以直接在XML文檔中定義DTD,也可以通過URI引用外部的DTD文件,或者同時采用這兩種方式。

①XML文檔中內部定義DTD

內部的 DOCTYPE 聲明,通過下面的語法包裝在一個 DOCTYPE 聲明中:

帶有 DTD 的 XML 文檔實例

                     ]>   Tove    Jani    Reminder    Dont forget me this weekend  

以上 DTD 解釋如下:

!DOCTYPE note (第二行)定義此文檔是 note 類型的文檔。

!ELEMENT note (第三行)定義 note 元素有四個元素:"to、from、heading,、body"

!ELEMENT to (第四行)定義 to 元素為 "PCDATA" 類型

!ELEMENT from (第五行)定義 from 元素為 "PCDATA" 類型

!ELEMENT heading (第六行)定義 heading 元素為 "PCDATA" 類型

!ELEMENT body (第七行)定義 body 元素為 "PCDATA" 類型

再舉一個例子:

]>

文檔類型聲明由 結束。

在DTD當中,所有關鍵字都是大寫的,就像在這里看到的ELEMENT、PCDATA一樣,在后面我們還會看到其他的關鍵字。不過在DTD中定義的元素和屬性的大小寫是可以任意指定的,但是要注意,XML文檔是大小寫相關的,所以一旦給一個元素命名嗎,那么整個文檔中都要使用相同的大小寫。例如:greeting 和Greeting是兩個不同的元素名。

在XML文檔中定義DTD,比較直觀,修改也比較方便,而且不用擔心XML處理器找不到DTD,但是它也有一些缺點:

1.在文檔中定義DTD會導致文檔本身的長度增加,在傳輸數據市,即使不需要驗證文檔的有效性,這些聲明也會隨文檔一起傳輸。

2.如果多個XML文檔需要共用一個DTD,我們就需要在每個文檔中加入DTD,這是相當繁瑣的。

要解決上面兩個問題,我們將dtd放到一個單獨的文件中去定義,在XML文檔中,通過URI外部引用

(有沒有發現寫程序的時候的include 和import也有同樣的功效重用代碼)

② 外部文檔聲明

假如 DTD 位于 XML 源文件的外部,那么它應通過下面的語法被封裝在一個 DOCTYPE 定義中:

SYSTEM關鍵字表示文檔使用的是私有的DTD文件,外部DTD文件的URI可以是相對URI或者絕對URI,相對URI是相對文檔類型聲明所在文檔的位置。

比如

我們將DTD的定義放到了hello.dtd文件中,注意要將hello.dtd放在和XML文檔同一目錄下,這樣XML處理器才能找到這個文件。在給DTD文件取名字的時候,文件名可以隨便取,但擴展名一般為.dtd

如果位于不同位置的多個XML文檔要使用同一個DTD,我們可以使用絕對URI來指明DTD文件的地址。假定hello.dtd位于

http://www.guowuxin.org/xml/hello.dtd

我們可以在文檔類型聲明中使用此URI

如果是一種企業或者行業領域標準,則不建議使用SYSTEM,而是使用public修飾

PUBLIC關鍵字用于聲明公共的DTD,并且這個DTD還有一個名稱,DTD的名稱 也稱為公共標識符

比如上面是servlet2.3中web.xml的DTD

根元素web-app

PUBILC "-//所有者//DTD文檔描述的類型//ISO639語言標識符" 外部DTD文件URI

下面這個 XML 文檔和上面的第一個 XML 文檔相同,但是擁有一個外部的 DTD:

     Tove    Jani    Reminder    Dont forget me this weekend!  

這是包含 DTD 的 "note.dtd" 文件:

        

通過 DTD,每一個 XML 文件均可攜帶一個有關其自身格式的描述,獨立的團體可一致地使用某個標準的 DTD 來交換數據。應用程序也可使用某個標準的 DTD 來驗證從外部接收到的數據。

還可以使用 DTD 來驗證自身的數據。

3)DTD的優勢

每一個XML文檔都可攜帶一個DTD,用來對該文檔格式進行描述,測試該文檔是否為有效的XML文檔。

既然DTD有外部和內部之分,當然就可以為某個獨 立的團體定義一個公用的外部DTD,那么多個XML文檔就都可以共享使用該DTD,使得數據交換更為有效。甚至在某些文檔中還可以使內部DTD和外部 DTD相結合。

在應用程序中也可以用某個DTD來檢測接收到的數據是否符合某個標準。

對于XML文檔而言,雖然DTD不是必須的,但它為文檔的編制帶來了方便。加強了文檔標記內參數的一致性,使XML語法分析器能夠確認文檔。

如果不使用DTD來對XML文檔進行定義,那么XML語法分析器將無法對該文檔進行確認。

每個XML文檔都只有一個根元素,其它的子元素都包含在該根元素中。

因此在DTD中對根元素的聲明是必不可少的。

元素聲明的一般形式如下:

]>

DOCTYPE是document type(文檔類型)的簡寫,DOCTYPE聲明必須放在文檔最頂部,在所有代碼和標識之上,DOCTYPE聲明是必不可少的關鍵組成部分。DTD語法 要求DOCTYPE必須要大寫,而且DOCTYPE和元素之間必須要有空格隔開,如在以上代碼中DOCTYPE和根元素root之間要有空格隔開。

4)DTD的缺陷 :利用DTD驗證有效性的解析器,就能夠立即對文檔的完整性進行可靠的檢查。DTD雖然比較實用,但DTD也有不少的缺陷。

1):DTD有自己的特殊語法,其本身不是XML文檔;

2):DTD只提供了有限的數據類型,用戶無法自定義類型;

3):DTD不支持域名機制。

servlet標準在2.5開始就放棄使用dtd,改用了xsd

------------------------------------------------------------

注明:本文章來源于互聯網,如侵權請聯系客服刪除!