XSL對象格式使用指南(一)

來源:互聯網
上載者:User
對象

 

    
  World Wide Web 同盟規範書將可擴充樣式語言(XSL)規劃成兩個部分:
  
  ■XSLT用來轉換XML檔案
  ■XSL對象格式(XSL FO) 用來詳細說明格式語句的 XML函數庫。
  XSLT 非常容易學習和使用。只需要花費很少的時間,開發人員就能將XML 文檔轉換成可以在使用者自己瀏覽器上看到的HTML 文檔。這也是開發人員喜歡使用XSLT的原因。
  XSL對象格式是一個以XML為基礎的擴充函數庫,能詳細定義標記頁數、版面和字型等網頁內容資訊。XSL FO 擴充語言非常複雜,也很冗長;但只有通過XSL FO 才能快速把XSLT 轉換成文檔源檔案。
  除了完全介紹XSL FO,這篇文章還將提供足夠的資訊和例子來說明怎樣使用XSL FO。我們將通過XSL FO學習製作一個西班牙語的評論手冊並將它列印出來。我們將使用Apache Software Foundation 的 FOP 工具軟體使FO 檔案轉換成PDF 檔案。
  
  初始化
  把XSL FO 檔案轉換成XML 文檔,先需要基本的XML處理指示和FO 根項目:
    <?xml version="1.0" encoding="utf-8"?>
    <fo:root>
  文檔的結構為:
    ●主要的版面設計,由以下組成
      ○文檔可能出現的各種頁面
      ○安排這些頁面的格式序列
    ●頁面和它們的內容
  頁面規劃
  在FO 文檔的開始<fo:root> 標籤後,我們必須描述文檔所擁有的頁面類型。文檔擁有下面圖表中的三種頁面。按照空白地區分類為封面、左邊頁和右邊頁。封面和左邊頁在左面有較多的空白地區。每個頁面都有頁首和頁尾。
  
  讓我們從定位頁面長度、寬度及空白空間開始。在文章裡單位都使用厘米,也可以使用任何CSS 單位,如象素 (pixel)、毫米、英寸等。這些規格被命名為simple-page-master 並用 master-name語句指定。請看程式碼範例。需要注意的是頁面空白地區不能有任何需要印刷出來的內容。
  
  內容區
  在所有的印刷品的圖表中都會有零星的線條。那是頁面的內容區(正式上被稱作頁面參照區), 在下面可以看出內容區被分成五個地區。
  
  
  說明
  我們必須先瞭解一些術語。當我們設定頁面邊的空白時,我們會使用top, bottom, left, and right這樣的詞彙。因為每個人都認為紙張的一塊邊緣就是紙張的左邊、頂部、底部和右邊。當我們談到內容地區時會使用不同的詞彙,因為不是所有的語言都能描述左到右或頂部到底部。
  FO 認為一個頁面由兩種元素構成: block elements (例如文章的段落)它由新的一行起頭。inline elements (例如字型的粗體和斜體)。FO的block-progress-direction 決定了段落在頁面的位置。before-edge表示在段落之前,after-edge 表示在段落之後。
  inline-progress-direction 決定了在一行話中每個字元的位置。start-edge 表示位置在一行話之前, end-edge表示位置在一行話之後。
  對於希伯萊語來說,象以下所示:開頭和結尾中文字位置與英語習慣是互相對應的。(阿拉伯語的寫法也相似)
  
  日語寫法有時象下面一樣寫,下面是XSL 規範手冊中的圖片:
  
  這種新函數庫最大的優勢是它使用的語言不受約束。如果你希望頁面的標題出現在和普通文本相對應的位置,你可以象下面一樣設定 text-align="end"
  一個有趣的標題
  
  標題一般在最上方,這樣才能吸引讀者的注意
  
  如果文檔最後要翻譯成阿拉伯語或日語,你仍然能確定標題仍然出現在文本相對應的位置。就不需要來回調整文檔的左右和上下。
  
  指定地區的尺寸
  封面頁不需要頁首和頁尾,所以我們只需要象以下所示的用粗體指定region-body資訊。
  <fo:simple-page-master master-name="cover"
  
  page-height="12cm"
  page-width="12cm"
  margin-top="0.5cm"
  margin-bottom="0.5cm"
  margin-left="1cm"
  margin-right="0.5cm">
  <fo:region-body
  margin-top="3cm" />
  
  </fo:simple-page-master>
  
  左邊頁和右邊頁擁有頁首和頁尾,所以我們需要指定region-before 和 region-after的範圍。
  要點:你得給region-body 指定範圍,相當於指定region-before 和region-after 的範圍 (FOP 現在不支援region-start 和region-end)。如果你象下面這樣做 :
  <fo:region-before extent="1cm"/>
  <fo:region-after extent="1cm"/>
  
  <fo:region-body
  margin-top="0.20cm"
  margin-bottom="0.20cm" />
  
  
  
  結果會是:
  



相關文章

Alibaba Cloud 10 Year Anniversary

With You, We are Shaping a Digital World, 2009-2019

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。