當輸入時,XSL 變換接受以XML 文檔表示的樹形結構,而輸出時,則產生也以XML 文檔來表示的新的樹形結構。因此,XSL 變換部分也稱爲樹形結構建立部分。輸入和輸出的內容必須是XML 文檔。不能使用XSL 來變換成非XML 格式(如PDF、TeX、Microsoft Word、PostScript、MIDI 或其他)或從非XML 格式進行變換。可使用XSL 將XML 變換爲一中間格式(如TeXML),然後使用另外的非XSL 軟件來將這個中間格式變換成期望的格式。HTML 和SGML 都是介乎於兩者之間的情況,因爲它們非常接近於XML。可使用XSL 將符合XML 的結構完整性規則的HTML 和SGML 文檔變換成XML 或者相反。但是,XSL 不能處理在大多數Web 站點上和文檔生成系統中遇到的各種各樣非結構整潔的HTML 和SGML 文檔。要牢記的首要問題是,XSL 變換語言對於XML 到XML 的變換是可行的,但對於其他方面則不行。
XSL 文檔包含一組模板規則和其他規則。模板規則擁有模式(pattern)以及模板(template),模式用來指定模板規則所適用的樹形結構,而模板是用來在與此模式匹配時進行輸出。當XSL 處理程序使用XSL 樣式單來格式化XML 文檔時,它對XML 文檔樹形結構進行掃描,依次瀏覽每個子樹形結構。當讀完XML 文檔中的每個樹形結構時,處理程序就把它與樣式單中每個模板規則的模式進行比較。當處理程序找到與模板規則的模式相匹配的樹形結構時,它就輸出此規則的模板。這個模板通常包括一些標記、新的數據和從原XML 文檔的樹形結構中複製來的數據。
XSL 使用XML 來描述這些規則、模板和模式。XSL 文檔本身也是xsl:stylesheet 元素。每個模板規則都是xsl:template元素。規則的模式是xsl:template 元素的match 特性值。輸出模板是xsl:template 元素的內容。模板中所有的指令都是由一個或另一個XSL 元素來完成的,而這些指令是來完成某種動作,如選擇輸入樹形結構中要包括在輸出樹形結構的部分。
這些由元素名上的xsl:前綴來標識。沒有xsl:前綴的元素爲結果樹部分。更恰當地說,作爲XSL 指令的所有元素都是xsl 命名域的一部分。在那以前,只要瞭解所有的XSL 元素的名稱都是以xsl:開頭就可以了。
清單14-2 顯示的是一個非常簡單的XSL 樣式單,它有兩個模板規則。第一個模板規則與根元素PFRIODIC_TABLE 相匹配,
它使用html 元素來代替此元素。html 元素的內容是將文檔中的其他模板應用於PFRIODIC_TABLE 元素中所獲得的結果。
第二個模板與ATOM 元素匹配,它用輸出文檔中的P 元素代替輸入文檔中的每個ATOM 元素。xsl:apply-templates 規則將
匹配的源元素的文本插入到輸出文檔中。因此,P 元素的內容將是包含在相應的ATOM 元素中的文本(但不是標記)。下
面,將更進一步討論這些元素的精確語法。
清單14-2:有兩個模板規則的週期表XSL 樣式單
<?xml version="1.0"?>
http://gyjkyy.51sole.com/
http://gyjk.b2b168.com/
http://www.wenbing.cn/gyjk
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">
<xsl:template match="PERIODIC_TABLE">
<html>
<xsl:apply-templates/>
</html>
</xsl:template>
<xsl:template match="ATOM">
<P>
<xsl:apply templates/>
</P>
</xsl:template>
</xsl:stylesheet>