XML基礎

簡單說明:

  1. 參考書籍 ----- 《XML實戰教程》
  2. XML涉及衆多知識,命名空間、DTD、XSD、XPath、Xlink、DOM、SAX、XSL等。DTD與XSD是XML的校驗規則技術,DOM、SAX是獲取數據的技術,XSL與XSLT都是XML的顯示技術

XML文檔聲明

聲明XML文檔時有3個屬性:version屬性、encoding屬性和standalone屬性。

1. version屬性

目前XML規範有兩個版本:1.0和1.1版本。

    <?xml version="1.0"?>
    或者
    <?xml version="1.1"?>
這兩個版本的規範標準幾乎是一樣的,只是給元素命名時,會對某些Unicode字符采取不同的處理方法。如果確實需要使用XML1.1規範,那麼必須確保所使用的XML解析器支持1.1版本。另外,當需要與其他用戶交換XML文檔時,必須確保對方的解析器也支持XML1.1版本,否則會引起操作性問題。

2. encoding屬性

XML文檔中通過聲明encoding屬性可以告訴解析器文檔所採用的編碼方式。如果文檔沒有說明編碼,則會使用默認的UTF-8或UTF-16,因此解析器必須支持這兩種編碼格式。

3. standalone屬性

如果XML聲明中提供了standalone屬性,則它的值必須是yes或者是no。yes表示文檔可以完全獨立存在,不依賴與其他任何文件;no表示文檔可能依賴於一個外部的DTD文件。

4. 注意事項

  • XML聲明必須從“<?xml>”開始,到“?>”爲結束
  • 聲明語句裏必須包含version屬性,但是encoding屬性和standalone屬性是可選的
  • version、encoding和standalone三個屬性必須按上述排序
  • version屬性值必須是1.0或是1.1
  • XML聲明必須放在文檔的開頭,前面不能有空行或空格。關於這一點,有些解析器不會那麼嚴格

XML元素概述

元素概念

在開始標記到結束標記之間的吧、文本以及標記本身統稱爲元素。
    <?xml version="1.0" encoding="UTF-8"?>
    <name nickname="Tom Bill">
	<firstname>Tom</first>
	<middlename />
	<lastname>Bill</lastname>
    </name>
如上例中的<firstname>是一個開始標記,</firstname>是一個結束標記,<firstname>Tom</first>則表示一個元素。

元素命名

元素之間可以進行嵌套,並且一個XML文檔中必須只要一個根元素。實際上,即使文檔沒有任何內容,它也必須亞由一個根元素。
無論是給元素命名還是爲標記命名,都要遵守以下規則:
  • 名稱第一個字母必須是英文或是下劃線
  • 其他字符可以是數字、連字符“-”和句點
  • 名字中不能有空格
  • 名稱的大小寫敏感
  • 元素名可以是中文。但是在不支持中文的環境中將不能夠解釋包含中文字符的XML文檔,所以應進項選擇有意義的英文名稱表示

屬性概念

屬性是採用name/value的形式說明元素的特徵,它們插入到開始標記裏,但是不允許插入到結束標記裏。如果屬性值中要使用單引號或尖括號時,就必須使用字符和實體引用。屬性值使用單括號括起來,單引號和雙引號都可以。如上例中的nickname=“Tom Bill”
XML標記使用字符的5種內置實體:
實體 實體引用 含義
lt &lt; <
gt &gt; >
amp &amp; &
apos &apos; '
quot &quot; "

XML命名空間

自定義命名空間

XML文檔使用命名空間解決XML元素的名稱衝突和多義性的問題。命名空間是通過使用一系列保留屬性聲明的,這一系列保留屬性的名稱必須是xmlns或以“xmlns:”作爲前綴。基本的語法如下所示:
    xmlns:prefix="URI"
  • xmlns:定義命名空間的關鍵字
  • perfix:命名空間前綴屬性
  • URI:用來標識抽象或物理資源的緊湊字符串,大多數情況下,URI引用用來標識物理資源
例如,如果要聲明一個地址爲http://www.wiley.pers的命名空間和它的一個名稱是person的元素。
    <pers:person xmlns:pers="http://www.wiley.ers" />
這裏的前綴pers沒有任何含義,唯一的作用只是一個代表命名空間的名稱,可以使用其他任何的前綴代替它,而且文檔的意義完全一樣。

默認的命名空間

一個默認的命名空間很像一個普通的命名空間,只要不需要在這個命名空間的所有元素前面再添加前綴。如下所示:
   <person xmlns="http://www.wiley.com/pers">
	<name>tom</name>
   </person>
可以在一個元素聲明多個命名空間,但是其中只有一個是默認的命名空間。如下所示:
   <person xmlns="http://www.wiley.com/pers" xmlns:html="http://www.w3.org/1999/xhtml" >
	<name/>
	<html:p>這是一個最基本的段落</html:p>
   </person>

命名空間的注意事項

  1. 不能爲一個元素同時聲明兩個默認的命名空間
  2. 可以在子元素中聲明命名空間
  3. 可以爲屬性添加命名空間

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章