XML

XML(eXtensible Markup Language)即可擴展標記語言,它與HTML一樣,都是SGML(Standard Generalized Markup Language,標準通用標記語言)。Xml是Internet環境中跨平臺的,依賴於內容的技術,是當前處理結構化文檔信息的有力工具。擴展標記語言XML是一種簡單的數據存儲語言,使用一系列簡單的標記描述數據,而這些標記可以用方便的方式建立,雖然XML佔用的空間比二進制數據要佔用更多的空間,但XML極其簡單易於掌握和使用。

  XML與Access,OracleSQL Server等數據庫不同,數據庫提供了更強有力的數據存儲和分析能力,例如:數據索引、排序、查找、相關一致性等,XML僅僅是展示數據。事實上XML與其他數據表現形式最大的不同是:他極其簡單。這是一個看上去有點瑣細的優點,但正是這點使XML與衆不同。

  XML的簡單使其易於在任何應用程序中讀寫數據,這使XML很快成爲數據交換的唯一公共語言,雖然不同的應用軟件也支持其它的數據交換格式,但不久之後他們都將支持XML,那就意味着程序可以更容易的與Windows、Mac OS, Linux以及其他平臺下產生的信息結合,然後可以很容易加載XML數據到程序中並分析他,並以XML格式輸出結果。

  爲了使得SGML顯得用戶友好,XML重新定義了SGML的一些內部值和參數,去掉了大量的很少用到的功能,這些繁雜的功能使得SGML在設計網站時顯得複雜化。XML保留了SGML的結構化功能,這樣就使得網站設計者可以定義自己的文檔類型,XML同時也推出一種新型文檔類型,使得開發者也可以不必定義文檔類型。

  因爲XML是W3C制定的,XML的標準化工作由W3C的XML工作組負責,該小組成員由來自各個地方和行業的專家組成,他們通過email交流對XML標準的意見,並提出自己的看法 (www.w3.org/TR/WD-xml)。因爲XML 是個公共格式, (它不專屬於任何一家公司),你不必擔心XML技術會成爲少數公司的盈利工具,XML不是一個依附於特定瀏覽器的語言
豐富文件(Rich Documents)- 自定文件描述並使其更豐富

  屬於文件爲主的XML技術應用

  標記是用來定義一塊數據應該如何呈現

  解釋數據(Metadata)- 描述其它文件或在線信息

  屬於數據爲主的XML技術應用

  標記是用來說明一塊資料的意義

  組態檔案(Configuration Files)- 描述軟件的組態參數

 SGML常用來定義針對HTML的文檔類型定義(DTD),同時它也常用於編寫XML的DTD。SGML的問題就在於,它允許出現一些奇怪的語法,這讓創建HTML的解析器成爲一個大難題:

  1 某些起始標籤不允許出現結束標籤,例如HTML中<img>標籤。包含了結束標籤就會出現錯誤。

  2 某些起始標籤可以選擇性出現結束標籤或者隱含了結束標籤,例如HTML中標籤,當出現另一個標籤或者某些其他標籤時,便假設在這之前有一個結束標籤。

  3 某些起始標籤要求必須出現結束標籤,例如HTML中<script>標籤。

  4 標籤可以以任何順序嵌套。即使結束標籤不按照起始標籤的逆序出現也是允許的,例如,This is a sample 是正確的。
string

  5 某些特性要求必須包含值,例如<img src="picture.jpg">中的src特性。

  6 某些特性不要求一定有值,例如

  中的nowrap特性。

  7 定義特性的兩邊有沒有加上雙引號都是可以的,所以<img src="picture.jpg">和<img src=picture.jpg>都是允許的。

  這些問題使建立一個SGML語言的解析器變成了一項艱鉅的任務。判斷何時應用以上規則的困難導致了SGML語言的定義一直停滯不前。以這些問題作爲出發點,XML逐漸步入我們的視野。

  XML去掉了之前令許多開發人員頭疼的SGML的隨意語法。在XML中,採用瞭如下的語法:

  8 任何的起始標籤都必須有一個結束標籤。

  9 可以採用另一種簡化語法,可以在一個標籤中同時表示起始和結束標籤。這種語法是在大於符號之前緊跟一個斜線(/),例如<tag />。XML解析器會將其翻譯成<tag></tag>。

  10 標籤必須按合適的順序進行嵌套,所以結束標籤必須按鏡像順序匹配起始標籤,例如this is a sample string。這好比是將起始和結束標籤看作是數學中的左右括號:在沒有關閉所有的內部括號之前,是不能關閉外面的括號的。

  11 所有的特性都必須有值。

  12 所有的特性都必須在值的周圍加上雙引號。

  這些規則使得開發一個XML解析器要簡便得多,而且也除去了解析SGML中花在判斷何時何地應用那些奇怪語法規則上的工作。僅僅在XML出現後的前六年就衍生出多種不同的語言,包括MathML、SVGRDFRSSSOAPXSLT、XSL-FO,而同時也將HTML改進爲XHTML

  如果需要關於SGML和XML具體技術上的對比,請查看W3C的註解,位於:http://www.w3.org/TR/NOTE-sgml-xml.html

  如今,XML已經是世界上發展最快的技術之一。它的主要目的是使用文本以結構化的方式來表示數據。在某些方面,XML文件也類似於數據庫,提供數據的結構化視圖。

 

文檔結構:

每個XML文檔都由XML序言開始,在前面的代碼中的第一行便是XML序言,<?xml version="1.0"?>。這一行代碼會告訴解析器和瀏覽器,這個文件應該按照前面討論過的XML規則進行解析。第二行代碼,<books>,則是文檔元素(document element),它是文件中最外面的標籤(我們認爲元素(element)是起始標籤和結束標籤之間的內容)。所有其他的標籤必須包含在這個標籤之內來組成一個有效的XML文件。XML文件的第二行並不一定要包含文檔元素;如果有註釋或者其他內容,文檔元素可以遲些出現。

  範例文件中的第三行代碼是註釋,你會發現它與HTML中使用的註釋風格是一樣的。這是XML從SGML中繼承的語法元素之一。

  頁面再往下的一些地方,可以發現<desc>標籤裏有一些特殊的語法。<![CDATA[ ]]>代碼用於表示無需進行解析的文本,允許諸如大於號和小於號之類的特殊字符包含在文本中,而無需擔心破壞XML的語法。文本必須出現在<![CDATA[和]]>之間才能合適地避免被解析。這樣的文本稱爲Character Data Section,簡稱CData Section。

  下面的一行就是在第二本書的定義之前的:

  <?page render multiple authors ?>

  雖然它看上去很像XML序言,但實際上是一種稱爲處理指令(processing instruction)的不同類型的語法。處理指令(以下簡稱PI)的目的是爲了給處理頁面的程序(例如XML解析器)提供額外的信息。PI通常情況下是沒有固定格式的,唯一的要求是緊隨第一個問號必須至少有一個字母。在此之後,PI可以包含除了小於號和大於號之外的任何字符串序列。

什麼是 XML?

  可擴展標記語言 (XML) 是 Web 上的數據通用語言。它使開發人員能夠將結構化數據,從許多不同的應用程序傳遞到桌面,進行本地計算和演示。XML 允許爲特定應用程序創建唯一的數據格式。它還是在服務器之間傳輸結構化數據的理想格式。

  什麼是 MSXML?

  MSXML 是提供核心 XML 服務的 Microsoft 軟件組件。

  Microsoft XML 分析器能夠做什麼?

  最新版本的 Microsoft 核心 XML 服務提供下面四種不同的功能。

  基於文檔對象模型 (DOM) 的分析器,它能夠獲取文本流(能夠轉換到 XML 的文件、程序中的字符串或者任何其他文本)並將它轉換爲能夠編程處理的可導航 XML 樹結構。

  SAX(Simple API for XML)分析器,它針對處理大型文檔和高吞吐量的情況進行了優化的。SAX 是基於事件的分析器,它讀取文檔並將分析事件(例如元素的開始和結尾)直接報告給應用程序。用戶創建的應用程序實現了處理不同事件的處理程序,這非常類似於處理圖形用戶界面 (GUI) 中的事件。

  XSLT 處理器讀取 XSLT 文件,並將可擴展樣式錶轉換語言 (XSLT) 文件的指令應用到 XML 文件,以產生某些類型的輸出。除了創建 XML結構之外,XSLT 處理器還可以在得到的 XSLT 過濾器上執行一定量的優化,另外,從技術的角度看,它更像是一種編譯器。

  驗證分析器讀取文檔類型定義 (DTD) 或者 XML 架構,然後檢驗實際得到的文檔的格式是否正確,以及是否不包含與架構衝突的數據。請注意,僅對架構而言,驗證架構將返回架構本身作爲對象,可以在以後在 HTML 列表框中創建選項時引用這個對象。
  所有四種功能都包含在同一 MSXML 庫軟件包中,它可以從 MSDN XML 開發人員中心(英文)免費得到。

  MSXML、MSXML2 和 MSXML3 之間的區別是什麼?

  在過去三年中 XML 經歷了許多反覆,所以目前存在不同版本的 Microsoft XML 分析器也不奇怪。Internet Explorer 4.0 包含早期版本的 XML 分析器,它比 XSL、XML 數據或者大多數其他的 XML 技術(並且有完全不同的 DOM 模型)要早。該早期版本的分析器包含在 MSXML.dll 庫中。從 MSDN XML 開發人員中心(英文)可將分析器升級到較新的一種。

  我們極力建議您升級到新的分析器,因爲它要強大得多。Internet Explorer 5.0 包括 MSXML 2.0 分析器,它包含 XSL 和 XML 架構的基本版本。MSXML2 是 SQL Server 2000 附帶的分析器版本。MSXML2 包含了許多性能增強的功能,並且在總體上提高了性能和可伸縮性。MSXML3 是當前作爲“技術預覽”附帶的版本。MSXML3 包括 XSLT 和 XPath 支持以及 SAX 接口。

  XML 可以代替 HTML 嗎?

  XML 比 HTML 提供更大的靈活性,但是它不可能很快代替 HTML。實際上,XML 和 HTML 能夠很好地在一起工作。Microsoft 希望許多作者和開發人員都能同時使用 XML 和 HTML,比如用 XSLT 來生成 HTML。

在 Web 上使用 XML 的好處有:

  它提供用於本地計算的數據。傳遞到桌面的數據可以進行本地計算。XML 分析器可以讀取數據,並將它遞交給本地應用程序(例如瀏覽器)進一步查看或處理。數據也可以由使用 XML 對象模型的腳本或其他編程語言來處理。

  向用戶提供正確的結構化數據視圖。傳遞到桌面的數據可以以多種方式表示。本地數據集,可以根據用戶喜好和配置等因素,以適當的形式,在視圖中動態表現給用戶。

  允許集成不同來源的結構化數據。一般情況下,使用代理,在中間層服務器上集成來自後端數據庫和其他應用程序的數據,使該數據能夠傳遞給桌面或者其他服務器,做進一步聚合、處理和分佈。

  描述來自多種應用程序的數據。由於 XML 是可擴展的,因此它可以用於描述來自多種應用程序的數據,從描述 Web 頁面集合到數據記錄。由於數據是自描述的,因此不需要數據的內置描述,也能夠接收和處理數據。

  通過粒度更新來提高性能。XML 允許粒度更新。開發人員不必在每次有改動時都發送整個結構化數據集。有了粒度更新後,只有改變的元素才必須從服務器發送到客戶機。改變的數據可以在不必刷新整個頁面或表的情況下顯示。

  XML 只適用於核心開發人員嗎?

  不。和 HTML 文檔一樣,XML 文檔可以由任何人創建 — 甚至是沒有任何編程經驗的人。XML 僅僅是一種描述信息的標準方式。此外,它還是一種語言,可以在沒有任何軟件的情況下用它來編寫。您可以在文本編輯器中編寫 XML 文檔,並且直接放入 Web 站點,不需要編寫傳統方式下的任何代碼。

  開始使用 XML 時需要什麼?

  要使用 XML,您需要能夠讀取 XMl 文檔的 XML 分析器,並且使它的內容能被處理。Microsoft 提供了一種分析器,可以從 MSDN XML 開發人員中心(英文)下載。

  要使用 XML 文檔,可以使用文本編輯器(例如記事本)或任何其他可以用於創建 HTML 頁面的編輯器。要創建完整形式的 XML 應用程序,請使用諸如 Microsoft? Visual Studio? 的編程環境。

  有如何使用 XML 的實際例子嗎?

  XML 正在數量驚人的應用程序中使用,範圍從 Web 站點創建和文檔化到數據庫集成和分佈式編程。在下面幾個領域中,XML 有其用武之地:

  業務對業務的傳輸。業務數據(發票、購買定單、會計和稅務信息等等)是以 XML 格式在廠商之間電子傳輸的。與舊的電子數據交換 (EDI) 格式相比,XML 提供了許多優點,而不僅僅是可以在傳輸中從一種發票格式轉換到另一種。

  分佈式編程。XML 是非常理想的複雜多平臺應用程序構造方案,這樣就使得 Windows 服務器和其他操作系統的集成成爲可能。

Web 站點體系結構。由於 XML 的層次結構和分佈式特性,Web 站點開發人員在他們 Web 站點的總體體系結構和導航結構中越來越多地使用它。此外,越來越多的目錄表和索引表、跟蹤用戶信息及 Web 站點狀態的 XML 結構、基於 HTML 的組件和處理數據流的渠道,都用 XML 和 XSLT 編寫。

  數據庫操作。XML 正成爲與數據庫交互的流行工具 — 無論從 SQL 查詢中檢索 XML 數據集,還是用 XML 記錄更新數據庫。而且我們還有分離實現的優點。通過將數據壓縮爲 SML,就不需要對實際的數據庫結構有任何瞭解。

  文檔管理。目前的大多數公司都陷在文書工作的海洋裏,而且會越來越糟。XML 正在越來越多地用於將文檔編碼成 XML,使文檔更易於檢索或提供鏈接到文檔的註釋上下文,以便更有效地進行參考。

  我可以忽略 XML 嗎?

  如果您想在 Internet 世界中競爭的話,那就不可以忽略 XML。XML 是導致以我們考慮編程本身的方式進行模式轉移的一種語言。傳統的專用客戶機/服務器應用程序,正在給“隨時隨地訪問”的 Internet 服務讓位,XML 是處理任何事情(從數據訪問處理到在該新環境中表現數據)的邏輯媒體。

  Microsoft Internet Explorer 4.0 支持 XML 嗎?

  是的。Internet Explorer 4.0 支持 XML 下列功能:

  通用的 XML 分析器,它讀取 XML 文件並將它們傳遞到應用程序(例如查看器)進行處理。應用程序開發人員可以使用 Microsoft 的兩個分析器:C++ 中的 Microsoft XML 分析和 Java 中的 Microsoft XML 分析器。

  XML 對象模型 (XML OM) 使用 World Wide Web Consortium (W3C) 標準文檔對象模型 (DOM) 允許程序通過 XML 分析器訪問結構化數據,使開發人員擁有交互和計算數據的能力。有關詳細信息,請參見 DOM 規範(英文) 。

  XML 數據源對象 (XML DSO) 允許開發人員連接到結構化 XML 數據,並用動態 HTML 的數據綁定機制將它提供給 HTML 頁面。

 

一.XML語法規則
二.元素的語法
三.註釋的語法
四.CDATA的語法
五.Namespaces的語法
六.entity的語法
七.DTD的語法

通過前面三章的學習,我們已經對什麼是XML,它的實現原理以及相關的術語有所瞭解。接下來我們就開始學習XML的語法規範,動手寫自己的XML文檔。

一.XML語法規則

XML的文檔和HTML的原代碼類似,也是用標識來標識內容。創建XML文檔必須遵守下列重要規則:
規則1:必須有XML聲明語句
這一點我們在上一章學習時已經提到過。聲明是XML文檔的第一句,其格式如下:
<?xml version="1.0" standalone="yes/no" encoding="UTF-8"?>
聲明的作用是告訴瀏覽器或者其它處理程序:這個文檔是XML文檔。聲明語句中的version表示文檔遵守的XML規範的版本;standalone表示文檔是否附帶DTD文件,如果有,參數爲no;encoding表示文檔所用的語言編碼,默認是UTF-8。

規則2:是否有DTD文件
如果文檔是一個"有效的XML文檔"(見上一章),那麼文檔一定要有相應DTD文件,並且嚴格遵守DTD文件制定的規範。DTD文件的聲明語句緊跟在XML聲明語句後面,格式如下:
<!DOCTYPE type-of-doc SYSTEM/PUBLIC "dtd-name">
其中:
"!DOCTYPE"是指你要定義一個DOCTYPE;
"type-of-doc"是文檔類型的名稱,由你自己定義,通常於DTD文件名相同;
"SYSTEM/PUBLIC"這兩個參數只用其一。SYSTEM是指文檔使用的私有DTD文件的網址,而PUBLIC則指文檔調用一個公用的DTD文件的網址。
"dtd-name" 就是DTD文件的網址和名稱。所有DTD文件的後綴名爲".dtd"。
我們還是用上面的例子,應該寫成這樣:
<?xml version="1.0" standalone="no" encode="UTF-8"?>
<!DOCTYPE filelist SYSTEM "filelist.dtd">

規則3:注意你的大小寫
在XML文檔中,大小寫是有區別的。<P>和<p>是不同的標識。注意在寫元素時,前後標識大小寫要保持一樣。例如:<Author>ajie</Author>,寫成<Author>ajie</author>是錯誤的。
你最好養成一種習慣,或者全部大寫,或者全部小寫,或者大寫第一個字母。這樣可以減少因爲大小寫不匹配產生的文檔錯誤。

規則4:給屬性值加引號
在HTML代碼裏面,屬性值可以加引號,也可以不加。例如:<font color=red>word</font>和<font color="red">word</font>都可以被瀏覽器正確解釋。
但是在XML中則規定,所有屬性值必須加引號(可以是單引號,也可以是雙引號),否則將被視爲錯誤。

規則5:所有的標識必須有相應的結束標識
在HTML中,標識可能不是成對出現的,比?lt;br>。而在XML中規定,所有標識必須成對出現,有一個開始標識,就必須有一個結束標識。否則將被視爲錯誤。

規則6:所有的空標識也必須被關閉
空標識就是標識對之間沒有內容的標識。比如<br>,<img>等標識。在XML中,規定所有的標識必須有結束標識,針對這樣的空標識,XML中處理的方法是在原標識最後加/,就可以了。例如:
<br>應寫爲<br />;
<META name="keywords" content="XML, SGML, HTML">應寫爲<META name="keywords" content="XML, SGML, HTML" />;
<IMG src= "cool.gif">應寫爲<IMG src= "cool.gif" />

二.元素的語法

元素由一對標識以及其中的內容組成。就象這樣:ajie。元素的名稱和標識的名稱是一樣的。標識可以用屬性來進一步描述。

在XML中,沒有任何保留字,所以你可以隨心所欲的用任何詞語來作爲元素名稱。但是也必須遵守下列規範:

1.名稱中可以包含字母、數字以及其它字母;

2.名稱不能以數字或"_" (下劃線)開頭;

3.名稱不能以字母 xml(或 XML 或 Xml ..)開頭

4.名稱中不能包含空格

5.名稱中間不能包含":"(冒號)

爲了使元素更容易閱讀理解和操作,我們還有一些建議:

1.名稱中不要使用"."。因爲在很多程序語言中,"."是作爲對象的屬性,例如:font.color。同樣的原因"-"也最好不要用,必須使用的,以"_"代替;

2.名稱儘量簡短。

3.名稱的大小寫儘量採用同一標準。

4.名稱可以使用非英文字符,比如用中文。但是有些軟件可能不支持。(IE5目前是支持中文元素的。)

另外,補充一點關於屬性的說明。在HTML中,屬性可以用來定義元素的顯示格式,比如:<font color="red">word</font>將把word顯示爲紅色。而在XML中,屬性只是對標識的描述,與元素內容的顯示無關。例如同樣一句:<font color="red">word</font>,並不會將word顯示爲紅色。(那麼,有網友會問:如何在XML中將文字顯示爲紅色呢?這就需要使用CSS或者XSL,我們在下面詳細講述。)

三.註釋的語法

註釋是爲了便於閱讀和理解,在XML文檔添加的附加信息,將不會被程序解釋或則瀏覽器顯示。

註釋的語法如下:

<!-- 這裏是註釋信息 -->

可以看到,它和HTML中的註釋語法是一樣的,非常容易。養成良好的註釋習慣將使你的文檔更加便於維護,共享,看起來也更專業。

四.CDATA的語法

CDATA全稱character data,翻譯爲字符數據。我們在寫XML文檔時,有時需要顯示字母,數字和其它的符號本身,比如"<",而在XML中,這些字符已經有特殊的含義,我們怎麼辦呢?這就需要用到CDATA語法。語法格式如下:

<![CDATA[這裏放置需要顯示的字符]]>

例如:

<![CDATA[<AUTHOR sex="female">ajie</AUTHOR>]]>

在頁面上顯示的內容將是"<AUTHOR sex="female">ajie</AUTHOR>"

五.Namespaces的語法

Namespaces翻譯爲名字空間。名字空間有什麼作用呢?當我們在一個XML文檔中使用他人的或者多個DTD文件,就會出現這樣的矛盾:因爲XML中標識都是自己創建的,在不同的DTD文件中,標識名可能相同但表示的含義不同,這就可能引起數據混亂。
比如在一個文檔<table>wood table</table>中<table>表示桌子,
而在另一個文檔<table>namelist</table>中<table>表示表格。如果我需要同時處理這兩個文檔,就會發生名字衝突。
瞭解決這個問題,我們引進了namespaces這個概念。namespaces通過給標識名稱加一個網址(URL)定位的方法來區別這些名稱相同的標識。
Namespaces同樣需要在XML文檔的開頭部分聲明,聲明的語法如下:
<document xmlns:yourname='URL'>
其中yourname是由你定義的namespaces的名稱,URL就是名字空間的網址。
假設上面的"桌子<table>"文檔來自http://www.zhuozi.com,我們就可以聲明爲
<document xmlns:zhuozi='http://www.zhuozi.com'>
然後在後面的標識中使用定義好的名字空間:
<zhuozi:table>wood table</table>
這樣就將這兩個<table>區分開來。注意的是:設置URL並不是說這個標識真的要到那個網址去讀取,僅僅作爲一種區別的標誌而已。

六.entity的語法

entity翻譯爲"實體"。它的作用類似word中的"宏",也可以理解爲DW中的摸板,你可以預先定義一個entity,然後在一個文檔中多次調用,或者在多個文檔中調用同一個entity。
entity可以包含字符,文字等等,使用entity的好處在於:1.它可以減少差錯,文檔中多個相同的部分只需要輸入一遍就可以了。2.它提高維護效率。比如你有40個文檔都包含copyright的entity,如果需要修改這個copyright,不需要所有的文件都修改,只要改最初定義的entity語句就可以了。
XML定義了兩種類型的entity。一種是我們這裏說的普通entity,在XML文檔中使用;另一種是參數entity,在DTD文件中使用。
entity的定義語法爲:
<!DOCTYPE filename [
<!ENTITY entity-name "entity-content"
]
>
例如我要定義一段版權信息:
<!DOCTYPE copyright [
<!ENTITY copyright "Copyright 2001, Ajie. All rights reserved"
]
>
如果我的版權信息內容和他人共享一個XML文件,也可以使用外部調用的方法,語法象這樣:
<!DOCTYPE copyright [
<!ENTITY copyright SYSTEM "http://www.sample.com/copyright.xml">
]
>
定義好的entity在文檔中的引用語法爲:&entity-name;
例如,上面定義的版權信息,調用時寫作?copyright;
完整的例子如下,你可以copy下來存爲copyright.xml觀看實例:
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE copyright [
<!ENTITY copyright "Copyright 2001, Ajie. All rights reserved">
]>
<myfile>
<title>XML</title>
<author>ajie</author>
<email>[email protected]</email>
<date>20010115</date>
©right;
</myfile>

七.DTD的語法

DTD是"有效XML文檔"的必須文件,我們通過DTD文件來定義文檔中元素和標識的規則及相互關係。如何建立一個DTD文件呢?讓我們一起來學習:

1.設置元素

元素是XML文檔的基本組成部分。你要在DTD中定義一個元素,然後在XML文檔中使用。元素的定義語法爲:<!ELEMENT DESCRIPTION (#PCDATA, DEFINITION)*>

說明:

"<!ELEMENT" 是元素的聲明,說明你要定義的是一個元素;

聲明後面的"DESCRIPTION",是元素的名稱;

"(#PCDATA, DEFINITION)*>"則是該元素的使用規則。規則定義了元素可以包含的內容以及相互的關係。下面的表格概要列出了元素的規則:

2.元素規則表:

Symbol

含義

舉例

#PCDATA

包含字符或文本數據

<MYFILE(#PCDATA)>
元素MYFILE包含一個文本數據

#PCDATA, element-name

包含文本和其它子元素

<MYFILE(#PCDTATA,TITLE)>
MYFILE元素必須包含文本和TITLE子元素

,

使用逗號分隔排序

<MYFILE (TITLE,AUTHOR,EMAIL)>
MYFILE元素必須依次包含TITILE,AUTHOR,EMAIL三個子元素

|

使用"|"表示或者

<MYFILE (TITLE | AUTHOR | EMAIL)>
MYFILE元素必須包含TITLE,或者AUTHOR或者EMAIL子元素。

name

只能使用一次

<MYFILE (TITLE)>
MYFILE元素必須包含TITLE子元素,而且只能使用一次。

name?

使用一次或者不使用

<MYFILE (TITLE,AUTHOR?,EMAIL?)>
MYFILE元素必須包含TITLE子元素,而且只能使用一次;可以包含或者不包含AUTHOR和EMAIL子元素,但是如果使用,只能一次。

name+

使用至少一次或多次

<MYFILE (TITLE+,AUTHOR?,EMAIL)>
MYFILE元素必須包含TITLE子元素,而且使用至少一次;接下來可以跟隨AUTHOR子元素,也可以不跟;最後必須包含EMAIL子元素,而且只能使用一次。

name*

使用一次,多次,或者根本不使用

<MYFILE (TITLE*)>
MYFILE元素可以包含一個,多個或者不包含TITLE子元素

( )

設置組,可以嵌套

<MYFILE(#PCDATA | TITLE)*>
元素MYFILE包含一個或者更多的文本或者TITLE子元素。

<MYFILE((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>
MYFILE元素必須包含一些內容,內容或者是一個註釋;也或者是多個組,組裏包含:一個,多個或者沒有TITLE子元素,接着是一個或者沒有AUTHOR子元素,再接着是一個必須的EMAIL子元素。



另外,我們還可以爲元素定義屬性,因爲我們不推薦使用屬性,在這裏就不詳細展開了。

 最後,我們來總結一些前四章學習的內容,寫一個包含DTD,XML,以及Script的簡單實例,便於讀者理解:
1.將下面文件存爲myfile.dtd
<!ELEMENT myfile (title, author)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>

2.然後建立XML文檔myfile.xml:
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE myfile SYSTEM "myfile.dtd">
<myfile>
<title>XML輕鬆學習手冊</title>
<author>ajie</author>
</myfile>

3.建立HTML文檔myfile.html
<html>
<head>
<script language="JavaScript" for="window" event="onload">
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("myfile.xml");
nodes = xmlDoc.documentElement.childNodes;
title.innerText = nodes.item(0).text;
author.innerText = nodes.item(1).text;
</script>
<title>在HTML中調用XML數據</title>
</head>
<body bgcolor="#FFFFFF">
<b>標題: </b>
<span id="title"></span><br>
<b>作者: </b>
<span id="author"></span><br>
</body>
</html>

4.用IE5.0以上瀏覽器打開myfile.html就可以看到效果了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章