風(fēng)雨無阻

          xmlns:XML命名空間

          以下轉(zhuǎn)載自:
          http://hi.baidu.com/tianhesj/blog/item/0dd9718d32be4011b21bbacc.html

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


          命名沖突
          因?yàn)閄ML文檔中使用的元素不是固定的,那么兩個(gè)不同的XML文檔使用同一個(gè)名字來描述不同類型的元素的情況就可能發(fā)生。而這種情況又往往會(huì)導(dǎo)致命名沖突。請看下面兩個(gè)例子

          這個(gè) XML 文檔在table元素中攜帶了水果的信息:

          <table>
          <tr>
          <td>Apples</td>
          <td>Bananas</td>
          </tr>
          </table>
          這個(gè) XML 文檔在table元素中攜帶了桌子的信息(家具,不能吃的哦):

          <table>
          <name>African Coffee Table</name>
          <width>80</width>
          <length>120</length>
          </table>

          如果上面兩個(gè)XML文檔片斷碰巧在一起使用的話,那么將會(huì)出現(xiàn)命名沖突的情況。因?yàn)檫@兩個(gè)片斷都包含了<table>元素,而這兩個(gè)table元素的定義與所包含的內(nèi)容又各不相同。


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

          使用前綴解決命名沖突問題
          下面的XML文檔在table元素中攜帶了信息:

          <h:table>
          <h:tr>
          <h:td>Apples</h:td>
          <h:td>Bananas</h:td>
          </h:tr>
          </h:table>

          下面的XML文檔攜帶了家具table的信息:

          <f:table>
          <f:name>African Coffee Table</f:name>
          <f:width>80</f:width>
          <f:length>120</f:length>
          </f:table>

          現(xiàn)在已經(jīng)沒有元素命名沖突的問題了,因?yàn)檫@兩個(gè)文檔對各自的table元素使用了不同的前綴,table元素在兩個(gè)文檔中分別是(<h:table> 和<f:table>)。

          通過使用前綴,我們創(chuàng)建了兩個(gè)不同的table元素。


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

          使用命名空間
          下面的XML文檔在table元素中攜帶了信息:

          <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文檔攜帶了家具table的信息:

          <f:table xmlns:f="http://www.w3schools.com/furniture">
          <f:name>African Coffee Table</f:name>
          <f:width>80</f:width>
          <f:length>120</f:length>
          </f:table>

          在上面兩個(gè)例子中除了使用前綴外,兩個(gè)table元素都使用了xmlns屬性,使元素和不同的命名空間關(guān)聯(lián)到一起。


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

          命名空間屬性
          命名空間屬性一般放置在元素的開始標(biāo)記處,其使用語法如下所示:

          xmlns:namespace-prefix="namespace"

          在上面的例子中,命名空間定義了一個(gè)Internet 地址:

          xmlns:f="http://www.w3schools.com/furniture"

          W3C 命名規(guī)范聲明命名空間本身就是一個(gè)統(tǒng)一資源標(biāo)示符,Uniform Resource Identifier (URI)。

          當(dāng)我們在元素的開始標(biāo)記處使用命名空間時(shí),該元素所有的子元素都將通過一個(gè)前綴與同一個(gè)命名空間相互關(guān)聯(lián)。

          注意:用來標(biāo)識(shí)命名空間的網(wǎng)絡(luò)地址并不被XML解析器調(diào)用,XML解析器不需要從這個(gè)網(wǎng)絡(luò)地址中查找信息,該網(wǎng)絡(luò)地址的作用僅僅是給命名空間一個(gè)唯一的名字,因此這個(gè)網(wǎng)絡(luò)地址也可以是虛擬的,然而又很多公司經(jīng)常把這個(gè)網(wǎng)絡(luò)地址值象一個(gè)真實(shí)的Web頁面,這個(gè)地址包含了關(guān)于當(dāng)前命名空間更詳細(xì)的信息。
          可以訪問http://www.w3.org/TR/html4/.


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

          統(tǒng)一資源標(biāo)識(shí)符
          通用資源標(biāo)識(shí)符(A Uniform Resource Identifier (URI))是一個(gè)標(biāo)識(shí)網(wǎng)絡(luò)資源的字符串。最普通的URI應(yīng)該是統(tǒng)一資源定位符Uniform Resource Locator (URL)。URL用于標(biāo)識(shí)網(wǎng)絡(luò)主機(jī)的地址。另一方面,另一個(gè)不常用的URI是通用資源名字Universal Resource Name (URN)。在我們的例子中,一般使用的是URLs。

          既然前面的例子使用的URL地址來標(biāo)識(shí)命名空間,我們可以確信這個(gè)命名空間是唯一的。


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

          默認(rèn)的命名空間
          定義一個(gè)默認(rèn)的XML命名空間使得我們在子元素的開始標(biāo)記中不需要使用前綴。他的語法如下所示:

          <element xmlns="namespace">

          下面的XML文檔在table元素中包含了水果的信息:

          <table xmlns="http://www.w3.org/TR/html4/">
          <tr>
          <td>Apples</td>
          <td>Bananas</td>
          </tr>
          </table>

          下面的XML文檔包含了家具table的信息:

          <table xmlns="http://www.w3schools.com/furniture">
          <name>African Coffee Table</name>
          <width>80</width>
          <length>120</length>
          </table>

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

          使用命名空間
          檔開始使用XSL的時(shí)候,就會(huì)發(fā)現(xiàn)命名空間使用的是如此頻繁。XSL樣式單主要用于將XML文檔轉(zhuǎn)換成類似于HTML文件的格式。

          如果看一下下面的XSL文檔,就會(huì)發(fā)現(xiàn)有很多標(biāo)記都是HTML標(biāo)記。那些標(biāo)記并不是HTML標(biāo)記,是加了前綴的XSL,這個(gè)XSL前綴由命名空間"http://www.w3.org/TR/xsl"所標(biāo)識(shí):

          <?xml version="1.0" encoding="ISO-8859-1"?>
          <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/xsl">
          <xsl:template match="/">
          <html>
          <body>
          <table border="2" bgcolor="yellow">
          <tr>
          <th>Title</th>
          <th>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>


          本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/yc_8301/archive/2008/11/19/3335738.aspx

          posted on 2009-08-04 10:46 秋楓故事 閱讀(1323) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2009年8月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          新聞檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 钦州市| 江油市| 拉萨市| 昂仁县| 安丘市| 个旧市| 贡山| 休宁县| 抚顺市| 翁牛特旗| 喀喇沁旗| 郎溪县| 承德县| 河间市| 巫溪县| 鞍山市| 海口市| 大丰市| 屯昌县| 金湖县| 始兴县| 汶上县| 开远市| 方山县| 东阳市| 九寨沟县| 汉沽区| 南召县| 绥阳县| 望谟县| 丘北县| 志丹县| 台安县| 霸州市| 赣榆县| 阳原县| 大宁县| 石屏县| 内黄县| 岳西县| 玉田县|