XML可擴充樣式單語言

來源:互聯網
上載者:User

XML可擴充樣式單語言

XSL是一種語言,通過對XML文檔進行轉換,然後將轉換的結果表現出來。轉換的過程是根據XML文檔特性運用XSLT(XML Transformations)將XML文檔轉換為樹形結構(結果樹),這棵樹是帶有樣式資訊的。再按照FO(Formatted object)分析結果樹,將XML文檔表現出來。

XSL表現XML文檔的兩個步驟,建樹和表現樹。其中,建樹可以在伺服器端執行,也可以在用戶端執行。在伺服器端執行時,在伺服器端轉換產生HTML文檔,然後傳給用戶端瀏覽。如果在用戶端執行則需要用戶端支援XML和XSL,因為從伺服器端傳來的是XML和XSL文檔,這些文檔在客戶解析執行。

下面是一個完整的使用XSL樣式單的例子。通過這個例子,為大家介紹XSLT的轉換方法和XSLT的書寫格式。

程式清單3-8:example-3-7.xml

                     <?xml version="1.0" encoding="gb2312"?>

                     <?xml-stylesheet type="text/xsl" href="example-3-8.xsl"?>

                     <檔案>

                           <學生 性別="0">

                                 <姓名>張三</姓名>                      

                                 <ID>001</ID>

                                 <年齡>16</年齡>

                                 <電話>12345678</電話>

                           </學生>

                           <學生 性別="1">

                                 <姓名>李四</姓名>                      

                                 <ID>002</ID>

                                 <年齡>20</年齡>

                                 <電話>23456789</電話>

                           </學生>

                           <學生 性別="0">

                                 <姓名>王五</姓名>

                                 <ID>003</ID>

                                 <年齡>19</年齡>

                                 <電話>34567890</電話>

                           </學生>

                     </檔案>

程式清單3-9:example-3-8.xsl

                     <?xml version="1.0" encoding="gb2312"?>

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

                        <xsl:template><xsl:apply-templates/></xsl:template>

                        <xsl:template match="檔案">

                              <html>

                                    <head>

                                     <title>學生檔案示範</title>

                                    </head>

                                    <body>

                                         <table border="2" title="這是一個學生檔案示範." align="center">

                                         <caption>學生檔案示範</caption>

                                         <tr bgcolor="yellow">

                                           <th>姓名</th>

                                           <th>學號</th>

                                           <th>年齡</th>

                                           <th>聯絡電話</th>

                                         </tr>

                                         <xsl:for-each select="學生">

                                               <tr>

                                                  <td><xsl:value-of select="姓名"/></td>

                                                  <td><xsl:value-of select="ID"/></td>

                                                  <td><xsl:value-of select="年齡"/></td>

                                                  <td><xsl:value-of select="電話"/></td>

                                               </tr>

                                          </xsl:for-each>

                                        </table>                                    

                                    </body>

                              </html>

                          </xsl:template>

                      </xsl:stylesheet>

example-3-7.xml是一個XML文檔,我們用XSL樣式單example-3-8.xsl來表現這個XML文檔。

XSL文檔本身也是XML文檔,所以第一行和XML文檔一樣,是文檔聲明。第二行聲明了本XSL樣式單的名稱空間。

第四行指明應用模板函數。第5-31行是模板函數的定義。第5行說明了模板要匹配的節點。

XSL還提供一種類似於函數調用的方法去匹配模板。其形式為:

……

<xsl:apply-templates select="A"/>匹配參數為A的模板

……

<xsl:template match="A">參數為A的模板定義

……

</xsl:template>標記的匹配

通過上面的例子,我們可以知道XSLT實際上是通過模板(template)將來源文件按照模板的格式轉換為結果文檔的。模板定義了一系列的元素來描述來源文件中的資料和屬性等內容,在經過轉換之後,建立樹形結構(帶資訊的結果樹)。

在樣本中,我們使用了迴圈來匹配模板:

<xsl:for-each select="學生">

   <tr>

     <td><xsl:value-of select="姓名"></td>

     <td><xsl:value-of select="ID"></td>

     <td><xsl:value-of select="年齡"></td>

     <td><xsl:value-of select="電話"></td>

   </tr>

</xsl:for-each>

這是一種類似於函數的調用的匹配方式。"xsl:for-each"元素迴圈調用"xsl:value-of"元素來匹配不同的標記,直至將所有的"學生"標記都匹配一遍後,才結束迴圈。

聯繫我們

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