国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > XML > 正文

使用XMLTransform和XSL-FO格式化報表

2024-07-21 02:38:50
字體:
來源:轉載
供稿:網友

  xmlTransform SQL函數使得應用程序開發人員能夠不用第三方報表工具就直接從數據庫產生高質量的格式化報表。
  
  XMLTransform內嵌于SQL,因此它能夠被任何能夠連接到數據庫并運行簡單SQL語句的客戶程序使用。
  
  可擴展樣式表語言(XSL)是指將一個XML文檔轉換成另外一種結構的XML的工具,它支持條件、XPath樹遍歷、循環和排序構造。XSL格式化對象(XSL-FO)也是一個XML應用程序,但是它支持各種高質量格式的文檔的產生,比如說PDF、PostScript,甚至是GIF。
  
  很多FO處理器是免費的,比如Apache FOP,而其它是內嵌于XML編輯器和處理器的。很多供給商開始推出WYSIVWYG編輯器來創建XSL-FO文件,這是必要的,因為XSL-FO可能會極度復雜。
  
  下面給出一個非常簡單的例子,首先假設我有一個XML文檔:
  
  <doc>Hello World</doc>
  
  假如我需要使用“Hello World”以24-point大小的Arial字體產生一個PDF頁面,我想要一個大概像下面這個樣子的XSL-FO文檔:
  
  <?xml version="1.0" encoding="UTF-8"?>
  <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
   <fo:layout-master-set>
    <fo:simple-page-master master-name="my-page">
     <fo:region-body margin="1in"/>
    </fo:simple-page-master>
   </fo:layout-master-set>
   <fo:page-sequence master-reference="my-page">
    <fo:flow flow-name="xsl-region-body">
     <fo:block font-family="Arial" font-size="24pt">Hello World</fo:block>
    </fo:flow>
   </fo:page-sequence>
  
  </fo:root>
  
  這大概是你所能夠產生的最簡單的XSL-FO文件了。假如我將其保存為“hello.fo”然后通過一個XSL-FO處理器運行它,我就可以產生這個文檔的一個PDF或PostScript表示。
  
  要從我的XML文檔得到我的XSL-FO文檔,我需要一個XSL樣式表來完成文檔之間的轉換:
  
  <?xml version="1.0" encoding="UTF-8"?>
  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
      <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
        <fo:layout-master-set>
          <fo:simple-page-master master-name="my-page">
            <fo:region-body margin="1in"/>
          </fo:simple-page-master>
        </fo:layout-master-set>
        <fo:page-sequence master-reference="my-page">
          <fo:flow flow-name="xsl-region-body">
            <fo:block font-family="Arial" font-size="24pt">
              <xsl:value-of select="/doc"/>
            </fo:block>
          </fo:flow>
        </fo:page-sequence>
      </fo:root>
    </xsl:template>
  </xsl:stylesheet>
  
  XSLT處理器沒有什么缺點,本文最關心的是內建于Oracle9iSQL產生我的XML文檔,我可以使用:
  
  select XMLElement("doc",'Hello World') from dual;
  
  要使用SQL在數據庫內部自動產生FO文檔,我可以使用:
  
  set long 1000000
  select XMLTransform(
    XMLElement("doc",'Hello World'),
    XMLType(
    '<xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="/">
        <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
          <fo:layout-master-set>
            <fo:simple-page-master master-name="my-page">
              <fo:region-body margin="1in"/>
            </fo:simple-page-master>
          </fo:layout-master-set>
          <fo:page-sequence master-reference="my-page">
            <fo:flow flow-name="xsl-region-body">
              <fo:block font-family="Arial" font-size="24pt">
                <xsl:value-of select="/doc"/>
              </fo:block>
            </fo:flow>
          </fo:page-sequence>
        </fo:root>
      </xsl:template>
    </xsl:stylesheet>')) result
   from dual;
  
  這里給出了使用SQL從數據庫產生一個XSL-FO文檔的最簡單方法。
在實際的環境中,你可以在一個WYSIWYG編輯器中從外部操縱XML和XSL-FO,將其保存到表中,然后從數據庫產生一致的、高質量的報表。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 崇明县| 兴和县| 通化市| 丰镇市| 宜州市| 安仁县| 靖宇县| 江源县| 淮南市| 蓬莱市| 沾化县| 宜丰县| 河东区| 青海省| 婺源县| 河津市| 库尔勒市| 堆龙德庆县| 福鼎市| 阜平县| 宿州市| 芦山县| 嘉善县| 南部县| 健康| 高青县| 闽侯县| 梓潼县| 临潭县| 泾川县| 中山市| 苍南县| 分宜县| 周至县| 沈阳市| 凤冈县| 泾阳县| 莱州市| 原平市| 江孜县| 巴中市|