天天看點

XML知識點滴(9)

XML知識點滴(9)

(引用文章,版權歸作者,如需删除請聯系我)

記号聲明

n         在現實中,有許多資料都無法用XML來表示的,例如:聲音、圖像、影像等,對于這些資料,XML處理器通常不支援。

n         通過DTD中的記号申明(notation declaration),為非 XML資料描述一種可能的格式,或者指定一個外部的程式。

n         記号聲明有兩種形式,一種是使用MIME類型,形式如下:

       <!NOTATION gif SYSTEM “image/gif”>

       另一種是使用URI路徑,指出外部處理程式的位置,如下:

       <!NOTATION gif SYSTEM “iexplore.exe”>

n         對于記号的聲明,也可以使用PUBLIC關鍵字來代替SYSTEM關鍵字,并添加公共的名稱和URI(用法類似于使用了關鍵字PUBLIC的外部DTD聲明)。

有效的XML

n         一個遵守XML文法規則,并遵守相應DTD檔案限制的XML文檔稱為有效的XML文檔。

n         注意區分格式良好的XML和有效的XML,一個隻要求遵循XML規範,一個不但要遵循XML規範,還要遵循相應的DTD限制。

n         将XML文檔和它的DTD檔案進行比較分析,看是否符合DTD規則的過程叫驗證(validation),這個過程通常是通過一個支援有效性檢查的XML處理器來完成的。

XML處理器/解釋器

n         合乎規範的XML處理器可以分為兩類:進行驗證和不進行驗證的。

n         不支援有效性檢查的處理器

這一類處理器隻負責檢查XML文檔和它内部的DTD子集是否滿足“格式良好的”文法規定。這類處理器不會對XML文檔所引用的外部DTD文檔進行分析、進而檢查XML文檔的有效性,但對于出現在文檔内部的DTD子集,仍舊需要處理在内部DTD子集和參數實體中讀到的所有聲明,直到發現第一個對它們沒有讀取到的參數實體引用。也就是說,這類處理器必須使用DTD聲明中的資訊來規範屬性的值,包含内部實體的替換文本,以及提供預設的屬性值。

n         支援有效性檢查的處理器

這一類處理器在檢查文檔是否符合“格式良好的”基本要求的基礎上,進一步結合DTD檢查文檔是否符合DTD中對文檔結構的規定,判定這個文檔是否是“有效的”。處理器必須讀取和處理整個DTD和文檔中引用的所有外部已分析實體。并報告出文檔與DTD聲明相沖突的地方,以及不滿足DTD有效性限制的地方。

無論是哪一類處理器,都要報告文檔實體的内容中和其它讀取到的已分析實體中與XML标準的“格式良好的”文檔定義相沖突的地方。

支援對XML文檔進行有效性檢查的XML處理器有:

1)        Apache的Xercess

              Xerces是Apache的XML項目的一部分,它分别使用Jave、C++和Perl編寫了XML的處理器,支援有效性檢查。Xerces是一個開放源代碼的XML處理器,有關該處理器的詳細介紹請參看網頁:

              http://xml.apache.org/xercess-j/index.html。

2)        Oracle XML Parser

Oracle XML Parser是在Oracle XDK(XML Developers Kit)中提供的。XDK是Oracle公司提供的基于XML的工具包,可以用于Jave、C++和PL/SQL。Oracle XDK一個商業化軟體,并非開源代碼産品。Oracle公司釋出了隻用于開發的許可證,允許    你将此軟體用于開發的目的。可以從下面的網頁檢視XDK的資訊:http://www.oracle.com/technology/tech/xml/xdkhome.html

n         XML處理器位于XML資料與使用XML資料的應用程式之間,它通過标準的API來向應用程式提供資料。