http://www.w3school.com.cn/x.asp
XML 簡介
XML 被設計用來傳輸和存儲數據。
HTML 被設計用來顯示數據。
應該掌握的基礎知識:
在您繼續學習之前,需要對以下知識有基本的瞭解:
-
HTML / XHTML
-
JavaScript
如果您希望首先學習這些項目,請在我們的首頁 訪問這些教程。
什麼是 XML?
-
XML 指可擴展標記語言(EXtensibleMarkupLanguage)
-
XML 是一種標記語言,很類似HTML
-
XML 的設計宗旨是傳輸數據,而非顯示數據
-
XML 標籤沒有被預定義。您需要自行定義標籤。
-
XML 被設計爲具有自我描述性。
-
XML 是 W3C 的推薦標準
XML 與 HTML的主要差異
XML 不是 HTML 的替代。
XML 和 HTML 爲不同的目的而設計:
XML 被設計爲傳輸和存儲數據,其焦點是數據的內容。
HTML 被設計用來顯示數據,其焦點是數據的外觀。
HTML 旨在顯示信息,而 XML旨在傳輸信息。
沒有任何行爲的XML
XML 是不作爲的。
也許這有點難以理解,但是 XML不會做任何事情。XML被設計用來結構化、存儲以及傳輸信息。
下面是 John 寫給George 的便籤,存儲爲 XML:
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
上面的這條便籤具有自我描述性。它擁有標題以及留言,同時包含了發送者和接受者的信息。
但是,這個 XML文檔仍然沒有做任何事情。它僅僅是包裝在XML標籤中的純粹的信息。我們需要編寫軟件或者程序,才能傳送、接收和顯示出這個文檔。
XML 僅僅是純文本
XML 沒什麼特別的。它僅僅是純文本而已。有能力處理純文本的軟件都可以處理XML。
不過,能夠讀懂 XML的應用程序可以有針對性地處理XML的標籤。標籤的功能性意義依賴於應用程序的特性。
通過 XML您可以發明自己的標籤
上例中的標籤沒有在任何 XML標準中定義過(比如<to>和<from>)。這些標籤是由文檔的創作者發明的。
這是因爲 XML 沒有預定義的標籤。
在 HTML 中使用的標籤(以及HTML 的結構)是預定義的。HTML文檔只使用在HTML標準中定義過的標籤(比如<p> 、<h1> 等等)。
XML 允許創作者定義自己的標籤和自己的文檔結構。
XML 不是對 HTML的替代
XML 是對 HTML的補充。
XML 不會替代 HTML,理解這一點很重要。在大多數web應用程序中,XML用於傳輸數據,而HTML用於格式化並顯示數據。
對 XML 最好的描述是:
XML 是獨立於軟件和硬件的信息傳輸工具。
XML 是 W3C 的推薦標準
可擴展標記語言 (XML) 於1998 年 2 月10 日成爲 W3C 的推薦標準。
如需有關 W3C XML活動的更多信息,請訪問我們的W3C教程。
XML 無所不在
當我們看到 XML標準突飛猛進的開發進度,以及大批的軟件開發商採用這個標準的日新月異的速度時,真的是不禁感嘆這真是令人歎爲觀止。
目前,XML 在Web 中起到的作用不會亞於一直作爲Web 基石的 HTML。
XML 無所不在。XML是各種應用程序之間進行數據傳輸的最常用的工具,並且在信息存儲和描述領域變得越來越流行。
ML 應用於web開發的許多方面,常用於簡化數據的存儲和共享。
XML 把數據從 HTML分離
如果你需要在 HTML文檔中顯示動態數據,那麼每當數據改變時將花費大量的時間來編輯HTML。
通過 XML,數據能夠存儲在獨立的XML文件中。這樣你就可以專注於使用HTML進行佈局和顯示,並確保修改底層數據不再需要對HTML 進行任何的改變。
通過使用幾行 JavaScript,你就可以讀取一個外部XML文件,然後更新HTML中的數據內容。
提示:您將在稍後的章節學習更多這方面的內容。
XML 簡化數據共享
在真實的世界中,計算機系統和數據使用不兼容的格式來存儲數據。
XML 數據以純文本格式進行存儲,因此提供了一種獨立於軟件和硬件的數據存儲方法。
這讓創建不同應用程序可以共享的數據變得更加容易。
XML 簡化數據傳輸
通過 XML,可以在不兼容的系統之間輕鬆地交換數據。
對開發人員來說,其中一項最費時的挑戰一直是在因特網上的不兼容系統之間交換數據。
由於可以通過各種不兼容的應用程序來讀取數據,以XML 交換數據降低了這種複雜性。
XML 簡化平臺的變更
升級到新的系統(硬件或軟件平臺),總是非常費時的。必須轉換大量的數據,不兼容的數據經常會丟失。
XML 數據以文本格式存儲。這使得XML 在不損失數據的情況下,更容易擴展或升級到新的操作系統、新應用程序或新的瀏覽器。
XML 使您的數據更有用
由於 XML 獨立於硬件、軟件以及應用程序,XML使您的數據更可用,也更有用。
不同的應用程序都能夠訪問您的數據,不僅僅在HTML 頁中,也可以從 XML數據源中進行訪問。
通過XML,您的數據可供各種閱讀設備使用(手持的計算機、語音設備、新聞閱讀器等),還可以供盲人或其他殘障人士使用。
XML 用於創建新的Internet語言
很多新的 Internet 語言是通過XML 創建的:
其中的例子包括:
-
XHTML - 最新的HTML版本
-
WSDL - 用於描述可用的web service
-
WAP 和WML -用於手持設備的標記語言
-
RSS - 用於RSS feed的語言
-
RDF 和OWL -用於描述資源和本體
-
SMIL - 用於描述針針對 web的多媒體
假如開發人員都是理性的
假如他們都是理性的,就讓未來的應用程序使用XML來交換數據吧。
未來也許會出現某種字處理軟件、電子表格程序以及數據庫,它們可以使用純文本格式讀取彼此的數據,而不需要使用任何的轉換程序。
我們現在能做的只有祈禱微軟公司和所有其他的軟件開發商在這一方面取得一致了。
XML 文檔形成了一種樹結構,它從“根部”開始,然後擴展到“枝葉”。
一個 XML 文檔實例
XML 使用簡單的具有自我描述性的語法:
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
第一行是 XML 聲明。它定義XML 的版本 (1.0) 和所使用的編碼(ISO-8859-1 = Latin-1/西歐字符集)。
下一行描述文檔的根元素(像在說:“本文檔是一個便籤”):
<note>
接下來 4 行描述根的4 個子元素(to,from, heading以及body):
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
最後一行定義根元素的結尾:
</note>
從本例可以設想,該 XML 文檔包含了John 給 George 的一張便籤。
XML 具有出色的自我描述性,你同意嗎?
XML 文檔形成一種樹結構
XML 文檔必須包含根元素。該元素是所有其他元素的父元素。
XML 文檔中的元素形成了一棵文檔樹。這棵樹從根部開始,並擴展到樹的最底端。
所有元素均可擁有子元素:
<root>
<child>
<subchild>.....</subchild>
</child>
</root>
父、子以及同胞等術語用於描述元素之間的關係。父元素擁有子元素。相同層級上的子元素成爲同胞(兄弟或姐妹)。
所有元素均可擁有文本內容和屬性(類似HTML 中)。
實例
上圖表示下面的 XML 中的一本書:
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
例子中的根元素是 <bookstore>。文檔中的所有<book>元素都被包含在<bookstore>中。
<book> 元素有 4個子元素:<title>、<author>、<year>、<price>。
XML 的語法規則很簡單,且很有邏輯。這些規則很容易學習,也很容易使用。
所有 XML元素都須有關閉標籤
在 HTML,經常會看到沒有關閉標籤的元素:
<p>This is a paragraph
<p>This is another paragraph
在 XML 中,省略關閉標籤是非法的。所有元素都必須有關閉標籤:
<p>This is a paragraph</p>
<p>This is another paragraph</p>
註釋:您也許已經注意到 XML聲明沒有關閉標籤。這不是錯誤。聲明不屬於XML本身的組成部分。它不是XML元素,也不需要關閉標籤。
XML 標籤對大小寫敏感
XML 元素使用 XML 標籤進行定義。
XML 標籤對大小寫敏感。在 XML中,標籤<Letter>與標籤<letter> 是不同的。
必須使用相同的大小寫來編寫打開標籤和關閉標籤:
<Message>這是錯誤的。</message>
<message>這是正確的。</message>
註釋:打開標籤和關閉標籤通常被稱爲開始標籤和結束標籤。不論您喜歡哪種術語,它們的概念都是相同的。
XML 必須正確地嵌套
在 HTML 中,常會看到沒有正確嵌套的元素:
<b><i>This text is bold and italic</b></i>
在 XML 中,所有元素都必須彼此正確地嵌套:
<b><i>This text is bold and italic</i></b>
在上例中,正確嵌套的意思是:由於<i> 元素是在 <b>元素內打開的,那麼它必須在 <b>元素內關閉。
XML 文檔必須有根元素
XML 文檔必須有一個元素是所有其他元素的父元素。該元素稱爲根元素。
<root>
<child>
<subchild>.....</subchild>
</child>
</root>
XML 的屬性值須加引號
與 HTML 類似,XML也可擁有屬性(名稱/值的對)。
在 XML 中,XML的屬性值須加引號。請研究下面的兩個XML 文檔。第一個是錯誤的,第二個是正確的:
<note date=08/08/2008>
<to>George</to>
<from>John</from>
</note>
<note date="08/08/2008"
>
<to>George</to>
<from>John</from>
</note>
在第一個文檔中的錯誤是,note元素中的date屬性沒有加引號。
實體引用
在 XML 中,一些字符擁有特殊的意義。
如果你把字符 "<"放在XML元素中,會發生錯誤,這是因爲解析器會把它當作新元素的開始。
這樣會產生 XML 錯誤:
<message>if salary < 1000 then</message>
爲了避免這個錯誤,請用實體引用來代替"<" 字符:
<message>if salary <
1000 then</message>
在 XML 中,有5 個預定義的實體引用:
< |
< |
小於 |
> |
> |
大於 |
& |
& |
和號 |
' |
' |
單引號 |
" |
" |
引號 |
註釋:在 XML 中,只有字符"<" 和 "&"確實是非法的。大於號是合法的,但是用實體引用來代替它是一個好習慣。
XML 中的註釋
在 XML 中編寫註釋的語法與HTML 的語法很相似:
<!-- This is a comment -->
在 XML 中,空格會被保留
HTML 會把多個連續的空格字符裁減(合併)爲一個:
HTML: Hello my name is David.
輸出: Hello my name is David.
在 XML 中,文檔中的空格不會被刪節。
XML 以 LF 存儲換行
在 Windows應用程序中,換行通常以一對字符來存儲:回車符(CR)和換行符(LF)。這對字符與打字機設置新行的動作有相似之處。在Unix應用程序中,新行以LF字符存儲。而Macintosh 應用程序使用CR 來存儲新行。XML文檔包含XML元素。
什麼是 XML 元素?
XML 元素指的是從(且包括)開始標籤直到(且包括)結束標籤的部分。
元素可包含其他元素、文本或者兩者的混合物。元素也可以擁有屬性。
<bookstore>
<book category="CHILDREN">
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title>Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
在上例中,<bookstore> 和<book> 都擁有元素內容,因爲它們包含了其他元素。<author>只有文本內容,因爲它僅包含文本。
在上例中,只有 <book>元素擁有屬性(category="CHILDREN")。
XML 命名規則
XML 元素必須遵循以下命名規則:
-
名稱可以含字母、數字以及其他的字符
-
名稱不能以數字或者標點符號開始
-
名稱不能以字符“xml”(或者XML、Xml)開始
-
名稱不能包含空格
可使用任何名稱,沒有保留的字詞。
最佳命名習慣
使名稱具有描述性。使用下劃線的名稱也很不錯。
名稱應當比較簡短,比如:<book_title>,而不是:<the_title_of_the_book>。
避免 "-"字符。如果您按照這樣的方式進行命名:"first-name",一些軟件會認爲你需要提取第一個單詞。
避免 "."字符。如果您按照這樣的方式進行命名:"first.name",一些軟件會認爲"name"是對象"first"的屬性。
避免 ":"字符。冒號會被轉換爲命名空間來使用(稍後介紹)。
XML 文檔經常有一個對應的數據庫,其中的字段會對應XML 文檔中的元素。有一個實用的經驗,即使用數據庫的名稱規則來命名XML 文檔中的元素。
非英語的字母比如 éòá也是合法的XML元素名,不過需要留意當軟件開發商不支持這些字符時可能出現的問題。
XML 元素是可擴展的
XML 元素是可擴展,以攜帶更多的信息。
請看下面這個 XML 例子:
<note>
<to>George</to>
<from>John</from>
<body>Don't forget the meeting!</body>
</note>
讓我們設想一下,我們創建了一個應用程序,可將<to>、<from>以及<body>元素提取出來,併產生以下的輸出:
MESSAGE
To: George
From: John
Don't forget the meeting!
想象一下,之後這個XML文檔作XML元素可以在開始標籤中包含屬性,類似HTML。
屬性 (Attribute)提供關於元素的額外(附加)信息。
XML 屬性
從 HTML,你會回憶起這個:<imgsrc="computer.gif">。"src"屬性提供有關<img>元素的額外信息。
在 HTML 中(以及在XML 中),屬性提供有關元素的額外信息:
<img src="computer.gif">
<a href="demo.asp">
屬性通常提供不屬於數據組成部分的信息。在下面的例子中,文件類型與數據無關,但是對需要處理這個元素的軟件來說卻很重要:
<file type="gif">computer.gif</file>
XML 屬性必須加引號
屬性值必須被引號包圍,不過單引號和雙引號均可使用。比如一個人的性別,person標籤可以這樣寫:
<person sex="female">
或者這樣也可以:
<person sex='female'>
註釋:如果屬性值本身包含雙引號,那麼有必要使用單引號包圍它,就像這個例子:
<gangster name='George "Shotgun" Ziegler'>
或者可以使用實體引用:
<gangster name="George "Shotgun" Ziegler">
XML 元素 vs. 屬性
請看這些例子:
<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
在第一個例子中,sex是一個屬性。在第二個例子中,sex則是一個子元素。兩個例子均可提供相同的信息。
沒有什麼規矩可以告訴我們什麼時候該使用屬性,而什麼時候該使用子元素。我的經驗是在HTML中,屬性用起來很便利,但是在XML中,您應該儘量避免使用屬性。如果信息感覺起來很像數據,那麼請使用子元素吧。
我最喜歡的方式
下面的三個 XML 文檔包含完全相同的信息:
第一個例子中使用了 date屬性:
<note date="08/08/2008"
>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
第二個例子中使用了 date 元素:
<note><date>08/08/2008</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
第三個例子中使用了擴展的 date元素(這是我的最愛):
<note><date>
<day>08</day>
<month>08</month>
<year>2008</year>
</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
避免 XML 屬性?
因使用屬性而引起的一些問題:
-
屬性無法包含多重的值(元素可以)
-
屬性無法描述樹結構(元素可以)
-
屬性不易擴展(爲未來的變化)
-
屬性難以閱讀和維護
請儘量使用元素來描述數據。而僅僅使用屬性來提供與數據無關的信息。
不要做這樣的蠢事(這不是 XML應該被使用的方式):
<note day="08" month="08" year="2008"
to="George" from="John" heading="Reminder"
body="Don't forget the meeting!">
</note>
針對元數據的 XML 屬性
有時候會向元素分配 ID引用。這些ID索引可用於標識XML 元素,它起作用的方式與HTML 中 ID屬性是一樣的。這個例子向我們演示了這種情況:
<messages>
<note id="501"
>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
<note id="502"
>
<to>John</to>
<from>George</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>
上面的 ID僅僅是一個標識符,用於標識不同的便籤。它並不是便籤數據的組成部分。
在此我們極力向您傳遞的理念是:元數據(有關數據的數據)應當存儲爲屬性,而數據本身應當存儲爲元素。
者又向這個文檔添加了一些額外的信息:
<note>
<date>2008-08-08</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
那麼這個應用程序會中斷或崩潰嗎?
不會。這個應用程序仍然可以找到XML 文檔中的 <to>、<from>以及<body>元素,併產生同樣的輸出。
XML 的優勢之一,就是可以經常在不中斷應用程序的情況進行擴展。
屬性 (Attribute)提供關於元素的額外(附加)信息。
XML 屬性
從 HTML,你會回憶起這個:<imgsrc="computer.gif">。"src"屬性提供有關<img>元素的額外信息。
在 HTML 中(以及在XML 中),屬性提供有關元素的額外信息:
<img src="computer.gif"> <a href="demo.asp">
屬性通常提供不屬於數據組成部分的信息。在下面的例子中,文件類型與數據無關,但是對需要處理這個元素的軟件來說卻很重要:
<file type="gif">computer.gif</file>
XML 屬性必須加引號
屬性值必須被引號包圍,不過單引號和雙引號均可使用。比如一個人的性別,person標籤可以這樣寫:
<person sex="female">
或者這樣也可以:
<person sex='female'>
註釋:如果屬性值本身包含雙引號,那麼有必要使用單引號包圍它,就像這個例子:
<gangster name='George "Shotgun" Ziegler'>
或者可以使用實體引用:
<gangster name="George "Shotgun" Ziegler">
XML 元素 vs. 屬性
請看這些例子:
<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
在第一個例子中,sex是一個屬性。在第二個例子中,sex則是一個子元素。兩個例子均可提供相同的信息。
沒有什麼規矩可以告訴我們什麼時候該使用屬性,而什麼時候該使用子元素。我的經驗是在HTML中,屬性用起來很便利,但是在XML中,您應該儘量避免使用屬性。如果信息感覺起來很像數據,那麼請使用子元素吧。
我最喜歡的方式
下面的三個 XML 文檔包含完全相同的信息:
第一個例子中使用了 date屬性:
<note date="08/08/2008"
>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
第二個例子中使用了 date 元素:
<note><date>08/08/2008</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
第三個例子中使用了擴展的 date元素(這是我的最愛):
<note><date>
<day>08</day>
<month>08</month>
<year>2008</year>
</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
避免 XML 屬性?
因使用屬性而引起的一些問題:
-
屬性無法包含多重的值(元素可以)
-
屬性無法描述樹結構(元素可以)
-
屬性不易擴展(爲未來的變化)
-
屬性難以閱讀和維護
請儘量使用元素來描述數據。而僅僅使用屬性來提供與數據無關的信息。
不要做這樣的蠢事(這不是 XML應該被使用的方式):
<note day="08" month="08" year="2008"
to="George" from="John" heading="Reminder"
body="Don't forget the meeting!">
</note>
針對元數據的 XML 屬性
有時候會向元素分配 ID引用。這些ID索引可用於標識XML 元素,它起作用的方式與HTML 中 ID屬性是一樣的。這個例子向我們演示了這種情況:
<messages>
<note id="501"
>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
<note id="502"
>
<to>John</to>
<from>George</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>
上面的 ID僅僅是一個標識符,用於標識不同的便籤。它並不是便籤數據的組成部分。
在此我們極力向您傳遞的理念是:元數據(有關數據的數據)應當存儲爲屬性,而數據本身應當存儲爲元素。
XML 命名空間提供避免元素命名衝突的方法。
命名衝突
在 XML 中,元素名稱是由開發者定義的,當兩個不同的文檔使用相同的元素名時,就會發生命名衝突。
這個 XML 文檔攜帶着某個表格中的信息:
<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr></table>
這個 XML 文檔攜帶有關桌子的信息(一件傢俱):
<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length></table>
假如這兩個 XML 文檔被一起使用,由於兩個文檔都包含帶有不同內容和定義的 <table> 元素,就會發生命名衝突。
XML 解析器無法確定如何處理這類衝突。
使用前綴來避免命名衝突
此文檔帶有某個表格中的信息:
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr></h:table>
此 XML 文檔攜帶着有關一件傢俱的信息:
<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length></f:table>
現在,命名衝突不存在了,這是由於兩個文檔都使用了不同的名稱來命名它們的 <table> 元素 (<h:table> 和 <f:table>)。
通過使用前綴,我們創建了兩種不同類型的 <table> 元素。
使用命名空間(Namespaces)
這個 XML 文檔攜帶着某個表格中的信息:
<h:table xmlns:h="http://www.w3.org/TR/html4/"
>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
此 XML 文檔攜帶着有關一件傢俱的信息:
<f:table xmlns:f="http://www.w3school.com.cn/furniture"
>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
與僅僅使用前綴不同,我們爲 <table> 標籤添加了一個 xmlns 屬性,這樣就爲前綴賦予了一個與某個命名空間相關聯的限定名稱。
XML Namespace (xmlns) 屬性
XML 命名空間屬性被放置於元素的開始標籤之中,並使用以下的語法:
xmlns:namespace-prefix="namespaceURI"
當命名空間被定義在元素的開始標籤中時,所有帶有相同前綴的子元素都會與同一個命名空間相關聯。
註釋:用於標示命名空間的地址不會被解析器用於查找信息。其惟一的作用是賦予命名空間一個惟一的名稱。不過,很多公司常常會作爲指針來使用命名空間指向實際存在的網頁,這個網頁包含關於命名空間的信息。
統一資源標識符(Uniform Resource Identifier (URI))
統一資源標識符是一串可以標識因特網資源的字符。最常用的 URI 是用來標示因特網域名地址的統一資源定位器(URL)。另一個不那麼常用的 URI 是統一資源命名(URN)。在我們的例子中,我們僅使用 URL。
默認的命名空間(Default Namespaces)
爲元素定義默認的命名空間可以讓我們省去在所有的子元素中使用前綴的工作。
請使用下面的語法:
xmlns="namespaceURI"
這個 XML 文檔攜帶着某個表格中的信息:
<table xmlns="http://www.w3.org/TR/html4/"
>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
此 XML 文檔攜帶着有關一件傢俱的信息:
<table xmlns="http://www.w3school.com.cn/furniture"
>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
命名空間的實際應用
當開始使用 XSL 時,您不久就會看到實際使用中的命名空間。XSL 樣式表用於將 XML 文檔轉換爲其他格式,比如 HTML。
如果您仔細觀察下面的這個 XSL 文檔,就會看到大多數的標籤是HTML標籤。非 HTML 的標籤都有前綴 xsl,並由此命名空間標示:"http://www.w3.org/1999/XSL/Transform":
<?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
><xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr>
<th align="left">Title</th>
<th align="left">Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template></xsl:stylesheet>