XML基本語法介紹

2020-09-21 22:23:35

範例程式碼

首先給出範例程式碼

<!-- filename  test.xml-->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book SYSTEM "book.dtd">
<booklist>
	<top>
		<bookname>《悲慘世界》</bookname>
		<bookauthor>雨果</bookauthor>
	</top>
	<top>
		<bookname>《人間失格》</bookname>
		<bookauthor>太宰治</bookauthor>
	</top>
</booklist>
<!--filename  book.dtd -->
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT book(booklist,top*,bookname+,bookauthor+)>
<!ELEMENT booklist (#ANY)>
<!ELEMENT top (#ANY)>
<!ELEMENT bookname (#PCDATA)>
<!ELEMENT bookauthor (#PCDATA)>

關於宣告語句部分

在上述程式碼中,<?xml version="1.0" encoding="UTF-8"?>是XML的一個宣告,表示檔案遵循的是XML1.0規範。

  • 一個有效的XML檔案第一行必須進行宣告。

  • 完整的宣告格式如下:<?xml version="1.0" standalone="yes/no" encoding="UTF-8"?>

  • 其中 standalone="yes/no" 定義了是否可以在不讀取其他檔案的情況下處理該檔案。例如,standalone="yes"表示XML沒有與其他任何檔案關聯。不寫表示預設,即standalone="no"

  • 其中encoding="UTF-8"是檔案的編碼方式。其他編碼方式:簡體中文:encoding="GB2312,繁體中文:BIG5

<DOCTYPE book SYSTEM "book.dtd">屬於檔案的序言部分。說明此檔案使用的是這個檔案來定義檔案型別的。瀏覽器預設使用Unicode編碼來解析,所以上述宣告在當下情況也可以簡單寫成<?xml version="1.0">

在上述程式碼中,<booklist><top><bookname>等這些tags是使用者自定義的。其中<booklist>是根元素。其他元素為子元素,其中最內層的是葉子元素。(XML是基於樹形結構的,所有的元素構成了一個簡單的層次樹,所以元素與元素之間唯一的直接關係就是父子關係)。

關於檔案內容部分

  • 關於元素命名:XML基本沒有什麼保留字,我們幾乎可以用任何詞語來為元素名命,但是需要注意以下幾點:不能用數位或者標點符號開頭,不能以XML、xml、Xml…開頭,名字中不能有空格,避免使用「-」、「.」這些符號,儘量與資料庫中的元素名稱保持一致。
  • XML中元素型別:空元素、僅含文字元素、含其他元素、混合元素。
    例如:空元素:<book></book><book/>
    僅含文字元素:<book>《悲慘世界》<book>
    包含其他元素:<top><book>《悲慘世界》<book><top>,其中top是父級元素,book是子元素。
    混合元素:<top>暢銷榜單<book>《悲慘世界》<book><top>,既包含文字元素也包含子元素。

XML的屬性部分

  • 屬性可以提供元素的額外資訊,是對標識的進一步描述和說明。
  • 每個屬性有自己的名稱和數值,屬性是標識的一部分。例如:<author sex="man">雨果</author>.
  • 一個元素可以有多個屬性。
  • 當元素包含屬性時,一般稱之為複合型別元素。
  • 在XML應儘量避免使用屬性,使用屬性會引發如下許多問題:屬性不可以包含多個值、而子元素可以,屬性不容易擴充套件,屬性不能夠描述結構、而子元素可以,屬性很難被程式程式碼處理,屬性很難通過DTD進行測試。

其他需要注意的地方

  • 註釋的寫法<!-- 在這裡寫註釋資訊--->
  • 注意大小寫。在XML中,<Book>,<BOOK>,<book>這是三種不同的標識。
  • 所有的XML檔案有且只有一個根元素。在上面test.xml檔案中,根元素為<booklist>.
  • 屬性值必須加上引號。例如<font color="red">,不能寫成<font color=red>
  • 空識別符號必須被關閉。有兩種寫法
    第一種:<title/>(以/>結尾)。
    第二種:<title></title>
    但是不可以寫成<title>,(這個沒有結束標識)。
  • 處理空白字元的方式
    對於XML來說,解析器會忠實的交給應用程式來理解。所以解析器會保留內容中所有的空白字元並不加修改的傳遞給應用程式,但元素標記和屬性值中的空白會被刪除。所以:
<author>雨果</author>

<author>
	雨果
</author>

會不同的執行結果。

  • 處理特殊字元的方式
    因為特殊字元已被XML檔案使用,所以想要顯示特殊字元需要被相應的符號來替代。
特殊字元替換字元
<&lt
>&gt
and(&)&amp
雙引號(")&quot
單引號(’)&apos
  • 關於名命空間
    通過使用字首,可以解決名命衝突問題。
    程式碼範例:
<fruit:table>
	<fruit:tr>apple<fruit:tr>
<fruit:table>
<furniture:table>
	<furniture:tr>HongMu<furniture:tr>
<furniture:table>

瀏覽器檢視程式碼

可以將程式碼直接拖入瀏覽器中,或者在瀏覽器的位址列中輸入本地檔案的位置資訊,即可顯示。
文首的test.xml檔案在chrome瀏覽器中的顯示效果如圖:
在這裡插入圖片描述
點選左側的三角符號可以將程式碼進行摺疊隱藏。

XML檔案結構

在這裡插入圖片描述