| 本文: 與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檔案中不同的便簽,並不是便簽資料的一部分。 在此我們極力向您傳遞的理念是:中繼資料(有關資料的資料)應當儲存為屬性,而資料本身應當儲存為元素。 |