關於Namespaces這個名詞,對我來說實在是不好理解
查了一些資料後,總算有一些初步的認識
根據W3C的定義:
[Definition: An XML namespace is identified by a URI reference [RFC3986]; element and attribute names may be placed in an XML namespace using the mechanisms described in this specification. ]
之所以會有名稱空間的出現,是為了解決元素名稱重複的問題
其實XML的namespace就是一項識別XML元素的機制
假設A君正在寫漫畫分類的xml文件
以下是簡單的範例:
<?xml version="1.0" encoding="Big5"?>
<comic-list>
<entry>
<title>灌籃高手</title>
<rating>普遍級</rating>
</entry>
<entry>
<title>浪人劍客</title>
<rating>限制級</rating>
</entry>
</comic-list>
而B君也寫了相同的文件,但分類的方式不一樣
查了一些資料後,總算有一些初步的認識
根據W3C的定義:
[Definition: An XML namespace is identified by a URI reference [RFC3986]; element and attribute names may be placed in an XML namespace using the mechanisms described in this specification. ]
之所以會有名稱空間的出現,是為了解決元素名稱重複的問題
其實XML的namespace就是一項識別XML元素的機制
假設A君正在寫漫畫分類的xml文件
以下是簡單的範例:
<?xml version="1.0" encoding="Big5"?>
<comic-list>
<entry>
<title>灌籃高手</title>
<rating>普遍級</rating>
</entry>
<entry>
<title>浪人劍客</title>
<rating>限制級</rating>
</entry>
</comic-list>
而B君也寫了相同的文件,但分類的方式不一樣
<?xml version="1.0" encoding="Big5"?>
<comic-list>
<entry>
<author>井上雄彥</author>
<title>灌籃高手</title>
<rating>5 stars</rating>
</entry>
<entry>
<author>井上雄彥</author>
<title>浪人劍客</title>
<rating>5 stars</rating>
</entry>
</comic-list>
當我們試著將這兩份文件合併時,電腦判讀就會出現問題
<?xml version="1.0" encoding="Big5"?>
<comic-list>
<entry>
<author>井上雄彥</author>
<title>灌籃高手</title>
<rating>普遍級</rating>
<rating>5 stars</rating>
</entry>
<entry>
<author>井上雄彥</author>
<title>浪人劍客</title>
<rating>限制級</rating>
<rating>5 stars</rating>
</entry>
</comic-list>
電腦不知道讀取rating這個元素時,代表的到底是內容分級、還是評價分級
所以我們可以在元素前面加入前置詞(prefix),來解決判讀的問題
<?xml version="1.0" encoding="Big5"?>
<comic-list>
<entry>
<author>井上雄彥</author>
<title>灌籃高手</title>
<content-rating>普遍級</content-rating>
<quality-rating>5 stars</quality-rating>
</entry>
<entry>
<author>井上雄彥</author>
<title>浪人劍客</title>
<content-rating>限制級</content-rating>
<quality-rating>5 stars</quality-rating>
</entry>
</comic-list>
另一個解決的方式就是使用名稱空間:
<?xml version="1.0" encoding="Big5"?>
<comic-list xmlns:ct="content"
xmlns:qa="quality">
<entry>
<author>井上雄彥</author>
<title>灌籃高手</title>
<ct:rating>普遍級</ct:rating>
<qa:rating>5 stars</qa:rating>
</entry>
<entry>
<author>井上雄彥</author>
<title>浪人劍客</title>
<ct:rating>限制級</ct:rating>
<qa:rating>5 stars</qa:rating>
</entry>
</comic-list>
上述xmlns:稱為宣告namespace的關鍵字
而雙引號" "裡面的單字則是該名稱空間的名字
至於上述的ct以及qa則是別名,也可以說是名稱空間的前置詞(prefix)
代表它們所屬名稱空間的縮寫
沒有留言:
張貼留言