xml的namespace好像是一件容易令人困惑的定義,其實很簡單。
為了要讓一份xml文件可以被正確解讀,xml依著什麼樣的規範,意謂著這是一份描寫化學反應、食譜、電子書、網頁等等,都由namespace來確定。一份完全沒有namespace定義的xml檔,將完全無法被解讀。namespace定義的方式就是透過xmlns="..."來處理。
namespace在xml中還扮演另一個角色,即qualify tag。xml文件中可能會有其他的定義需求,如epub格式中的package檔,就需要要metadata的相關定義,該定義可能來自某一個組織的共識,也有一定的約定俗成的規矩,若package中使用的tag與metadata中的tag衝突,該如何處理?最簡單的方式就是給metadata一個namespace,然後所有metadata用到的tag都用xx:tag的方式處理。xx表示為了metadata範圍需要所定義的namespace。然後透過 xmlns:xx="...."的方式定義xx這個新的namespace。而這個namespace的範圍只有在他出現的這個tag中。所以任何他的子tag或attr都可以看見他。類似於一般程式中的binding概念。
沒有留言:
張貼留言