標題:XML新手入門教程:瞭解學習 XML 屬性

來源:互聯網
上載者:User
標題:XML新手入門教程:瞭解學習 XML 屬性
本文:

與HTML類似,XML元素也可以在開始標籤中包含屬性。

屬性被用於提供關於元素的附加資訊。

XML 屬性

XML元素可擁有屬性。

回憶一下HTML的這個標籤:<IMG SRC="http://www.webjx.com/htmldata/2007-06-20/computer.gif">。SRC屬性提供了關於img元素的附加資訊。

在HTML(以及XML)中,屬性可提供有關元素的附加(額外的)資訊:

<img src="http://www.webjx.com/htmldata/2007-06-20/computer.gif"><a href="demo.asp">

屬性常常會提供並非資料群組成部分的資訊。在下面的例子中,檔案的類型和資料是無關的,但是對需要處理這個元素的軟體來說卻很重要:

<file type="gif">http://www.webjx.com/htmldata/2007-06-20/computer.gif</file>
引號類型,"female" 還是 'female'?

屬性值必須被引號所包圍,不過單引號和雙引號均可使用。比如某人的性別,person標籤可以這樣寫:

<person sex="female">

或者這樣也可以:

<person sex='female'>

注釋:如果屬性值本身包含雙引號,那麼有必要使用單引號包圍它,就像這個例子:

<gangster name='George "Shotgun" Ziegler'>

注釋:如果屬性值本身包含單引號,那麼有必要使用雙引號包圍它,就像這個例子:

<gangster name="George 'Shotgun' Ziegler">
使用元素還是屬性

資料可被儲存於子項目之中,或者在屬性中也可以。

請看這些例子:

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

在第一個例子中,sex是一個屬性。在第二個例子中,sex則是一個子項目。兩個例子均可提供相同的資訊。

沒有規則可以告訴我們什麼時候該使用屬性,而什麼時候該使用子項目。我的經驗是在HTML中,屬性用起來很便利,但是在XML中,您應該盡量避免使用屬性。如果資訊感覺起來很像資料,那麼請使用子項目吧。

我最喜歡的方式

我喜歡在子項目中儲存資料。

下面是三個包含相同的資訊的XML文檔:

第一個例子中使用了屬性:

<note date="12/11/2002"><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>

第二個例子中使用了元素:

<note><date>12/11/2002</date><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>

第三個例子中使用了擴充的元素(這是我的最愛):

<note><date>  <day>12</day>  <month>11</month>  <year>2002</year></date><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note> 
避免使用屬性?

我們應當避免使用屬性嗎?

因使用屬性而引起的一些問題:
  • 屬性無法包含多個值(子項目可以)
  • 屬性不易擴充(為未來的變化)
  • 屬性無法描述結構(子項目可以)
  • 屬性更難被編程代碼處理
  • 不易通過某個DTD對屬性值進行測試 - DTD用來定義XML文檔的合法元素

如果您使用屬性作為資料的容器,那麼就會造就難以閱讀和維護的文檔。請盡量使用元素來描述資料。而僅僅使用屬性來提供與資料無關的資訊。

不要做這樣的蠢事(這不是XML應該被使用的方式):

<note day="12" month="11" year="2002"to="Tove" from="Jani" heading="Reminder" body="Don't forget me this weekend!"></note> 
屬性規則的一個例外

規則總有例外。

有時候,我會向元素分配ID索引。這些ID索引可被用來訪問XML元素,其作用的方式與HTML中的NAME屬性或者ID屬性是一樣的。這個例子向我們示範了這種情況:

<messages>  <note id="p501">    <to>Tove</to>    <from>Jani</from>    <heading>Reminder</heading>    <body>Don't forget me this weekend!</body>  </note>  <note id="p502">    <to>Jani</to>    <from>Tove</from>    <heading>Re: Reminder</heading>    <body>I will not!</body>  </note> </messages>

這個例子中的ID只是一個計數器,或者一個唯一的標識符,用來標示XML檔案中不同的便簽,並不是便簽資料的一部分。

在此我們極力向您傳遞的理念是:中繼資料(有關資料的資料)應當儲存為屬性,而資料本身應當儲存為元素

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.