簡介
XSL-FO是用於格式化XML數據的語言,全稱為extensible Stylesheet Language Formatting Objects(格式化對象的可擴展樣式表語言),是W3C參考標準,現在通常叫做XSL。什麼是 XSL-FO?
XSL-FO 是用於格式化 XML 數據的語言XSL-FO 指可擴展樣式表語言格式化對象(Extensible Stylesheet Language Formatting Objects)
XSL-FO 是一個 W3C 推薦標準
XSL-FO 目前通常被稱為 XSL
通常被稱為 XSL
為什麼會存在這樣的混淆呢?XSL-FO 和 XSL 是一回事嗎?可以這么說,不過我們需要向您作一個解釋:
樣式化(Styling)是關於轉換信息和格式化信息兩方面的信息。在全球資訊網聯盟編寫他們的首個 XSL 工作草案的時候,這個草案包括了有關轉換和格式化 XML 文檔的語言語法。
後來,XSL 工作組把這個原始的草案分為獨立的標準:
XSLT,用於轉換 XML 文檔的語言
XSL 和 XSL-FO,用於格式化 XML 文檔的語言
XPath,是通過元素和屬性在 XML 文檔中進行導航的語言
XSL-FO 文檔
XSL-FO 文檔是帶有輸出信息的 XML 檔案。XSL-FO 文檔是帶有輸出信息的 XML 檔案。它們包含著有關輸出布局以及輸出內容的信息。
XSL-FO 文檔存儲在以 .fo 或 .fob 為後綴的檔案中。以 .xml 為後綴存儲的 XSL-FO 文檔也很常見,這樣做的話可以使 XSL-FO 文檔更易被 XML 編輯器存取。
XSL-FO 文檔的結構
XSL-FO 的文檔結構類似這樣:
結構解釋
XSL-FO 文檔屬於 XML 文檔,因為也需要以 XML 聲明來起始:
元素是 XSL-FO 文檔的根元素。這個根元素也要聲明 XSL-FO 的命名空間:
元素含有一個或多個頁面模板:
元素包含一個單一的頁面模板。每個模板須有一個唯一的名稱(master-name):
一個或多個 元素可描述頁面的內容。master-reference 屬性使用相同的名稱來引用 simple-page-master 模板:
注釋:master-reference 的值 "A4" 實際上並沒有描述某個預定義的頁面格式。它僅僅是一個名稱。您可以使用任何名稱,比如 "MyPage"、"MyTemplate" 等等。
XSLFO 對象
對象 | 描述 |
---|---|
basic-link | 定義一個連結的起始資源 |
bidi-override | Overrides the default Unicode BIDI direction |
block | 定義一個輸出塊(比如段落和標題) |
block-container | 定義一個塊級的引用區域(reference-area) |
character | 定義一個字元,該字元會被映射為供呈現的字形 |
color-profile | 定義樣式表的一個顏色配置檔案 |
conditional-page-master-reference | 規定一個當所定義的條件成立時使用的page-master |
declarations | 組合針對某個樣式表的全局聲明 |
external-graphic | 用於圖像數據位於XML結果樹之外的某個圖形 |
float | 典型的用法是,在頁面起始位置的某個單獨的區域放置一幅圖片,或者把一幅圖片放置到一側,而內容則流動至圖片的旁邊。 |
flow | 包含所有被輸出到頁面的元素 |
footnote | 定義在頁面的region-body內部的一個腳註 |
footnote-body | 定義腳註的內容 |
initial-property-set | 格式化 的第一行 |
inline | 通過背景或者將其包圍在一個框線中,來格式化文本的某個部分 |
inline-container | 定義一個行內的引用區域(inline reference-area) |
instream-foreign-object | 用於行內圖形(inline graphics)或用於普通對象,其中對象的數據作為 的後代存在。 |
layout-master-set | 存有所有用在文檔中的master |
leader | 用來生成"."由內容表格中的頁碼來分隔標題,或者創建表單中的輸入域,或者創建水平線 |
list-block | 定義列表 |
list-item | 包含列表中的每個項目 |
list-item-body | 包含列表項的內容或主體 |
list-item-label | 包含列表項的標號(有代表性的是數據、字元等等) |
marker | 與fo:retrieve-marker使用來創建連續的頁面或頁腳 |
multi-case | 包含 XSL-FO對象的每個供選擇的子樹(在 內部)。父元素會選擇顯示那個選項並隱藏其餘的選項。 |
multi-properties | 用來在兩個或更多的屬性集(property-sets)間轉換 |
multi-property-set | 規定一個可供選擇的屬性集,這個屬性集會被根據用戶代理的狀態來進行套用。 |
multi-switch | 存有一個或多個 對象,並控制它們之間的切換(通過激活) |
multi-toggle | 用來切換到另一個 |
page-number | 表示當前的頁面 |
page-number-citation | 為頁面引用頁碼,此頁面包含首個由被引用對象返回的標準區域。 |
page-sequence | 一個針對頁面輸出元素的容器。在其中一個 對象針對每個頁面布局。 |
page-sequence-master | 規定使用哪個simple-page-master,以及使用次序。 |
region-after | 定義頁腳 |
region-before | 定義頁眉 |
region-body | 定義頁面主體 |
region-end | 定義頁面的右側欄 |
region-start | 定義頁面的左側欄 |
repeatable-page-master-alternatives | 定義一套simple-page-master的副本 |
repeatable-page-master-reference | 規定一個簡單的simple-page-master的副本 |
retrieve-marker | 與 一同使用來創建連續頁眉或者頁腳 |
root | XSL-FO文檔的根(頂)節點 |
simple-page-master | 定義頁面的尺寸和形狀 |
single-page-master-reference | 規定用在頁面序列的某個給定的點的一個 |
static-content | 包含在許多頁面上重複的靜態內容(比如頁眉和頁腳) |
table | 格式化一個表格的表格式的材料 |
table-and-caption | 格式化一個表格及其標題 |
table-body | 表格行和表格單元的容器 |
table-caption | 包含一個表格的標題 |
table-cell | 定義表格單元 |
table-column | 格式化表格的列 |
table-footer | 定義表格的頁腳 |
table-header | 定義表格的頁眉 |
table-row | 定義表格的行 |
title | 為頁面序列定義一個標題 |
wrapper | 為一組XSL-FO對象規定繼承屬性 |