Like Share Discussion Bookmark Smile

J.J. Huang   2022-11-07   XML 1.基本教學   瀏覽次數:次   DMCA.com Protection Status

XML教學 | 語法規則

XML語法規則

XML的語法規則很簡單,且很有邏輯。這些規則很容易學習,也很容易使用。

第一行是XML宣告:

  • XML宣告說明XML文件的基本資訊,包括版本號與字元集,寫在XML第一行。
    1
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    • version:該屬性必須存在。
    • encoding:該屬性非必須的,打開當前XML文件的時候應該是使用什麼編碼。

      註:UTF-8也是HTML5, CSS, JavaScript, PHP, 和SQL的預設編碼。

    • standalone:該屬性非必須的,描述XML文件是否依賴其他的XML文件;取值為yes/no

XML文件必須有根元素:

  • XML必須包含根元素,它是所有其他元素的父元素。
  • 只有一個根元素。

以下範例note為根元素 -

1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

擷取於:w3schools View a simple XML file (note.xml)

以下範例breakfast_menu為根元素 -

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8"?>
<breakfast_menu>
<food>
<name>Belgian Waffles</name>
<price>$5.95</price>
<description>Two of our famous Belgian Waffles with plenty of real maple syrup</description>
<calories>650</calories>
</food>
<food>
<name>Homestyle Breakfast</name>
<price>$6.95</price>
<description>Two eggs, bacon or sausage, toast, and our ever-popular hash browns</description>
<calories>950</calories>
</food>
</breakfast_menu>

擷取於:w3schools View an XML food menu (simple.xml)


XML標籤必須成對出現:

  • 建立XML時,省略結束標籤是不合法的。XML元素必須具有結束標籤。

HTML中,某些元素不必有一個關閉標籤:

1
2
<p>See Spot run.
<p>See Spot catch the ball.

XML中,省略關閉標籤是非法的。所有元素都必須有關閉標籤:

1
2
<p>See Spot run.</p>
<p>See Spot catch the ball.</p>

註:從上面的範例,可以注意到XML宣告沒有關閉標籤。這不是錯誤。宣告不是XML文件本身的一部分,它沒有關閉標籤。


XML標籤大小寫敏感:

  • 建立XML文件時,標籤<Body>與標籤<body>是不同的。
1
2
<Body>See Spot run.</body> <!-- 不正確 -->
<body>See Spot run.</body> <!-- 正確 -->

XML元素都必須適當巢狀化

  • 不適當的巢狀標籤對 XML 沒有意義。
1
2
<b><i>This text is bold and italic.</b></i> <!-- 不正確 -->
<b><i>This text is bold and italic.</i></b> <!-- 正確 -->

註:從上面的範例,正確巢狀化的意思是:由於<i>元素是在<b>元素內打開的,那麼它必須在<b>元素內關閉。


屬性值必須一律以引號括住

  • 在屬性值周圍省略引號是不合法的。
  • XML元素可以有名稱/值配對中的屬性;不過,屬性值必須一律以引號括住。
1
2
3
4
<note date=12/11/2007> <!-- 不正確 -->
<to>Tove</to>
<from>Jani</from>
</note>
1
2
3
4
<note date="12/11/2007"> <!-- 正確 -->
<to>Tove</to>
<from>Jani</from>
</note>

註:從上面的範例,第一個note元素內的date屬性的值,並沒有使用引號括住。


XML特殊字符與CDATA標籤

  • XML中,一些字符擁有特殊的意義。如果把字符<放在XML元素中,會發生錯誤,這是因為解析器會把它當作新元素的開始。

  • 解決方式一:使用實體參照。

實體 符號 說明
&lt; < 小於
&gt; > 大於
&amp; & 和號
&apos; 單引號
&quot; 雙引號

範例:

1
2
<message>if salary < 1000 then</message> <!-- 不正確 -->
<message>if salary &lt; 1000 then</message> <!-- 正確 -->
  • 解決方式二:使用<![CDATA[開始 ~ 結束]]>將該部分內容包裹起來。

範例:

1
2
<message>if salary < 1000 then</message> <!-- 不正確 -->
<message><![CDATA[if salary &lt; 1000 then ]]></message> <!-- 正確 -->

XML空格會被保留

  • HTML會把多個連續的空格(合併)為一個。
  • XML中,文件中的空格不會被刪減。

XML註解

  • XML中註解的語法與HTML的語法很相似。
1
<!-- This is a comment -->

結語

最後總結一下XML的語法規則:

  • 文件宣告必須要在第一行。
  • 必須存在一個根,有且只能有一個。
  • 標籤必須有結束標籤(成對)。
  • 標籤名稱是大小寫敏感。
  • 標籤必須適當巢狀化。
  • 屬性的值必須使用引號括括住。
  • 特殊符號需要做處理。
  • 空格會被保留

基本上這些規則都不難理解,也不難記得,所以XML在使用上可以說是非常簡單的,下一章節將會對元素做更深入的介紹。


註:以上參考了
IBM - XML 語法規則
稀土掘金 - XML学习 “騎著小黑馬”
w3resource.com - XML CDATA
RUNOOB.COM - XML 语法规则
維基百科-XML
Family with 220 icons by inipagi