xml 總結(一)資料島,命名空間

來源:互聯網
上載者:User
文章目錄
  • CDATA注意事項:

 

一.資料島技術

XML資料可以以資料島的形式嵌入HTML頁面。

XML資料可以象下面的例子那樣嵌入HTML頁面:

<xml id="note"><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note></xml>

或者象下面這樣嵌入外部單獨的XML檔案:

<xml id="note" src="note.xml"></xml>

注意那個<xml>標記是一個HTML元素,而不是一個XML元素。

 

 

資料繫結

XML資料島可以綁定到HTML元素上(比如表格)。

在下面的例子中,一個XML資料島(ID=cdcat)被從外部XML文檔載入。一個HTML的表格綁定到此資料島上。HTML表格內部的span元素使用datafld屬性和XML文檔相應的XML元素相互綁定。

<html><body><xml id="cdcat" src="cd_catalog.xml"></xml><table border="1" datasrc="#cdcat"><tr><td><span datafld="ARTIST"></span></td><td><span datafld="TITLE"></span></td></tr></table></body></html> 

 

把資料島綁定到<span> 或者<div> 元素上

<span>或<div>元素都可以用來顯示XML資料。

沒有必要使用table元素來顯示XML資料,資料可以通過資料島綁定到任何一個HTML元素上。

所要做的就是在你得頁面中添加一些<span> 或者<div>元素,使用資料資源屬性把每一個元素和XML文件項目綁定起來,就象下面這樣:

<br />Title:<span datasrc="#xmldso" datafld="TITLE"></span><br />Artist:<span datasrc="#xmldso" datafld="ARTIST"></span><br />Year:<span datasrc="#xmldso" datafld="YEAR"></span>

或者象這樣的形式:

<br />Title:<div datasrc="#xmldso" datafld="TITLE"></div><br />Artist:<div datasrc="#xmldso" datafld="ARTIST"></div><br />Year:<div datasrc="#xmldso" datafld="YEAR"></div>

注意如果你使用<div>元素,資料將會顯示在新的一行裡。

上面的例子,可以看到XML資料都顯示在一行裡。如果要控制資料換行,就必須在你的代碼裡添加一些指令碼程式。 

注:cd_catalog.xml檔案見附錄1,

   當匯入命名空間後,不能使用資料島技術了。

二.XML CDATA

下面是五個在XML文檔中預定義好的實體:

&lt; < 小於符號
&gt; > 大於符號
&amp; &
&apos; ' 單引號
&quot; " 雙引號

實體必須以符號"&"開頭,以符號";"結尾

CDATA組件

在CDATA內部的所有內容都會被解析器忽略。

如果文本包含了很多的"<"字元和"&"字元——就象程式碼一樣,那麼最好把他們都放到CDATA組件中。

一個 CDATA 組件以"<![CDATA[" 標記開始,以"]]>"標記結束:

<script><![CDATA[function matchwo(a,b){if (a < b && a < 0) then{return 1}else{return 0}}]]></script>

在前面的例子中,所有在CDATA組件之間的文本都會被解析器忽略。

CDATA注意事項:

CDATA組件之間不能再包含CDATA組件(不能嵌套)。如果CDATA組件包含了字元"]]>" 或者"<![CDATA[" ,將很有可能出錯哦。

同樣要注意在字串"]]>"之間沒有空格或者分行符號。

 三.XML NameSpace

XML命名空間的定義由命名空間的聲明、“合法名稱”的定義及應用、命名空間的範圍三部分組成。

1.XML命名空間的聲明

<學生:學生 xmlns:學生 = http://www.xml.net.cn/學生
xmlns:班主任 = http://www.xml.net.cn/班主任>
就是命名空間聲明。
命名空間聲明有兩種方式,即直接定義方式和預設定義方式:
直接定義方式:
xmlns: [命名空間首碼] = [命名空間名]
預設定義方式:
xmlns = [命名空間名]

命名空間聲明中,等號右邊的屬性值部分是一個URI(Uniform Resource Identifier統一資源識別項)引用,其功能是區分不同的命名空間。因此,這個URI引用被稱為命名空間名,它應該具有唯一性和持久性。雖然該屬性值使用了URI,但其目的並不是要直接得到一個Schema或DTD,主要的目的在於標識特定的命名空間。

命名空間聲明中,等號左邊的屬性名稱部分,如果有用冒號“:”分隔開的“命名空間首碼”,就是直接定義方式,其中“命名空間首碼”是一個合法的XML名稱。沒有“命名空間首碼”的命名空間聲明,就是預設的命名空間聲明。 命名空間聲明將“命名空間名”與“命名空間首碼”綁定在一起。

2. “合法名稱”的定義和應用

在定義了命名空間的聲明以後,對如何引用<命名空間首碼>構成新的元素名和屬性名稱,需要再做進一步的統一規範,這就是所謂“合法名稱”定義的由來。

“合法名稱”由用西文冒號“:”分開的首碼部分和本地部分組成,其中首碼部分和本地部分都是一個合法的XML名稱。如:“班主任:姓名”。

“合法名稱”的首碼部分,規定必須是一個“命名空間首碼”,且這個命名空間首碼必須已經經過命名空間聲明聲明過,文法分析器會自動將其與聲明中的URI引用相聯絡。冒號後的部分是該命名空間中定義的元素或屬性名稱,提供了“合法名稱”的本地部分。在用預設方式聲明命名空間時,由於“命名空間首碼”為空白,因此,這時的“合法名稱”只剩下本地部分。

“合法名稱”的應用主要有三種情況:
用於起始元素標記、結束元素標記和空元素標記。
用於屬性的定義。例如:

<?xml version ="1.0" encoding = "GB2312"?>
<學生:學生 xmlns:學生 = http://www.xml.net.cn/學生>
<學生:姓名>李明</學生:姓名>
<學生:班級 學生:數字類型 = "中文">三年級二班</學生:班級>
<學生:住址 學生:數字類型 = "阿拉伯">135樓210室</學生:住址>
</學生:學生>

用於DTD中的元素名和屬性類型。例如:

<?xml version="1.0" encoding="GB2312"?>
<!ELEMENT 學生:學生 (學生:姓名, 學生:班級,學生:住址)>
<!ATTLIST 學生:學生 xmlns:學生
CDATA #FIXED "http://www.xml.net.cn/學生">
<!ELEMENT 學生:姓名 (#PCDATA)>
<!ELEMENT 學生:班級 (#PCDATA)>
<!ELEMENT 學生:住址 (#PCDATA)>

3.命名空間的範圍

所謂命名空間的範圍範圍是指,一個命名空間聲明可以作用到哪些元素和屬性。一般可以認為命名空間聲明,能夠作用到說明它的元素和該元素的所有內容元素,除非被其他命名空間聲明所覆蓋。

與XML命名空間相關的主要概念,討論到這裡基本上可以結束了。由於篇幅的關係,與XML命名空間相關的一些曾經引起爭論的問題,如“命名空間與DTD”,就不在這裡討論了。XML命名空間已經在XSLT、Xlink等標準中得到應用,它已經成為XML標準家族不可或缺的一員。

 

 

附錄:

1.cd_catalog.xml檔案

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited with XML Spy v4.2 -->
<CATALOG>
 <CD>
  <TITLE>Empire Burlesque</TITLE>
  <ARTIST>Bob Dylan</ARTIST>
  <COUNTRY>USA</COUNTRY>
  <COMPANY>Columbia</COMPANY>
  <PRICE>10.90</PRICE>
  <YEAR>1985</YEAR>
 </CD>
 <CD>
  <TITLE>Hide your heart</TITLE>
  <ARTIST>Bonnie Tyler</ARTIST>
  <COUNTRY>UK</COUNTRY>
  <COMPANY>CBS Records</COMPANY>
  <PRICE>9.90</PRICE>
  <YEAR>1988</YEAR>
 </CD>
 <CD>
  <TITLE>Greatest Hits</TITLE>
  <ARTIST>Dolly Parton</ARTIST>
  <COUNTRY>USA</COUNTRY>
  <COMPANY>RCA</COMPANY>
  <PRICE>9.90</PRICE>
  <YEAR>1982</YEAR>
 </CD>
 <CD>
  <TITLE>Still got the blues</TITLE>
  <ARTIST>Gary Moore</ARTIST>
  <COUNTRY>UK</COUNTRY>
  <COMPANY>Virgin records</COMPANY>
  <PRICE>10.20</PRICE>
  <YEAR>1990</YEAR>
 </CD>
 <CD>
  <TITLE>Eros</TITLE>
  <ARTIST>Eros Ramazzotti</ARTIST>
  <COUNTRY>EU</COUNTRY>
  <COMPANY>BMG</COMPANY>
  <PRICE>9.90</PRICE>
  <YEAR>1997</YEAR>
 </CD>
 <CD>
  <TITLE>One night only</TITLE>
  <ARTIST>Bee Gees</ARTIST>
  <COUNTRY>UK</COUNTRY>
  <COMPANY>Polydor</COMPANY>
  <PRICE>10.90</PRICE>
  <YEAR>1998</YEAR>
 </CD>
 <CD>
  <TITLE>Sylvias Mother</TITLE>
  <ARTIST>Dr.Hook</ARTIST>
  <COUNTRY>UK</COUNTRY>
  <COMPANY>CBS</COMPANY>
  <PRICE>8.10</PRICE>
  <YEAR>1973</YEAR>
 </CD>
 <CD>
  <TITLE>Maggie May</TITLE>
  <ARTIST>Rod Stewart</ARTIST>
  <COUNTRY>UK</COUNTRY>
  <COMPANY>Pickwick</COMPANY>
  <PRICE>8.50</PRICE>
  <YEAR>1990</YEAR>
 </CD>
 <CD>
  <TITLE>Romanza</TITLE>
  <ARTIST>Andrea Bocelli</ARTIST>
  <COUNTRY>EU</COUNTRY>
  <COMPANY>Polydor</COMPANY>
  <PRICE>10.80</PRICE>
  <YEAR>1996</YEAR>
 </CD>
 <CD>
  <TITLE>When a man loves a woman</TITLE>
  <ARTIST>Percy Sledge</ARTIST>
  <COUNTRY>USA</COUNTRY>
  <COMPANY>Atlantic</COMPANY>
  <PRICE>8.70</PRICE>
  <YEAR>1987</YEAR>
 </CD>
 <CD>
  <TITLE>Black angel</TITLE>
  <ARTIST>Savage Rose</ARTIST>
  <COUNTRY>EU</COUNTRY>
  <COMPANY>Mega</COMPANY>
  <PRICE>10.90</PRICE>
  <YEAR>1995</YEAR>
 </CD>
 <CD>
  <TITLE>1999 Grammy Nominees</TITLE>
  <ARTIST>Many</ARTIST>
  <COUNTRY>USA</COUNTRY>
  <COMPANY>Grammy</COMPANY>
  <PRICE>10.20</PRICE>
  <YEAR>1999</YEAR>
 </CD>
 <CD>
  <TITLE>For the good times</TITLE>
  <ARTIST>Kenny Rogers</ARTIST>
  <COUNTRY>UK</COUNTRY>
  <COMPANY>Mucik Master</COMPANY>
  <PRICE>8.70</PRICE>
  <YEAR>1995</YEAR>
 </CD>
 <CD>
  <TITLE>Big Willie style</TITLE>
  <ARTIST>Will Smith</ARTIST>
  <COUNTRY>USA</COUNTRY>
  <COMPANY>Columbia</COMPANY>
  <PRICE>9.90</PRICE>
  <YEAR>1997</YEAR>
 </CD>
 <CD>
  <TITLE>Tupelo Honey</TITLE>
  <ARTIST>Van Morrison</ARTIST>
  <COUNTRY>UK</COUNTRY>
  <COMPANY>Polydor</COMPANY>
  <PRICE>8.20</PRICE>
  <YEAR>1971</YEAR>
 </CD>
 <CD>
  <TITLE>Soulsville</TITLE>
  <ARTIST>Jorn Hoel</ARTIST>
  <COUNTRY>Norway</COUNTRY>
  <COMPANY>WEA</COMPANY>
  <PRICE>7.90</PRICE>
  <YEAR>1996</YEAR>
 </CD>
 <CD>
  <TITLE>The very best of</TITLE>
  <ARTIST>Cat Stevens</ARTIST>
  <COUNTRY>UK</COUNTRY>
  <COMPANY>Island</COMPANY>
  <PRICE>8.90</PRICE>
  <YEAR>1990</YEAR>
 </CD>
 <CD>
  <TITLE>Stop</TITLE>
  <ARTIST>Sam Brown</ARTIST>
  <COUNTRY>UK</COUNTRY>
  <COMPANY>A and M</COMPANY>
  <PRICE>8.90</PRICE>
  <YEAR>1988</YEAR>
 </CD>
 <CD>
  <TITLE>Bridge of Spies</TITLE>
  <ARTIST>T'Pau</ARTIST>
  <COUNTRY>UK</COUNTRY>
  <COMPANY>Siren</COMPANY>
  <PRICE>7.90</PRICE>
  <YEAR>1987</YEAR>
 </CD>
 <CD>
  <TITLE>Private Dancer</TITLE>
  <ARTIST>Tina Turner</ARTIST>
  <COUNTRY>UK</COUNTRY>
  <COMPANY>Capitol</COMPANY>
  <PRICE>8.90</PRICE>
  <YEAR>1983</YEAR>
 </CD>
 <CD>
  <TITLE>Midt om natten</TITLE>
  <ARTIST>Kim Larsen</ARTIST>
  <COUNTRY>EU</COUNTRY>
  <COMPANY>Medley</COMPANY>
  <PRICE>7.80</PRICE>
  <YEAR>1983</YEAR>
 </CD>
 <CD>
  <TITLE>Pavarotti Gala Concert</TITLE>
  <ARTIST>Luciano Pavarotti</ARTIST>
  <COUNTRY>UK</COUNTRY>
  <COMPANY>DECCA</COMPANY>
  <PRICE>9.90</PRICE>
  <YEAR>1991</YEAR>
 </CD>
 <CD>
  <TITLE>The dock of the bay</TITLE>
  <ARTIST>Otis Redding</ARTIST>
  <COUNTRY>USA</COUNTRY>
  <COMPANY>Atlantic</COMPANY>
  <PRICE>7.90</PRICE>
  <YEAR>1987</YEAR>
 </CD>
 <CD>
  <TITLE>Picture book</TITLE>
  <ARTIST>Simply Red</ARTIST>
  <COUNTRY>EU</COUNTRY>
  <COMPANY>Elektra</COMPANY>
  <PRICE>7.20</PRICE>
  <YEAR>1985</YEAR>
 </CD>
 <CD>
  <TITLE>Red</TITLE>
  <ARTIST>The Communards</ARTIST>
  <COUNTRY>UK</COUNTRY>
  <COMPANY>London</COMPANY>
  <PRICE>7.80</PRICE>
  <YEAR>1987</YEAR>
 </CD>
 <CD>
  <TITLE>Unchain my heart</TITLE>
  <ARTIST>Joe Cocker</ARTIST>
  <COUNTRY>USA</COUNTRY>
  <COMPANY>EMI</COMPANY>
  <PRICE>8.20</PRICE>
  <YEAR>1987</YEAR>
 </CD>
</CATALOG>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.