XSLT簡單基礎第3章:XSLT的元素語法(2)
發表時間:2024-06-13 來源:明輝站整理相關軟件相關文章人氣:
[摘要]3.1 xsl:template和xsl:apply-templates模板(template)是XSLT中最重要的概念之一。XSLT文件就是由一個一個的模板組成,任何一個XSLT文件至少包含一個模板。模板的概念就象是搭積木;你如果是程序員,也可以將模板看作一個方法,一個類,或者一個模塊。它們可以...
3.1 xsl:template和xsl:apply-templates
模板(template)是XSLT中最重要的概念之一。XSLT文件就是由一個一個的模板組成,任何一個XSLT文件至少包含一個模板。模板的概念就象是搭積木;你如果是程序員,也可以將模板看作一個方法,一個類,或者一個模塊。它們可以被拼裝組合,也可以單獨成塊,不同的模板控制不同的輸出格式。
模板(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下的子元素都將被處理。