Like Share Discussion Bookmark Smile

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

XML教學 | 屬性

XML屬性

XML元素具有屬性,類似HTML
屬性(Attribute)提供有關元素的額外訊息。

HTML中,屬性提供有關元素的額外訊息:

1
2
<img src="computer.gif">
<a href="demo.html">

屬性通常提供不屬於資料組成部分的訊息。
此範例中,文件類型與資料無關,但是對需要處理這個元素的軟體來說卻很重要:

1
<file type="gif">computer.gif</file>

屬性必須加引號

屬性值必須被引號包圍,可以使用單引號或雙引號。
舉例對於一個人的性別,<person>元素可以這樣寫:

1
2
3
4
5
<person gender="female">

<!-- 或 -->

<person gender='female'>

如果屬性值本身包含雙引號,可以使用單引號,如範例所示:

1
2
3
4
5
<gangster name='George "Shotgun" Ziegler'>

<!-- 或者可以使用特殊字符 -->

<gangster name="George &quot;Shotgun&quot; Ziegler">

註:特殊字符,可以參考XML教學 | 語法規則


元素與屬性

1
2
3
4
<person gender="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
1
2
3
4
5
<person>
<gender>female</gender>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>

在第一個範例中,性別是一個屬性。
最後一個範例中,性別是一個元素。
以上這兩個範例都提供了相同的訊息。

沒有關於何時使用屬性或何時使用XML中的元素的規則。
HTML中,屬性用起來方便,但是在XML中,應該盡量避免使用屬性。如果訊息感覺起來很像資料,那麼就用元素吧。


常見的方式

以下三個XML文件包含完全相同的訊息:

  • 第一個使用了日期屬性:

    1
    2
    3
    4
    <note date="2008-01-10">
    <to>Tove</to>
    <from>Jani</from>
    </note>
  • 第二個使用了<date>元素:

    1
    2
    3
    4
    5
    <note>
    <date>2008-01-10</date>
    <to>Tove</to>
    <from>Jani</from>
    </note>
  • 第三個使用了擴展的<date>元素:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <note>
    <date>
    <year>2008</year>
    <month>01</month>
    <day>10</day>
    </date>
    <to>Tove</to>
    <from>Jani</from>
    </note>

避免使用的情況

使用屬性時需要考慮的一些事是:

  • 屬性不能包含多個值(元素可以)
  • 屬性不能包含樹結構(元素可以)
  • 屬性不易擴展(以備將來更改)

要知道屬性步好閱讀與維護。請使用元素來描述資料。而僅僅使用屬性來提供與資料無關的訊息。

以下範例不是XML應該被使用的方式:

1
2
<note day="10" month="01" year="2008" to="Tove" from="Jani" heading="Reminder" body="Don't forget me this weekend!">
</note>

元資料的屬性

有時ID引用會分配給元素。這些ID可用於標識XML元素,其方式與HTML中的id屬性非常相似。

參考範例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<messages>
<note id="501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>

上面的 id 屬性僅僅是一個標識符,用於標識不同的便簽。它並不是便簽資料的組成部分。
這裡想說的是元資料(有關資料的資料)應該作為屬性儲存,而資料本身應該作為元素儲存。

  • id="501", id="502" 只是這個<note>資料流水號,他並不是資料本身。
  • <to>, <from>, <heading>, <body>,這些就是資料本身。

結語

了解了元素中的使用方式與使用時機,可以更好的操作XML裡面的資料。在此基本的XML算是學習完畢了。
下一章節將會對XML進行所謂的驗證。


註:以上參考了
w3resource.com - XML Attributes
RUNOOB.COM - XML 属性
維基百科-XML
Family with 220 icons by inipagi