XML——XSL 樣式單文檔

當輸入時,XSL 變換接受以XML 文檔表示的樹形結構,而輸出時,則產生也以XML 文檔來表示的新的樹形結構。因此,XSL 變換部分也稱爲樹形結構建立部分。輸入和輸出的內容必須是XML 文檔。不能使用XSL 來變換成非XML 格式(如PDFTeXMicrosoft WordPostScriptMIDI 或其他)或從非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 元素匹配,它用輸出文檔中的元素代替輸入文檔中的每個ATOM 元素xsl:apply-templates 規則將

匹配的源元素的文本插入到輸出文檔中。因此,元素的內容將是包含在相應的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>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章