XML Consortium
XML Consortium
XSLの活用と技術内容の紹介
XMLコンソーシアム
基盤技術部会 共通基盤
WG
XSL/XSLT SWG
ネクストソリューション株式会社 加藤上直 日本ユニシス株式会社 小林 茂XML Consortium
XML Consortium
Agenda
XSLとは
XSL-FOの概観
加藤 上直
XSLTとXSL-FOのサンプル中心の紹介
小林 茂
XML Consortium
XML Consortium
XSLとは
XML Consortium
XML Consortium
XSLとは
XSLとは,スタイルシートを表現するための言語である。
W3Cにて 1.0 が 2001-10-15 に勧告済み。
XSLの構成要素は次の二つである
XML文書を変換するための言語
(XSLT)
フォーマット化セマンティクスを指定するための
XML語彙
(XSL-FO【Formatting-Object】)
スタイル
シート
フォーマット化
言語
XML文書
XML Consortium
XML Consortium
途
中
省
略
途
中
省
略
スタイル関連の規格化
XML 1.0
勧告 1998-02-10ス
タ
イ
ル
構文
リ
ン
ク
XSLT
勧告 1999-11-16XPath
勧告 1999-11-16XPointer
WD3 1999-12-06 XSL WD4 2000-01-12 XSL WD5 2000-03-01 XSL WD6(LastCall) 2000-03-27 XLink 勧告候補 2000-07-03 XPointer 勧告候補 2000-06-07 XSL WD7 2000-10-18XSL
勧告候補 2000-11-21XSLT
1.1 WD 2000-12-12 XPath2.0 要件,WD2 2001-02-15 XPath2.0 要件,WD2 2001-02-15XLink
勧告案 2000-12-20 XPointer WD4 2001-01-08XLink
勧告 2001-06-27XSLT
1.1 WD2 2001-08-24XSL
勧告案 2001-08-28 XPointer 勧告候補 2001-09-11XSL
勧告 2001-10-15XSLT
2.0 WD2 2002-04-30XLink
WD3 1999-12-20XLink
WD4 2000-01-19XLink
WD(LastCall) 2000-02-21XML Consortium
XML Consortium
スタイル化の他規格との関係
DSSSL
変換
スタイル
XSL
XSLT
XSL-FO
スキームの概念
FOSI
・Formatting output specification instance
・米国の軍事規格として用いられた
XML Consortium
XML Consortium
ユーザ I/FPost
Script
Text, ・・・FO
エンジン
SVGフォーマッタ
スタイル付けのプロセス
FO
(XML)
Apache XML Project: FOP 0.20.3
(コマンドライン指示)
アンテナハウス社: XSL Formatter V2.1
その他
: RenderX社:
XEP
, ・・・
(http://www.w3.org/Style/XSL/を参照)
ソース
(XML)XSLT
エンジン
プロセッサ
FO
(XML)XSLT
(XML) HTMLXML Consortium
XML Consortium
XSLで出来ること
ドキュメントに必要な項目の自動生成
ページ番号
タイトル一覧【目次】
章・節・項の番号
索引
段組
XML Consortium
XML Consortium
段落の指定
<fo:block
background-color="lightgreen"
space-before.optimum="5pt"
space-after.optimum="5pt"
font-weight="bold"
font-size="12pt"
>
Introduction
</fo:block>
Introduction
a aa aaa aaaa aaaaa aaaaaa aaa・・
aaaaaaaaaa a aa aaa aaaa aaaaa aaa・・
<fo:block text-indent="1em">
a aa aaa aaaa aaaaa aaaaaa aaaaaaa ・・・・
a aa aaa aaaa aaaaa aaaaaa aaaaaaa ・・・・
</fo:block>
XML Consortium
XML Consortium
リストの指定
<fo:list-block provisional-distance-between-starts="20pt" provisional-label-separation="2pt" > <fo:list-item> <fo:list-item-label end-indent="label-end()"> <fo:block color="blue">*</fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>Item1 AAAAAAAA・・・.</fo:block> </fo:list-item-body> </fo:list-item> ・・・・・ 残りのfo:list-item ・・・・・ </fo:list-block> * Item3 CCCCCCCC・・・ * Item1 AAAAAAAA・・・ * Item2 BBBBBBBB・・・XML Consortium
XML Consortium
画像の指定
<fo:block space-before="10mm" space-after="1mm">
<fo:inline color="red">Image</fo:inline>
<fo:block text-align="center">
<fo:external-graphic src="xml_blue_small3.jpg"/>
</fo:block>
・・・・・・ 中略 ・・・・・・
</fo:block>
XML Consortium
XML Consortium
ページ番号の指定
下部のリージョンにページ番号を設定する <fo:static-content flow-name="xsl-region-after"> <fo:block text-align="start" font-size="10pt" font-family="serif" line-height="1em + 2pt" > Page <fo:pagenumber/> -</fo:block> </fo:static-content> ページ参照領域 リージョン ビューポート 領域 Page nn -ページ番号はXML Consortium
XML Consortium
出来ないレイアウト(1)
一部分に領域を作成して
画像等を埋めることは不可
画像・テーブルなど
XML Consortium
XML Consortium
出来ないレイアウト(2)
画像
異なる複数カラムは
同一ページ内では
表示が出来ない
XML Consortium
XML Consortium
他のスタイル言語
(CSS)
p{ font-size:10pt;
font-weight:normal;
font-style:italic;}
タグ「p」のスタイルを
フォントのサイズを10pt
太さは通常
イタリック体
に出力指定する
XML Consortium
XML Consortium
他のスタイル言語
(DSSSL)
(element p
(make paragraph
font-size=10pt
font-weight=“bold”
font-posture=“italic”
)
)
タグ名「p」は
段落を作成
フォントの大きさを10pt
フォントの太さは太字
イタリック体
で出力指定する
参考文献:
XML Consortium
XML Consortium
他のスタイル言語
(FOSI)
<charsubset charsubsetid=“titlestyle”>
<font size=“10pt”
posture=“upright”
weight=“bold”>
</charsubset>
←idをつける
レイアウトを指定する
<e-i-c gi=“
title
”>
<charlist charsubsetref=“titlestyle”></charlist>
</e-i-c>
XML Consortium
XML Consortium
XML Consortium
XML Consortium
スタイル付けのプロセス
FOP 0.20.3 XSL Formatter V2.1ソース
(XML)XSLT
(XML)XSLT
エンジン
プロセッサ
FO
エンジン
フォーマッタ
FO
(XML)XML Consortium
XML Consortium
章・節・項のレイアウト指示
<xsl:template match="chapter"> <fo:block break-before="page" space-before.optimum="5pt" > <xsl:apply-templates/> </fo:block> </xsl:template> <xsl:template match="section"> <fo:block space-before.optimum="5pt" space-after.optimum="10pt" >章
節
タイトル
<fo:block break-before="page" space-before.optimum="5pt" > <fo:block id=“ABCWXY"> 1 章のタイトル</fo:block> <fo:block space-before.optimum="5pt" space-after.optimum="10pt" > <fo:block id=“ABCXYZ"> 1.1 節のタイトル</fo:block> <fo:block> ・・・・・・・・・節のデータ・・・・・・・・・ </fo:block> </fo:block> </fo:block> <xsl:template match="title"> <fo:block id="{generate-id()}"> <xsl:number level="multiple" count="chapter|section|subsection" format="1.1 "/> <xsl:apply-templates/> </fo:block> XSLT 変換 IDの生成 (XSLTの ファンクション)FOの出力内容
XML Consortium
XML Consortium
目次の作成
<xsl:template match="title" mode="header"> <fo:block> <xsl:number level="multiple" count="chapter|section|subsection" format="1.1 "/> <xsl:value-of select="text()"/> <xsl:text> </xsl:text> <fo:leader /> <xsl:text> </xsl:text> <fo:page-number-citation ref-id="{generate-id()}"/> </fo:block> </xsl:template><xsl:apply-templates select="/book/body//
title"
mode="header"/>
1 chapter-abcdefg 3 1.1 section-abcdefg-001 3 章節項の番号は XSLTエンジンで生成 ページ番号 が右揃え ページ番号は FOエンジンで生成XML Consortium
XML Consortium
索引の指定
<xsl:template match="index" mode="index"> <fo:block> <fo:basic-link internal-destination="{generate-id()}"> <xsl:value-of select="@title" /><fo:leader leader-length="3em" leader-pattern="dots" /><fo:page-number-citation ref-id="{generate-id()}"/> </fo:basic-link> </fo:block> <fo:block> data-004-000000
<fo:inline visibility="false" id="IDAQ0HW"/> data-004-999999 </fo:block> w=data-04-in-aa ...….…. 2 索引ページ中
XML
XSLT
FO
<div> data-004-000000 <index title="w=data-04-in-aa"/> data-004-999999 </div><xsl:template match="index"
><fo:inline visibility="false" id="{generate-id()}" /></xsl:template> <fo:block> <fo:basic-link internal-destination="IDAQ0HW"> w=data-04-in-aa <fo:leader leader-length="3em" leader-pattern="dots"/> <fo:page-number-citation ref-id="IDAQ0HW"/> </fo:basic-link> </fo:block> 索引ページ 本文 本文用 本文のデータ