深入XSL (2) ---樣式表結構 翻譯:孫一中
在XML文件中樣式表用元素xsl:stylesheet來表示. XSL處理器處理源文件和樣式表時都必須采用XML的名域(Namespace)機制[W3C XML Names].所有XSL定義的元素(在文件中帶有前綴xsl)只有是屬于URI為http://www.w3.org/TR/WD-xsl中的某一個名域時才會被XSL識別; XSL 定義的元素只是在樣式表中才認得,而并不是在源文件中.
xsl:stylesheet元素有一項可選的屬性result-ns;它的值需要有一個名域前綴.如果規定了這項屬性,所有的結果元素必須屬于前綴所確定的名域.如果有名域被確定為缺省名域, 那么屬于該名域的結果元素可以用一個空字符串來賦值.result-ns屬性規定了XSL格式化對象的名域, 那么除了構造XML結果樹之外,XSL處理器還根據必須文件中定義的語義來解釋它.XSL格式化對象的名域的URI為http://www.w3.org/TR/WD-xsl/FO.例中用前綴fo:代表該名域.xsl:stylesheet元素可以包含以下類型的元素:
1. xsl:import 2. xsl:include 3. xsl:id 4. xsl:strip-space 5. xsl:preserve-space 6. xsl:define-macro 7. xsl:define-attribute-set 8. xsl:define-constant 9. xsl:template
下例表現了一個樣式表的結構. 省略號表示那里的屬性值或內容可以省略.其中的元素可以在樣式表中出現多次或者不出現.
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:import href="..."/>
<xsl:include href="..."/>
<xsl:id attribute="..."/>
<xsl:strip-space element="..."/>
<xsl:preserve-space element="..."/>
<xsl:define-macro name="..."> ... </xsl:define-macro>
<xsl:define-attribute-set name="..."> ... </xsl:define-attribute-set>
<xsl:define-constant name="..." value="..."/>
<xsl:template match="..."> ... </xsl:template>
</xsl:stylesheet>
元素出現的順序沒有特殊的規定除了xsl:import元素和錯誤恢復.用戶可以根據自己的需要自由排序, 樣式表的產生工具也不需要去控制元素出現的次序.
--------------------------------------------------------------------------------
|