XML教程之了解學(xué)習(xí) XML 屬性_Xml教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:如何驗(yàn)證XML是合法的XML
      擁有正確語法的XML是構(gòu)成良好的XML。 通過某種DTD進(jìn)行了驗(yàn)證的XML是合法的XML。 構(gòu)成良好的XML文檔 一個(gè)構(gòu)成良好的XML文檔擁有正確的語法。 一個(gè)W構(gòu)成良好的XML文檔會(huì)遵守前幾章介紹過的XML語法規(guī)則: XML文檔必須有根元素 XML文檔必須有關(guān)閉標(biāo)簽 XML標(biāo)

      與HTML類似,XML元素也可以在開始標(biāo)簽中包含屬性。

      屬性被用于提供關(guān)于元素的附加信息。

      XML 屬性

      XML元素可擁有屬性。

      回憶一下HTML的這個(gè)標(biāo)簽:<IMG SRC="computer.gif">。SRC屬性提供了關(guān)于img元素的附加信息。

      在HTML(以及XML)中,屬性可提供有關(guān)元素的附加(額外的)信息:

      <img src="computer.gif">
      <a href="demo.asp">

      屬性常常會(huì)提供并非數(shù)據(jù)組成部分的信息。在下面的例子中,文件的類型和數(shù)據(jù)是無關(guān)的,但是對(duì)需要處理這個(gè)元素的軟件來說卻很重要:

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

      引號(hào)類型,"female" 還是 'female'?

      屬性值必須被引號(hào)所包圍,不過單引號(hào)和雙引號(hào)均可使用。比如某人的性別,person標(biāo)簽可以這樣寫:

      <person sex="female">

      或者這樣也可以:

      <person sex='female'>

      注釋:如果屬性值本身包含雙引號(hào),那么有必要使用單引號(hào)包圍它,就像這個(gè)例子:

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

      注釋:如果屬性值本身包含單引號(hào),那么有必要使用雙引號(hào)包圍它,就像這個(gè)例子:

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

      使用元素還是屬性

      數(shù)據(jù)可被存儲(chǔ)于子元素之中,或者在屬性中也可以。

      請(qǐng)看這些例子:

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

      在第一個(gè)例子中,sex是一個(gè)屬性。在第二個(gè)例子中,sex則是一個(gè)子元素。兩個(gè)例子均可提供相同的信息。

      沒有規(guī)則可以告訴我們什么時(shí)候該使用屬性,而什么時(shí)候該使用子元素。我的經(jīng)驗(yàn)是在HTML中,屬性用起來很便利,但是在XML中,您應(yīng)該盡量避免使用屬性。如果信息感覺起來很像數(shù)據(jù),那么請(qǐng)使用子元素吧。

      我最喜歡的方式

      我喜歡在子元素中存儲(chǔ)數(shù)據(jù)。

      下面是三個(gè)包含相同的信息的XML文檔:

      第一個(gè)例子中使用了屬性:

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

      第二個(gè)例子中使用了元素:

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

      第三個(gè)例子中使用了擴(kuò)展的元素(這是我的最愛):

      <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> 

      避免使用屬性?

      我們應(yīng)當(dāng)避免使用屬性嗎?

      因使用屬性而引起的一些問題:

      • 屬性無法包含多個(gè)值(子元素可以)
      • 屬性不易擴(kuò)展(為未來的變化)
      • 屬性無法描述結(jié)構(gòu)(子元素可以)
      • 屬性更難被編程代碼處理
      • 不易通過某個(gè)DTD對(duì)屬性值進(jìn)行測試 - DTD用來定義XML文檔的合法元素

      如果您使用屬性作為數(shù)據(jù)的容器,那么就會(huì)造就難以閱讀和維護(hù)的文檔。請(qǐng)盡量使用元素來描述數(shù)據(jù)。而僅僅使用屬性來提供與數(shù)據(jù)無關(guān)的信息。

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

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

      屬性規(guī)則的一個(gè)例外

      規(guī)則總有例外。

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

      <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>

      這個(gè)例子中的ID只是一個(gè)計(jì)數(shù)器,或者一個(gè)唯一的標(biāo)識(shí)符,用來標(biāo)示XML文件中不同的便簽,并不是便簽數(shù)據(jù)的一部分。

      在此我們極力向您傳遞的理念是:元數(shù)據(jù)(有關(guān)數(shù)據(jù)的數(shù)據(jù))應(yīng)當(dāng)存儲(chǔ)為屬性,而數(shù)據(jù)本身應(yīng)當(dāng)存儲(chǔ)為元素
       

       

      分享:XML教程之XML 瀏覽器支持
      幾乎所有的主流瀏覽器均支持XML和XSLT。 Mozilla Firefox 從1.0.2版本開始,F(xiàn)irefox就已開始支持XML和XSLT(包括CSS)。 Mozilla Mozilla含有用于XML解析的Expat,并支持顯示XML + CSS。Mozilla同時(shí)擁有對(duì)Namespaces的某些支持。 Mozilla同樣可做到對(duì)XSLT的

      來源:模板無憂//所屬分類:Xml教程/更新時(shí)間:2010-02-25
      相關(guān)Xml教程