xml基礎

XML是什么?

●XML 指可擴展標記語言(EXtensible Markup Language)
●XML 是一種標記語言,很類似 HTML
●XML 的設計宗旨是傳輸數(shù)據(jù),而非顯示數(shù)據(jù)
●XML 標簽沒有被預定義。您需要自行定義標簽。
●XML 被設計為具有自我描述性。
●XML 是 W3C 的推薦標準

XML與HTML的主要差異

XML 不是 HTML 的替代。
XML 和 HTML 為不同的目的而設計:
XML 被設計為傳輸和存儲數(shù)據(jù),其焦點是數(shù)據(jù)的內容。
HTML 被設計用來顯示數(shù)據(jù),其焦點是數(shù)據(jù)的外觀。
HTML 旨在顯示信息,而 XML 旨在傳輸信息。

一個簡單的XML文件

<?xml version="1.0" encoding="UTF-8"?>
<body>
   <school>
      <teacher>Jack</teacher>
      <student>Mark</student>
   </school>
</body>

這是一個簡單的XML文件,文件的第一行是XML的聲明,version="1.0"指的是XML的版本,encoding="UTF-8"則是所使用的編碼方式。注意:<?之間不能有空格,否則則會出錯。

XML可以發(fā)明屬于自己的標簽

什么意思呢?在HTML中我們知道標簽這個概念,但是HTML當中的標簽是都是規(guī)定好的,標簽當中不能有中文字符出現(xiàn),但是在XML當中,我們可以使用中文標簽:<中文>。

圖片.png
XML 文檔形成一種樹結構

XML 文檔必須包含根元素。該元素是所有其他元素的父元素。
XML 文檔中的元素形成了一棵文檔樹。這棵樹從根部開始,并擴展到樹的最底端。

父、子以及同胞等術語用于描述元素之間的關系。父元素擁有子元素。相同層級上的子元素成為同胞(兄弟或姐妹)。

所有元素均可擁有文本內容和屬性(類似 HTML 中)。

圖片.png

圖片當中的根元素是 <bookstore>。文檔中的所有 <book> 元素都被包含在 <bookstore> 中。
<book> 元素有 4 個子元素:<title>、< author>、<year>、<price>。

XML的標簽必須是閉合的

在HTML當中,有些標簽是無需閉合的。就像<p>,<h>等等。但是在XML中,不閉合的標簽是非法的。

圖片.png
圖片.png
XML 標簽對大小寫敏感

在XML文檔中,我們的標簽是區(qū)分大小寫的,我們必須確保我們寫的標簽大小寫正確,不然也是會報錯的。

實體引用

在 XML 中,一些字符擁有特殊的意義。
如果你把字符 "<" 放在 XML 元素中,會發(fā)生錯誤,這是因為解析器會把它當作新元素的開始。
這樣會產(chǎn)生 XML 錯誤:

圖片.png

為了避免這個錯誤,用實體引用來代替 "<" 字符。

下面是5個預定義的實體引用:

圖片.png
XML 元素 vs. 屬性

請看下面的例子:

<person sex="female">
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person> 

<person>
  <sex>female</sex>
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person> 

在第一個例子中,sex 是一個屬性。在第二個例子中,sex 則是一個子元素。兩個例子均可提供相同的信息。沒有什么規(guī)矩可以告訴我們什么時候該使用屬性,而什么時候該使用子元素。但是在 HTML 中,屬性用起來很便利,但是在 XML 中,應該盡量避免使用屬性。如果信息感覺起來很像數(shù)據(jù),那么請使用子元素吧。

文檔類型定義(DTD)可定義合法的XML文檔構建模塊。它使用一系列合法的元素來定義文檔的結構。DTD 可被成行地聲明于 XML 文檔中,也可作為一個外部引用。
內部的 DOCTYPE 聲明

<!DOCTYPE 根元素 [元素聲明]>

請看下面的例子:

圖片.png
圖片.png

上面的例子報錯了,因為在DTD當中規(guī)定了標簽的順序,先是teacher接著是student最后才是classroom,但是在XML中先寫了classroom標簽,因此報錯了。

<?xml version="1.0"?>
<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to      (#PCDATA)>
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body    (#PCDATA)>
]>
<note>
  <to>George</to>
  <from>John</from>
  <heading>Reminder</heading>
  <body>Don't forget the meeting!</body>
</note>
以上 DTD 解釋如下:
●!DOCTYPE note (第二行)定義此文檔是 note 類型的文檔。
●!ELEMENT note (第三行)定義 note 元素有四個元素:"to、from、heading,、body"
●!ELEMENT to (第四行)定義 to 元素為 "#PCDATA" 類型
●!ELEMENT from (第五行)定義 from 元素為 "#PCDATA" 類型
●!ELEMENT heading (第六行)定義 heading 元素為 "#PCDATA" 類型
●!ELEMENT body (第七行)定義 body 元素為 "#PCDATA" 類型
外部文檔聲明

假如 DTD 位于 XML 源文件的外部,那么它應通過下面的語法被封裝在一個 DOCTYPE 定義中:

<!DOCTYPE 根元素 SYSTEM "文件名">

這個 XML 文檔和上面的 XML 文檔相同,但是擁有一個外部的 DTD:

<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note> 

這是包含 DTD 的 "note.dtd" 文件:

<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
為什么使用 DTD?

通過 DTD,您的每一個 XML 文件均可攜帶一個有關其自身格式的描述。
通過 DTD,獨立的團體可一致地使用某個標準的 DTD 來交換數(shù)據(jù)。
而您的應用程序也可使用某個標準的 DTD 來驗證從外部接收到的數(shù)據(jù)。
您還可以使用 DTD 來驗證您自身的數(shù)據(jù)。

未完待續(xù)。。。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1. XML簡介 以下內容來自于http://www.w3school.com.cn/xml 基本知識 XML 和...
    WebSSO閱讀 2,092評論 1 7
  • HTML(HyperText Markup Language),即超文本標記語言,是用于描述網(wǎng)頁文檔的一種描述標記...
    Yinag閱讀 2,023評論 0 1
  • 經(jīng)過兩天的奮戰(zhàn),終于把xml簡略的過了一遍。 1.1XML介紹 xml是Extensible Markup lan...
    Ystrator閱讀 1,030評論 0 2
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 14,154評論 1 92
  • 我以為我有了別人就可以不念你 可未曾想潛意識里還是深藏著你 我以為我的心沒了你就不會砰砰直跳 可在夢里你又讓它如小...
    風散種子閱讀 155評論 0 0

友情鏈接更多精彩內容