DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> XML基礎入門
XML基礎入門
編輯:XML詳解     
討論XML文件以前我們先看一個例子:
  
  <person>
  
  ? Alan Turing
  
  </person>
  
  這就是一個標記完好的XML文件,<person>和</person>分別是開始標記和結束標記。
  
  l開始標記:以<開始,以>結束,中間是標記名稱。
  
  l結束標記:以</開始,以>結束,中間是標記名稱。
  
  注意:開始標記和結束標記對應的標記名稱必須相同,但是具體使用什麼作為名稱就沒有規定,這個和Html是不同的(Html的標記名是若干個確定的),你可以使用person來標記一個人,使用cat來標記一只貓。
  
  標記中間的Alan Turing就是數據,其中Alan和Turing之間的空格也是數據,也就是說標記裡面的數據中的空格不會別忽略。
  
  有時候我們也許需要沒有任何數據的元素(元素指開始標記和結束標記之間的內容,包含開始標記和結束標記,比如上面提到的例子就是一個元素),例如下面的:
  
  <person></person>
  
  這是一個空標記,但是我們有另外更簡捷的標記表示空標記:
  
  <person/>    注意:XML是區分大小寫的,這與Html不同。<Person>和<PERSON>是不同標記,比如你有一個元素以<person>開始,那麼你就不能使用</ Person >作為結束標記。
  
  上面的例子指含有一個元素,我們現在給出一個復雜點的例子,然後給出XML樹的概念。
  
  <person>
<name>
  
  <first_name>Alan</first_name>
  
  <last_name>Turing</last_name>
  
  </name>
  
  <profession>computer scIEntist</profession>
  
  <profession>mathematician</profession>
  
  <profession>cryptographer</profession>
  
  </person>
  
  顯然上面的例子外層仍然是一個person元素,但是與先前不同的是這個元素含有4個子元素,1個name元素和3個profession元素。我們稱person是name的父元素,顯然他也是profession的父元素,同樣我們可以看到name是first_name和last_name的父元素。
  
  上面的例子我們發現標記進行了嵌套,這是允許的。但是重疊標記是非法的,比如:
  <strong><em>this common example from Html</strong></em>
  
  應該是:
  
  <strong><em>this common example from Html</em></strong>
  
  根據上面的例子中父子元素的關系以及注意到任何XML文件只能且只能含有一個根元素(也就是沒有父元素的元素)看起來很象一個樹.
   
   
  現在我們給出一個混合數據的XML文件的例子,
  
  <biography> 
<name><first_name>Alan</first_name> <last_name>Turing</last_name>
  </name> was one of the first people to truly deserve the name
  <emphasize>computer scIEntist</emphasize>. Although his contributions
  to the fIEld are too numerous to list, his best-known are the
  eponymous <emphasize>Turing Test</emphasize> and

  <emphasize>Turing Machine</emphasize>.
  
  <definition>The <term>Turing Test</term> is to this day the standard
  test for determining whether a computer is truly intelligent. This
  test has yet to be passed. </definition>
  
  <definition>The <term>Turing Machine</term> is an abstract finite
  state automaton with infinite memory that can be proven equivalent
  to any any other finite state automaton with arbitrarily large memory.
  Thus what is true for a Turing Machine is true for all equivalent
  Machines no matter how implemented.
</definition>
  <name><last_name>Turing</last_name></name> was also an accomplished
  <profession>mathematician</profession> and
  <profession>cryptographer</profession>. His assistance
  was crUCial in helping the AllIEs decode the German Enigma
  Machine. He committed suicide on <date><month>June</month>
  <day>7</day>, <year>1954</year></date> after being
  convicted of homosexuality and forced to take female
  hormone injections.
  </biography> 
  上面的例子我不作解釋,但是你要知道他是一個合法的xml文件,也就是說標記和內容可以混排。但是這樣格式的XML文件在程序的處理上就很麻煩,所以不推薦使用。
  
  接著我們談談屬性(Attributes)。看例子:
  
  <person born="1912-06-23" dIEd="1954-06-07">
  
  Alan Turing
  
  </person>
  
  其中紅色標記的born和dIEd就是屬性。其中born是屬性名,1912-06-23是屬性值,屬性值是用”筐起來的,當然也可以用單引號’筐起來。
  
  <person dIEd = '1954-06-07'? born = '1912-06-23' >
Alan Turing
  
  </person>
  
  使用單引號的作用是你可以在屬性的值裡面添加雙引號。
  
  到這裡我們發現一個問題:
  
  <person>
  
  <name first="Alan" last="Turing"/>
  
  <profession value="computer scIEntist"/>
  
  <profession value="mathematician"/>
  
  <profession value="cryptographer"/>
  
  </person>
  
  這個例子中我在person元素裡面添加了4個子元素,每個元素有自己的屬性,以及對應的值,然後這4個元素都是空元素。對照前面我們給出的對應的例子,你覺得是把值限定在屬性裡面好還是直接放在標記之間好呢?這是一個爭論不休的問題,我的看法是由你自己定,看哪個爽就使用哪個。但是要注意對同一個元素,他不能同時含有幾個相同名稱的屬性。
  
  <person born="1912-06-23" born="1954-06-07">
  
  Alan Turing
  
  </person>
  
  上面的是非法的XML文件。
  
  接著我們看看特殊字符帶來的問題。由於<和>是作為標記使用的,所以一般情況下我們不能在數據部分直接包含<和>,而是使用<和> ,其實這個問題在html裡面就有了,處理方式也是和Html一樣,比如&我們使用& ,雙引號”使用"等。

  
  再看看注釋,方法和Html是一樣的: 
<!-- 左邊的是注釋開始標記,右邊的是結束標記 -->
  
  但是注意注釋的內容不能包含? -- ,同時注釋裡面的任何標記都會被忽略!同時需要注意的是注釋不能出現在一個元素的標記裡面。
  
  
  現在我們從整體上來看XML:
  
  1. XML聲明
  
  所有的xml文檔可能(也應該!)由一個xml聲明(XML Declaration)開始。雖然文檔聲
  
  明使用的是同指令處理類似的語法,但從技術上講,根據X M L推薦標准它們並不是一回事,因
  
  為聲明是XML中的保留部分。
  
  <?XML version="1.0" encoding="ASCII" standalone="yes"?>
  
  <person>
  
  Alan Turing
  
  </person>
  
  如果包括X M L聲明,它必須處在文檔最前面—前面不允許有任何空白或注釋。嚴格地講,
  
  在X M L當中這種聲明並不是必須的,但我們後面會看到,當處理文檔時,它確實會起到一些優化的作用。
  
  這些屬性已經在XML 1.0規范中做出了定義:
  
  version—不能省略;值必須為“1.0”;該屬性用來保證對X M L未來版本的支持。
  
  e n c o d i n g—可選;值必須是一種合法的字符編碼,例如“ U T F - 8”、“U T F - 1 6”或者
  
  “I S O - 8 8 5 9 - 1”(即L a t i n - 1字符編碼)。所有X M L解析器都要求至少支持U T F - 8和U T F - 1 6。
  
  如果沒有包含這個屬性,就假設是“ U T F - 8”或“ U T F - 1 6”編碼,這取決於開始的“< ? x m l”字符串的格式。 
s t a n d a l o n e—可選;值必須是“ y e s”或“n o”;如果是“y e s”就意味著所有必須的實體聲明都包含在文檔中,如果是“ n o”就意味著需要外部的D T D。DTD將在後面介紹。
  
  
  最後給出好的XML的相關要求:
  
  1.每個開始標記必須有一個結束標記匹配
  
  2.標記可以嵌套但是不能重疊
  
  3.每個XML文件只有一個根元素
  
  4.一個元素不能含有兩個相同名字的屬性
  
  5.注釋不能出現在元素標記裡面
  
  6.沒有<或者&等類似的字符出現在元素值或者屬性值裡面 
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved