DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> xsl教程學習筆記
xsl教程學習筆記
編輯:XML詳解     

一 . Hello world 嘗試:

  =============Hello.XML:=================

<?XML version="1.0" encoding="UTF-8"?>
    <?XML-stylesheet type="text/xsl" href="test.xsl"?>
<FistNode>
,World
</FistNode>

  ===============test.xsl:==================

<?XML version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" XMLns:fo="http://www.w3.org/1999/XSL/Format">
    <xsl:template match="/">
       <Html>
           <head>
              <title>First node</title>
           </head>
           <body>
              <p>
                  <xsl:value-of select="/FistNode"/>
              </p>
           </body>
       </Html>
    </xsl:template>
</xsl:stylesheet>

  運行結果:

  Hello,World

  二 . XSLT元素列表

  

  元素名

  

  含義

  

  xsl:apply-imports

  

  調用重新模板規則

  

  xsl:apply-template

  

  指示XSLT處理器根據每個選定節點的類型和上下文 找到合適的模板

  

  xsl:attribute

  

  創建一個屬性節點並將其附加到輸出元素上

  

  xsl:attribute-set

  

  定義命名的屬性集

  

  xsl:call-template

  

  按名稱調用模板

  

  xsl:choose

  

  提供多個與<xsl:otherwise> 元素 和 <xsl:when> 元素有關的條件測試

  

  xsl:comment

  

  在輸出中生成注釋

  

  xsl:copy

  

  將當前節點從源復制到輸出

  

  xsl:copy-of

  

  將子樹和結果樹片段插入結果樹

  

  xsl:decimal-fomat

  

  聲明一個小數格式,用於控制formate-number 函數所使用的格式模式解釋

  

  xsl:element

  

  在輸出中創建指定名稱的元素

  

  xsl:fallback

  

  調用可以 為遇到的新的元素的行為 提供合適的替代行為的 模板

  

  xsl:for-each

  

  重復應用模板,對接點集中的每個節點應用模板

  

  xsl:if

  

  允許簡單條件模板片段

  

  xsl:import

  

  導入另外一個xslt文件

  

  xsl:include

  

  包含另一個xsl文件

  

  xsl:key

  

  聲明一個命名的鍵,用於XPath表達式中的Key()函數

  

  xsl:message

  

  將文本消息發送到消息緩沖區或者對話框

  

  xsl:namespace-alias

  

  使用其他前綴替換 與給定命名空間關聯的前綴

  

  xsl:number

  

  將和格式化的數字插入結果樹

  

  xsl:otherwise

  

  提供多個與<xsl:choose>元素和<xsl:when>元素有關的條件測試

  

  xsl:ouput

  

  指定在序列化結果樹時使用的選項

  

  xsl:param

  

  聲明一個命名參數,在<xsl:stylesheet>元素或者<xsl:template>元素中使用.允許制定默認值

  

  xsl:preserve-space

  

  在文檔中保留空白

  

  xsl:sort

  

  指定<xsl:for-each>或者<xsl:apply-template>所選節點列表的排序條件

  

  xsl:stylesheet

  

  指定xslt文件的文檔元素.文檔元素包含其他XSLT元素

  

  xsl:template

  

  定義一個可以再次使用的模板,用於為特定類型和上下文的節點生成所需要的輸出

  

  xsl:text

  

  在輸出中生成文本

  

  xsl:transform

  

  執行與<xsl:stylesheet>相同的功能

  

  xsl:value-of

  

  將選定節點的值作為文本插入

  

  xsl:variable

  

  指定表達式中綁定的值

  

  xsl:when

  

  提供多個與<xsl:choose>元素和<xsl:otherwise>有關的測試條件

  

  xsl:with-param

  

  將參數傳遞給模板

  

  xsl:strip-space

  

  從文檔中刪除空白

  

  三 xsl:template 和 xsl:apply-template

  模板有2部分構成:匹配模式 和 執行.

  匹配模式 指定了采用哪個模板 xsl:template

  執行指定了如何輸出 xsl:apply-template

  1.xsl:template語法

<xsl:template natch=pattern name=qname priority=number mode=qname>
<!—執行內容à
</xsl:template>

  name:唯一的名稱,便於引用

  match:原節點模式 與name 必有其一  

  priority :-9-9的數字

  mode :允許多次處理某個元素, 每次產生不同的結果. 有match就不可以有mode. 

  eg:

  ==========test.XML=============

<?XML version="1.0" encoding="UTF-8"?>
<company>
    <department>
       <name language="Chinese">Tech Department</name>
       <leader>Zhang San</leader>
       <quantity>20</quantity>
       <target>software develop</target>
    </department>
    <department>
       <name language="Chinese">Sale Department</name>
       <leader>Li Si</leader>
       <quantity>20</quantity>
       <target>Sale work</target>
    </department>
</company>

  1.匹配所有的部門

  <xsl:template match=”department”></xsl:template>

  2.匹配所有的領導和所有的人數元素

  <xsl:template match=”leader|quantity”></xsl:template>

  3.匹配所有父節點為 部門的 領導元素

  <xsl:template match=”department//leader”></xsl:template>

  3.匹配根節點

  <xsl:template match=”/”></xsl:template>

  2.xsl:apply-templates

  語法:

  <xsl:apply-templates select=node set-expression mode=qname></xsl:apply-templates>

  用來 表示 哪個節點被模板具體處理.可以理解為 調用子函數 select用來選擇確切的節點名字. xsl:apply-templates 總是在 xsl: template中

  1.模板匹配整個文檔(根節點), 具體執行時 處理根節點下的所有部門元素.

<xsl:template match=”/”>
    <xsl:apply-template select=”department”/>
</xsl:template>

  2.模板匹配 部門 節點. 具體執行時 部門下所有的子元素都將被處理

<xsl:template match=”para”>
    <p><xsl:apply-template /></p>
</xsl:template>

  四 xsl:value-of

  用來將 文檔中的元素 文本 寫入到 輸出文檔中.

  1.    提取出部門中每個領導人的名字

<xsl:template match=”department”>
    < xsl:value-of select=”leader”/>
</xsl:template>

  心得: <xsl:template match=”department”>表示一個范圍,然後value-of和apply-template明確指出到底是哪些元素

  五 xsl:for-each

  循環處理被選擇的元素.

  1.    提取每個部門的領導人

<xsl:template match=”company”>
    <xsl:selct
    < xsl:value-of select=”leader”/>
</xsl:template>

  六 xsl:if

  語法:

<xsl:if test=布爾表達式>
    templatebody
</xsl:if>

  1.    檢測部門節點下的所有元素,如果有領導就將領導輸出.

<xsl:template match="department">
       <xsl:if test="leader">
           <p><xsl:value-of select="leader"/></p>
       </xsl:if>
</xsl:template>

  七 xsl:choose xsl:when xsl:otherwise

    <xsl:template match="department">
       <xsl:choose>
           <xsl:when test="leader='Li Si'">
              <p>
                  <font color="red">
                     <xsl:value-of select="leader"/>
                  </font>
              </p>
           </xsl:when>
           <xsl:when test="leader">
              <p>
                  <font color="green"></font>
              </p>
           </xsl:when>
           <xsl:otherwise>
           leader!
           </xsl:otherwise>
       </xsl:choose>
    </xsl:template>

  七 xsl:sort

<xsl:template match="company">
       <p>
           <xsl:apply-templates select="department">
              <xsl:sort select="leader"/>
           </xsl:apply-templates>
       </p>
    </xsl:template>

  八.綜合實例:

  ============test.XML===============

<?XML version="1.0" encoding="UTF-8"?>
    <?XML-stylesheet type="text/xsl" href="test.xsl"?>
<company>
    <department>
       <name language="Chinese">Tech Department</name>
       <leader>Zhang San</leader>
       <quantity>20</quantity>
       <target>software develop</target>
    </department>
    <department>
       <name language="Chinese">Sale Department</name>
       <leader>Li Si</leader>
       <quantity>20</quantity>
       <target>Sale work</target>
    </department>
</company>

  ============test.xsl:===========

<?XML version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" XMLns:fo="http://www.w3.org/1999/XSL/Format">
    <xsl:template match="/">
       <Html>
           <head>
               <title>First node</title>
           </head>
           <body>
              <p>
                  <xsl:value-of select="/company/department"/>
              </p>
              <p>
                  <xsl:apply-templates select="company"/>
              </p>
              
           </body>
       </Html>
    </xsl:template>
    <xsl:template match="company">
       <p>
           <xsl:apply-templates select="department">
              <xsl:sort select="leader"/>
           </xsl:apply-templates>
       </p>
       <xsl:for-each select="child::department">
           <p><xsl:value-of select="leader"/></p>
       </xsl:for-each>
    </xsl:template>
   
    <xsl:template match="department">
       <xsl:choose>
           <xsl:when test="leader='Li Si'">
              <p>
                  <font color="red">
                     <xsl:value-of select="leader"/>
                  </font>
              </p>
           </xsl:when>
           <xsl:when test="leader">
              <p>
                  <font color="green"><xsl:value-of select="leader"/></font>
              </p>
           </xsl:when>
           <xsl:otherwise>
           leader!
           </xsl:otherwise>
       </xsl:choose>
    </xsl:template>
</xsl:stylesheet>

  ===========運行結果==============

  Tech Department Zhang San 20 software develop

  Li Si

  Zhang San

  Zhang San

  Li Si

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved