XML名稱空間表示XML名稱的使用範圍,因為XML可自訂元素標籤,所以有不同XML應用間XML名稱重名的機會是很大的。
如果沒有一種方法來區分不應用的名稱,就會造成混亂。 XML名稱空間就是為了解決這個問題而設計的。透過XML名稱空間,我們可以區分來自不同的XML應用程式的具有相
XML名稱空間表示XML名稱的使用範圍,因為XML可自訂元素標籤,所以有不同XML應用程式間XML名稱重名的機會是很大的。如果沒有一種方法來區分不應用的名稱,就會造成混亂。 XML名稱空間就是為了解決這個問題而設計的。透過XML名稱空間,我們可以區分來自不同的XML應用程式的具有相同名稱的元素和屬性。單一XML應用的相關元素和屬性可以集合在一起,方便軟體辨識和處理。
名稱空間以前綴和本地部分組成,中間以冒號分隔。前綴標識元素或屬性的所在名稱空間,本地部分標識名稱空間中的某個元素或屬性。整個名稱也稱為限定名稱(qualified name)。前綴可以用除XML(大小寫任意組合)三個字母外的任何合法的XML名稱字元組成。每個限定名稱中的前綴都必須與唯一的一個URI關聯。帶有相同URI關聯的前綴的名稱屬於同一名稱空間。
<rdf:RDF xmlns:rdf="http://www.w3.org/TR/REC-rdf-syntax#"> <rdf:Description about="http://www.example.com/test.xml"> <title>example</title> <author>linuxsir</author> ... </rdf:Description> </rdf:RDF>
前綴一般在使用該前綴的最上層元素中定義。在下層元素中也可定義不同的前綴:
<rdf:RDF xmlns:rdf="http://www.w3.org/TR/REC-rdf-syntax#"> <rdf:Description xmlns:dc="http://www.w3.org/dc/" about="http://www.example.com/test.xml"> <dc:title>example</dc:title> <dc:author>linuxsir</dc:author> ... </rdf:Description> </rdf:RDF>
透過將無前綴的xmlns屬性附加到根元素中,可以指定不帶前綴的元素及所有不帶前綴的子元素屬於某個名稱空間。
<svg xmlns="http://www.w3.org/2000/svg"> <ellipse rx="110" ry="130" /> <rect x="4cm" y="1cm" /> </svg>
如果名稱空間只用來識別來自某種XML應用的元素和屬性,而不是用來區分具有相同名稱的不同元素,則可在DTD的元素中定義一個固定的xmlns屬性,而不需要在文件中定義。定義方法如下:
<!ATTLIST svg xmlns CDATA #FIXED "http://www.w3.org/svg/">
在定義DTD時,需要使用名稱空間前綴的在定義時也要把前綴寫到DTD定義裡,如:
<!ELEMENT xlink:name (#PCDATA)>
使用參數實體引用來定義名稱空間前綴可方便DTD文件的維護,整理發布!轉載請註明出處,謝謝!
<!ENTITY % prefix "xlink"> <!ENTITY % colon ":">
接著,利用該參數實體名稱定義更多的參數實體引用,如:
<!ENTITY % xlink-title "%prefix;%colon;title"> <!ENTITY % xlink-author "%prefix;%colon;author">
這樣,如果需要更改前綴,只要修改一個地方就可以了,不用整篇文件修改。
<!ELEMENT %xlink-title; (#PCDATA)> <!ELEMENT %xlink-author; (#PCDATA)> 不能在ATTLIST和ELEMENT声明中直接使用%prefix;和%colon;, 因为在另一个实体的外部使用这些参数实体时,XML解析器会在实体替换文本的两边添加额外的空格。
以上是XML入門教學-XML名稱空間詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!