XSLT中文入門(5)_動易Cms教程

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

      模板(template)由兩部分組成:匹配模式(match pattern)和執行。簡單的講模式定義XML源文檔中哪一個節點將被模板處理,執行則定義輸出的是什么格式。兩部分對應的語法為xsl:template和xsl:apply-templates。

      xsl:template的語法是:

      <xsl:template
      match = pattern
      name = qname
      priority = number
      mode = qname>
      <!-- 執行內容 -->
      </xsl:template>

      xsl:template的作用是定義一個新模板。屬性中name,priority,和mode用來區別匹配同一節點的不同模板。它們不是常用的屬性。match屬性則控制模板的匹配模式(pattern),匹配模式是用來定位XML源文檔中哪一個節點被模板處理。一個模板匹配一個節點。我們用一個例子來幫助理解:
      假設我們要處理一個包含章節和段落文檔。我們用para元素定義段落,用chapter元素定義章節。我們來看看match屬性可能的值。下面的語句寫法說明模板匹配所有的para元素

      <xsl:template match="para">
      </xsl:template>

      下面的語句寫法說明模板匹配所有的para元素和所有的chapter元素:

      <xsl:template match="(chapter|para)">
      </xsl:template>

      下面的語句寫法說明模板匹配所有的父節點為chapter元素的para元素:

      <xsl:template match="chapter//para">
      </xsl:template>

      下面的語句寫法說明模板匹配根節點:

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

      我們再來看apply-templates語法:

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

      xsl:apply-templates用來執行那一個節點被模板具體處理。你可以將它理解為程序中調用子函數。select屬性用來定義確切的節點名稱。xsl:apply-templates總是包含在xsl:template元素中,象這樣:

      <xsl:template match="/">
      <xsl:apply-templates select="para"/>
      </xsl:template>

      這段代碼說明摸板匹配整個文檔(根節點),具體執行時處理根節點下所有para元素。

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

      而這一段代碼則表示摸板匹配para節點,所有para下的子元素都將被處理。

      3.2 xsl:value-of

      XSL:value-of用來將源文檔中元素的文本值寫到輸出文檔中。例如:
      有一個個人資料的XML文檔:

      <?xml version="1.0" encoding="iso-8859-1"?>
      <PERSON>
      <name>ajie</name>
      <age>28</age>
      </PERSON>

      我假如想在輸出文檔中顯示上面這個XML源文檔中的name元素的值,可以這樣寫XSLT代碼:

      <xsl:template match="PERSON">
      <xsl:value-of select="name"/>
      </xsl:template>

      執行后,你會看到"ajie"被單獨顯示出來。其中match="PERSON"定義摸板匹配PERSON節點,xsl:value-of 語法說明需要輸出一個節點的值,而select="name"則定義需要被輸出的元素為name?催@個過程是不是和數據庫里查詢一個人的名字很象?當然,xsl:value-of查詢還有更多,更復雜的語法,因為是涉及尋找和定位的功能,我們會放在后面的XPath語法中在仔細講解。
      同樣功能的還有xsl:copy-of,用法一樣,就不重復解釋了。

      3.3 xsl:for-each

      xsl:for-each語法答應你循環處理被選擇的節點。例如:有一個含多個個人資料的XML文檔:

      <?xml version="1.0" encoding="iso-8859-1"?>
      <PEOPLE>

      查看更多 動易Cms教程  動易Cms模板

      來源:模板無憂//所屬分類:動易Cms教程/更新時間:2006-06-13
      相關動易Cms教程