在xml解析器把xml文件解析並將其中的資料傳遞給應用程式後,應用程式需要把來自不同文件的元素組合到同乙個xml文件裡。
無論是在同乙個文件還是在不同的文件,為了解決命名衝突的問題,可以在每個元素前新增字首。但這個方法也有缺點,就是在為html的xml版的元素前新增字首時,瀏覽器可能無法正常讀取xml文件中的xhtml內容。
命名空間只是起到「分裝容器」的作用,除此之外,無任何意義。
命名空間的定義有了,但是由誰來管理這些命名空間?要使命名空間有效,命名空間字首本身也必須是唯一的。這個問題的解決方法與網際網路上網域名稱管理方法相似,即在使用某個字首前先向「字首管理員」申請,如果這個字首還沒有被其他人或公司使用,那麼就可以使用該字首。
命名空間的執行機制:
當我們要在xml文件中使用命名空間時,元素名的概念就變成了所謂的限定名。它由兩部分組成:本地部分,即我們之前稱呼的元素名;命名空間字首,它確定了這個名稱所在的命名空間。預設的命名空間:要特別注意書中講述的宣告xml命名空間的語法。
比如開始標籤,表示person元素屬於pers所指代的命名空間。
有了命名空間後,元素不能只根據它的名字來標識,而要根據它的限定名來標識。
當xml文件被解析時,解析器會把所有的命名空間字首替換為命名空間即xmlns中的內容。
標準的語法要求我們要在每個元素名前新增命名空間字首,不過如此一來文件的形式就不太美觀了。為解決這一問題,我們可以使用預設的命名空間。即在上面的開始標籤中省去字首的書寫和宣告,這樣,就可以寫成,此開始標籤對應的結束標籤和標籤之間的所有元素名就不用再新增字首了,它們的命名空間預設屬於」當然,同乙個標籤裡只能使用乙個預設命名空間,要再使用乙個命名空間那就得乖乖宣告乙個命名空間字首了。命名空間和屬性:注意書上講述的命名空間的更多用法。
命名空間對元素的作用與它對屬性的作用並不一樣。雖然某元素屬於某命名空間的一部分,但它的屬性只是對所屬的元素關聯而已,要想使某屬性隸屬於某個命名空間,則該屬性前也要有命名空間字首。uri:
uri(統一資源識別符號)是乙個用來標識資源的字串。它有兩種形式:url和urn。url第一部分使用了協議(scheme),通常是http協議。協議後面是冒號,冒號後面是資源的路徑。
比如,是某個網頁的url。這個url表示從internet上的乙個名為www.google.ca伺服器上檢索乙個名為about.html的檔案,該檔案位於/intl/en目錄裡,並且這個檔案必須要用http協議讀取。
通過url能檢索到的資源是有限的,因為它們只有在計算機裡才能讀取到。
urn不是很經常使用。它們的存在為資源提供了乙個持久的、獨立於位置的名字。
用url而不是urn來表示xml的命名空間的原因:
url本身保持了它的唯一性,所以用網域名稱建立命名空間會更容易。
命名空間uri的真實含義:
根據xml命名空間規範,uri只是用來給命名空間乙個名字而已,除此之外沒有任何意義。xml解析器不會試圖進入url也不會檢索任何東西。當然,對於具體的應用程式而言,它們可以根據自己的需要利用這些url。
演算法競賽入門經典第3章習題
給出乙個有o和x組成的串 長度為1 80 統計得分。每個o的得分為目前連續出現的o的個數,x的得分為0。例如,ooxxoxxooo的得分是為1 2 0 0 1 0 0 1 2 3。按照題目說的做就行了,超簡單。include include define maxn 80 char s maxn in...
演算法競賽入門經典(第2版)例題(第3章)
例題 3 1 tex中的引號 tex quotes include intmain else printf c c return0 例題 3 2 wertyu include char s 1234567890 qwertyuiop asdfghjkl zxcvbnm,int main 例題 3 3...
第 3 章 程序
程序是現代分時作業系統的工作單元。程序是資源分配的基本單位。執行緒是程式執行的最小單位。程序是執行的程式,這是一種非正式的說法。程序不只是程式 也稱文字段 程序還包括資料 程式計數器的值和處理器暫存器的內容等 程序堆疊 包括臨時資料,如函式引數 返回位址和區域性變數 和資料段 包括全域性變數 和堆。...