XML.01-文法簡介,xml.01-文法

來源:互聯網
上載者:User

XML.01-文法簡介,xml.01-文法

  

 

  • XML.01-文法簡介
      • 文檔聲明
      • 元素(標籤)
      • 屬性
      • 注釋
      • 特殊字元
      • CDATA地區
      • 處理指示

啥是XML?
xml (Extensible Markup Language)可擴充的標記語言,顧名思義,XML最重要的兩個因素:

  • 可擴充
  • 標籤,可以自訂的標籤

XML可以看作是HTML的一個超集,但是,兩者設計的目的是不一樣的. HTML的設計目的是顯示資訊,而XML的設計目的是傳輸資訊.

XML幹啥使

  • 用來結構化描述有關係的資料
  • XML可以用來把資料從HTML中分離出來
  • XML可以更好的在異構系統之間傳輸資料
  • XML還大量的被應用於軟體的設定檔

XML現有版本
XML目前有1.0 和1.1 兩個版本,但是1.1不向後相容1.0,所以大家基本還是在用1.0

XML檔案可以分為以下幾部分內容:

  • 文檔聲明
  • 元素
  • 屬性
  • 注釋
  • CDATA區
  • 處理指示(PI)
文檔聲明
  • <?xml version="1.0" encoding="UFT-8" ?>
  • 文檔聲明必須出現在xml的第一行位置.
  • 屬性:
    • version=”1.0” xml的版本
    • encoding=”UTF-8” 編碼集
    • standalone=”[yes|no]” 代表xml是否可以獨立,其實也不寫都可以引入外部檔案.

亂碼問題,要保證儲存和開啟的編碼方式一致(我一直的解決方案就是永遠UTF-8…)

 

元素(標籤)

元素指的是XML檔案中出現的標籤,標籤分為起始和結束.

  • 開始和結束標籤
    • 包含標籤主體:<abc>文本</abc>
    • 不包含標籤主體: <abc/>
  • 標籤不能交叉嵌套
  • 只能有且必須有一個根項目

元素的命名規範:

  • 大小寫敏感
  • 不能以數字或-開頭
  • 不能以xml開頭
  • 不能有空格和冒號
  • 不可以包含冒號和空格
  • 不能以xml開頭(大小寫都不行)
屬性

一個元素可以有多個屬性,屬性應該有自己的名字和值.比如<mytag name="value">

  • 在同一元素上不能有相同的屬性
  • 屬性必須用引號(單引號或者雙引號)
  • 屬性可以自訂,並且命名規範與元素一致

XML中的屬性很多時候是可以被轉換成元素的. 比如

<person sex="male">
<name>Brady</name>
</person>

完全可以寫成

<person>
<sex>male</sex>
<name>Brady</name>
</person>

那麼,什麼時候使用屬性,什麼時候使用標籤呢? W3Cschool上那大哥說,盡量把看起來像資料的都用標籤表示.為什麼呢?

  • 屬性無法包含多重值(複雜結構),BUT!!!元素可以!!!
  • 屬性不能描述樹狀結構,BUT!!!元素可以!!!
  • 屬性不易擴充,BUT!!!元素可以!!!
  • 屬性難以閱讀和維護,BUT!!!元素可以!!!

看一個例子,比如要修改下面這個XML,使它更合理,那麼有三種寫法

<note date="08/08/2008">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

普通寫法:

<note>
<date>08/08/2008</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

文藝寫法:

<note>
<date>
<day>08</day>
<month>08</month>
<year>2008</year>
</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

二逼寫法:

<note day="08" month="08" year="2008"
to="George" from="John" heading="Reminder"
body="Don't forget the meeting!">
</note>

上面說把所有看起來像資料的都用標籤,那我看起來所有玩意兒都像資料咋整…

看下面這個例子:

<messages>
<note id="501">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
<note id="502">
<to>John</to>
<from>George</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>

這裡就是用了id來作為屬性. 所以這麼說,中繼資料(用於修飾資料的資料)應當作為屬性來使用,而資料本身應該儲存為元素.

注釋
  • 和HTML的注釋,一毛一樣 <!-- -->
  • 注釋不能嵌套
特殊字元
  • < &lt;
  • > &gt;
  • & &amp;
  • quot;
  • &apos;
CDATA地區

PCDATA地區值的是被解析的字元資料,(Parsed Character Data)
CDATA地區中的文本會被解析器忽略,也就是說CDATA地區的字串僅僅就是個字串不會被作為XML解析.

<![CDATA[
內容會被看作字串
]]>

CDATA地區的作用:
在XML中的< 和&是非法的,可以通過逸出字元來解決,但是如果一個文本地區出現大量的類似字元,逸出字元就很麻煩.
這時候可以使用CDATA地區來解決這個問題.

處理指示

處理指示,簡稱PI(Processing Instruction),是用來指揮軟體如何解析XML文檔的.被<? ?>包裹起來的就是PI,比如前面說到的XML文檔聲明其實就是一個PI.
這個貌似用處不是很大…不想看了

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.