XML檔案結構和基本語法

NO IMAGE

XML檔案結構和基本語法

分類: html java2010-03-12 17:04 903人閱讀 評論(1) 收藏 舉報

4.1.1               XML檔案結構

一個XML檔案通常包含檔案頭和檔案體兩大部分

1.         檔案頭

XML檔案頭由XML宣告與DTD檔案型別宣告組成。其中DTD檔案型別宣告是可以缺少的,關於DTD宣告將在後續的內容中介紹,而XML宣告是必須要有的,以使檔案符合XML的標準規格。

在前面的Flowers.xml檔案中的第一行程式碼即為XML宣告:

<?xml version=”1.0″ encoding=”gb2312″?>

              其中:

“<?”代表一條指令的開始,“?>”代表一條指令的結束;

“xml”代表此檔案是XML檔案;

“ version=”1.0″ ”代表此檔案用的是XML1.0標準;

“ encoding=”gb2312″ ” 代表此檔案所用的字符集,預設值為Unicode,如果該檔案中要用到中文,就必須將此值設定為gb2312。

 

注意:XML宣告必須出現在文件的第一行。

 

2.         檔案體

檔案體中包含的是XML檔案的內容,XML元素是XML檔案內容的基本單元。從語法講,一個元素包含一個起始標記、一個結束標記以及標記之間的資料內容。

 

XML元素與HTML元素的格式基本相同,其格式如下:

<標記名稱 屬性名1=屬性值1 屬性名1=屬性值1 ……>內容</標記名稱>

 

所有的資料內容都必須在某個標記的開始和結束標記內,而每個標記又必須包含在另一個標記的開始與結束標記內,形成巢狀式的分佈,只有最外層的標記不必被其他的標記所包含。最外層的是根元素(Root),又稱檔案(Document)元素,所有的元素都包含在根元素內。

在前面的Flowers.xml檔案中,根元素就是<Flowers>,根元素必須而且只能有一個,在該檔案有三個<Flower>子元素,這樣的元素可以有多個。

4.1.2               XML的基本語法

1.         註釋

XML的註釋與HTML的註釋相同,以“<!–”開始,以“–>”結束。

 

2.         區分大小寫

在HTML中是不區分大小寫的,而XML區分大小寫,包括標記,屬性,指令等。

 

3.         標記

XML標記與HTML標記相同,“<”表示一個標記的開始,“>” 表示一個標記的結束。XML中只要有起始標記,就必須有結束標記,而且在使用巢狀結構時,標記之間不能交叉。

在XML中不含任何內容的標記叫做空標記,格式為:<標記名稱/>

 

4.         屬性

XML屬性的使用與HTML屬性基本相同,但需要注意的是屬性值要加雙引號。

 

5.         實體引用

實體引用是指分析文件時會被字元資料取代的元素,實體引用用於XML文件中的特殊字元,否則這些字元會被解釋為元素的組成部分。例如,如果要顯示“<”,需要使用實體引用“&lt;”否則會被解釋為一個標記的起始。

XML中有5個預定義的實體引用,如表 4.1所示。

表 4.1 XML預定義的實體引用

&lt;

&gt;

&quot;

&apos;

&amp;

&

 

6.         CDATA

在XML中由一個特殊的標記CDATA,在CDATA中所有文字都不會被XML處理器解釋,直接顯示在瀏覽器中,使用方法如下:

<![CDATA[

這裡的內容可以直接顯示。

]]>

 

7.         處理指令

處理指令使用來給處理XML檔案的應用程式提供資訊的,處理指令的格式如下:

<?處理指令名稱 處理指令資訊?>

              例如,XML宣告就是一條處理指令:

<?xml version=”1.0″ encoding=”gb2312″?>

其中,“xml”是處理指令名稱,version=”1.0″ encoding=”gb2312″是處理指令資訊。

4.2         XML與CSS

利用CSS可以用來設定XML檔案的顯示方式,即在XML檔案的頭部,XML宣告的下面加入下面一條語句:

       <?xml:stylesheet type=”text/css” href=”css檔案的URL”?>

 

下面我們通過例子來介紹如何利用CSS來顯示XML檔案。首先建立一個css檔案,程式碼如下:

 

flowers.css:一個顯示XML檔案的CSS樣式

       flower{font-size:24px; display:block}

vendor{font-size:36px;color:red}

price{display:block}

 

然後,在flowers.xml檔案中使用這個css樣式,即在flowers.xml檔案中的XML宣告下面加入以下語句:

<?xml:stylesheet type=”text/css” href=”flowers.css”?>

 

完整的程式程式碼如下:

ex4_3_01.xml:利用CSS 顯示XML檔案

<?xml version=”1.0″ encoding=”gb2312″?>

<?xml:stylesheet type=”text/css” href=”Flowers.css”?>

 

<Flowers>

<Flower>

       <Vendor>shop1</Vendor>

       <Name>iris</Name>

       <Price>$4.00</Price>

</Flower>

<Flower>

       <Vendor>shop2</Vendor>

       <Name>iris</Name>

       <Price>$4.30</Price>

</Flower>

<Flower>

       <Vendor>shop3</Vendor>

       <Name>iris</Name>

       <Price>$3.50</Price>

</Flower>

</Flowers>

      

       此例在瀏覽器中的顯示效果如圖 4.2所示。

 

圖 4.2 利用CSS 顯示XML檔案

       用CSS來顯示XML檔案時,不具備任何選擇性,也就是說,根元素之下的所有資料都會被全部顯示,不能改變原檔案的結構和內容的順序。另外,CSS並不支援中文標記,因為CSS 不是專門為XML開發的樣式語言,而下面要介紹到的XSL就可以,XSL是特別為XML設計的,它比CSS更為複雜。

4.3         XSL

在上一節介紹的用CSS顯示XML檔案,效果不是很理想,實際上,CSS主要是適合HTML檔案,對於XML這種資料檔案,CSS就不適合了,尤其是對那些需要按照不同的條件將檔案內容重新排列顯示的情況,而用XSL就可以。

XSL是當前最強大和靈活的樣式語言,是特別為應用XML而設計的,它比CSS要複雜的多。但是,目前它還未被很好的支援,也還沒有最後完成。

利用XSL來設定XML檔案的顯示方式,即在XML檔案的頭部,XML宣告的下面加入下面一條語句:

       <?xml:stylesheet type=”text/xsl” href=”xsl檔案的URL”?>

 

下面我們通過例子來介紹如何利用XSL來顯示XML檔案。首先建立一個xsl檔案,程式碼如下:

flowers.xsl:用來顯示XML檔案的xsl檔案

<?xml version=”1.0″ encoding=”gb2312″?>

<xsl:stylesheet xmlns:xsl=”http://www.w3.org/TR/WD-xsl”>

<xsl:template match = “/”>

    <table border=”1″>

    <tr align=”center”>

           <th width=”100″>Vendor</th>

           <th width=”100″>Flower</th>

           <th width=”100″>Price</th>

    </tr>

    <xsl:for-each select=”//Flowers/Flower”>

    <tr align=”center”>

           <td><xsl:value-of select=”Vendor”/></td>

           <td><xsl:value-of select=”Name”/></td>

           <td><xsl:value-of select=”Price”/></td>

    </tr>

    </xsl:for-each>

    </table>

</xsl:template>

</xsl:stylesheet>

 

我們可以看出:一個XSL檔案就如一個空的HTML檔案,通過填充一個XML檔案產生一個傳統的HTML檔案。

一個XSL檔案首先必須有一個XML宣告(即第一行),因為XSL實際上是一種特殊的XML檔案。XSL的根元素是xsl:stylesheet,即一個XSL檔案必須以<xsl:stylesheet>標記開始,以</xsl:stylesheet>標記結束,xmlns:xsl屬性用於設定XSL的命名域。

XSL的根元素通常是由一個或多個樣板元素所組成,在此例中只包含單一樣板,它是由<xsl:template>標記開始,以<xsl:template>標記結束,使用match屬性可以在XML檔案中選取符合條件的節點,即設定樣板名稱,對於最上層樣板,match設為“/”,代表整個XML檔案的根元素。

然後是從XML檔案中取得所需的資料,取得資料最簡單的方法是:

<xsl:value-of select=”模式”/>

如果要取得多個元素,則要使用xsl:for-each元素,格式如下:

<xsl:for-each select=”模式”>

…..

</xsl:for-each>

 

 

接下來,我們要在flowers.xml檔案中使用這個xsl檔案,即在flowers.xml檔案中的XML宣告下面加入以下語句:

<?xml:stylesheet type=”text/xsl” href=”flowers.xsl”?>

 

完整的程式程式碼如下:

ex4_4_01.xml:利用XSL 顯示XML檔案

<?xml version=”1.0″ encoding=”gb2312″?>

<?xml:stylesheet type=”text/xsl” href=”flowers.xsl”?>

 

<Flowers>

<Flower>

       <Vendor>shop1</Vendor>

       <Name>iris</Name>

       <Price>$4.00</Price>

</Flower>

<Flower>

       <Vendor>shop2</Vendor>

       <Name>iris</Name>

       <Price>$4.30</Price>

</Flower>

<Flower>

       <Vendor>shop3</Vendor>

       <Name>iris</Name>

       <Price>$3.50</Price>

</Flower>

</Flowers>

 

此例在瀏覽器中的顯示效果如圖 4.3所示。