可擴展的樣式語言(Extensible Style Language,XSL)的第二部分是格式化語言。這是XML應用程序,用來描述如何將內容顯示給讀者。一般地說,樣式單使用XSL轉換語言,將XML文檔轉換成使用XSL格式化對象符號集的新的XML文檔。當許多人希望Web浏覽器將來的某一天能夠了解如何直接顯示用XSL格式化對象來標記的數據時,目前就需要有其他措施,使輸出文檔進一步轉換成其他的某個格式,如PDE。
本章的主要內容如下:
* 理解XSL格式化語言
* 格式化對象及其屬性
* 對頁面進行格式化和設置樣式
* 在文本中插入規則
* 在顯示的文檔中嵌入圖形
* 與URI目標的鏈接
* 在文本中插入列表
* 替換字符
* 使用序列號
* 腳注
* 浮動
* 理解如何使用XSL格式化屬性
15.1 XSL格式化語言概述
XSL格式化對象提供了比HTML+CSS(甚至CSS2)更為高級的可視化布局模型。XSL格式化對象所支持但HTML+CSS不支持的格式化包括非西方布局、腳注、頁邊距注解、交叉引用中的頁號等等。特別是,雖然CSS主要用於Web,但XSL格式化對象的用途更為廣泛。例如,能夠編寫使用格式化對象來編排整個打印稿的XSL樣式單。不同的樣式單能夠將同一個XML文檔轉換到Web站點中。
有關格式化語言的警告語
XSL仍處於開發中。過去XSL語言已經發生了本質上的變化,並且將來仍將發生變化。本章是根據1999年4月21日XSL規范草案(第四稿)編寫的。當讀者閱讀本書時,XSL的這一草案很可能已經被取代,而且XSL原來的句法已經改變。即便如此,本規范的格式化對象部分甚至也沒有轉換語言規范那樣完善。如果確實遇到不能完全正常運行的情況,應將本書中提供的實例與最新的規則加以比較。
糟糕的是,仍然沒有任何軟件能實現1999年4月21日的XSL規范草稿的所有內容,甚至只對格式化對象這部分也沒有任何軟件能夠實現。實際上,到目前為止,只有James Tauber的FOP,才能部分地執行XSL格式化對象,它使用XSL格式化對象來將XML文檔轉換成PDF。還沒有任何Web浏覽器可以顯示用XSL格式化對象編寫的文檔。
當然,隨著此項標准向最終版本改進時,當開發商實現XSL格式化對象時,這種情況最終是可以得到修正的。在那之前,我們不得不面對這樣的選擇:要麼忍痛使用目前不完善的、未完成的XSL,並且試圖避開遇到的所有程序錯誤和疏忽,要麼使用更確定的技術(如CSS),直到XSL更加可靠為止。
15.2 格式對象及其屬性
XSL格式化對象元素正好有51個。在這51個元素當中,大多表示各種類型的矩形區域。其他的大部分都是矩形區域和空間的容器。下面以字母順序編排,列出這些格式化對象:
* bidi-override
* block
* character
* display-graphic
* display-included-container
* display-rule
* display-sequence
* first-line-marker
* float
* flow
* footnote
* footnote-citation
* inline graphic
* inline-included-container
* inline-rule
* inline-sequence
* layout-mast