【轉】XML之命名空間的作用(xmlns)

來源:互聯網
上載者:User

標籤:

原文連結:http://blog.csdn.net/zhch152/article/details/8191377命名空間的作用,下面的內容是轉載的,大家可以看看: 問題的出現:XML的元素名字是不固定的,當兩個不同的文檔使用同樣的名稱描述兩個不同類型的元素的時候,或者一個同樣的標記表示兩個不同含義的內容的時候,就會發生命名衝突。問題的解決:命名空間(Namespace),對於每一套特定應用的DTD,給它一個獨一無二的標誌來代表,如果在XML中使用DTD中定義的元素,需將DTD的標誌和元素名,屬性連在一起使用,相當於指明了元素來自什麼地方,這樣就不會同其他同名元素混淆了(有點類似Java中包的作用,給它取個全名)。在XML中,採用現成的,在全球範圍唯一的“網域名稱”作為Namespace,即URL作為XML的Namespace。命名空間允許我們在一個文檔中結合不同的元素和屬性定義,並指明這些元素和屬性的定義來自那裡。命名空間的文法如下:   xmlns:[prefix]=”[url of name]”其中“xmlns:”是必須的屬性。“prefix”是命名空間的別名,它的值不能為xml。 <sample xmlns:ins=”http://www.lsmx.net.ac”>   <ins:batch-list>   <ins:batch>Evening Batch</ins:batch></ins:batch-list>     </sample>值得注意的是batch-list,batch等標記必須在"http://www.lsmx.net.ac"中定義,別名為ins。注意在使用前必須先聲明命名空間,在使用時別忘了“:”。一,預設Namespace   xmlns=”[url of namespace]”二,指定了父元素的命名空間,子項目希望用自己的命名空間,可以在子項目中指定命名空間的別名。三,屬性也可以有自己的命名空間。  xsi:schemaLocation詳解

在執行個體中參考模式文檔

XML Schema提供了兩個在執行個體文檔中使用的特殊屬性,用於指出模式文檔的位置。這兩個屬性是:xsi:schemaLocation和xsi:noNamespaceSchemaLocation,前者用於聲明了目標名稱空間的模式文檔,後者用於沒有目標名稱空間的模式文檔,它們通常在執行個體文檔中使用。

4.5.7.1  xsi:schemaLocation屬性

xsi:schemaLocation屬性的值由一個URI引用對組成,兩個URI之間以空白符分隔。第一個URI是名稱空間的名字,第二個URI給出模式文檔的位置,模式處理器將從這個位置讀模數式文檔,該模式文檔的目標名稱空間必須與第一個URI相匹配。我們看例4-28。

例4-28  book6.xml

 

<?xml version="1.0" encoding="GB2312"?><book xmlns="http://www.sunxin.org/book"   ①xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  ②xsi:schemaLocation="http://www.sunxin.org/book http://www.sunxin.org/ book.xsd">  ③<title>《Struts 2深入詳解》</title><author>孫鑫</author></book>

① 聲明預設的名稱空間(http://www.sunxin.org/book)。

② 聲明XML Schema執行個體名稱空間(http://www.w3.org/2001/XMLSchema-instance),並將xsi首碼與該名稱空間綁定,這樣模式處理器就可以識別xsi:schemaLocation屬性。XML Schema執行個體名稱空間的首碼通常使用xsi。

③ 使用xsi:schemaLocation屬性指定名稱空間http://www.sunxin.org/book和模式位置http://www.sunxin.org/book.xsd相關。要注意,在這個例子中,book.xsd中聲明的目標名稱空間要求是http://www.sunxin.org/book。

一個可能的模式文檔book.xsd如例4-29所示。

例4-29  book.xsd

 

<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.sunxin.org/book" targetNamespace="http://www.sunxin.org/book" elementFormDefault="qualified"><xs:element name="book" type="bookType"/><xs:complexType name="bookType"><xs:sequence><xs:element name="title" type="xs:string"/><xs:element name="author" type="xs:string"/></xs:sequence>  </xs:complexType></xs:schema>

實際上,xsi:schemaLocation屬性的值也可以由多個URI引用對組成,每個URI引用對之間使用空白符分隔。例4-30的執行個體文檔使用了多個名稱空間,xsi:schemaLocation屬性的值包含了兩對URI。

例4-30  books.xml

 

<?xml version="1.0" encoding="GB2312"?><books xmlns="http://www.sunxin.org/bks" xmlns:p="http://www.sunxin.org/people"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.sunxin.org/bks bks.xsdhttp://www.sunxin.org/people people.xsd"><book><title>JSP深入編程</title><author><p:name>張三</p:name><p:title>作家</p:title></author></book><book><title>XML從入門到精通</title><author><p:name>李四</p:name><p:title>教師</p:title></author></book></books>

XML Schema推薦標準中指出,xsi:schemaLocation屬性可以在執行個體中的任何元素上使用,而不一定是根項目,不過,xsi:schemaLocation屬性必須出現在它要驗證的任何元素和屬性之前。

此外,要注意的是,XML Schema推薦標準並沒有要求模式處理器必須要使用xsi:schemaLocation屬性,某些模式處理器可以通過其他的方式來得到模式文檔的位置,而忽略xsi:schemaLocation屬性。

xsi:noNamespaceSchemaLocation屬性

xsi:noNamespaceSchemaLocation屬性用於引用沒有目標名稱空間的模式文檔。與xsi:schemaLocation屬性不同的是,xsi:noNamespaceSchemaLocation屬性的值是單一的值,只是用於指定模式文檔的位置。例4-31顯示了在執行個體文檔中xsi:noNamespaceSchema Location屬性的使用。

例4-31  book7.xml

 

<?xml version="1.0" encoding="GB2312"?><book xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="book.xsd" isbn="978-7-121-06812-6" ><title>《Struts 2深入詳解》</title><author>孫鑫</author></book>

與xsi:schemaLocation屬性一樣,xsi:noNamespaceSchemaLocation屬性也可以在執行個體中的任何元素上使用,而不一定是根項目,不過,xsi:noNamespaceSchemaLocation屬性必須出現在它要驗證的任何元素和屬性之前。

此外,要注意的是,XML Schema推薦標準並沒有要求模式處理器必須要使用xsi:noNamespaceSchemaLocation屬性,某些模式處理器可以通過其他的方式來得到模式文檔的位置,而忽略xsi:noNamespaceSchemaLocation屬性。

 

【轉】XML之命名空間的作用(xmlns)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.