XSL-FOによるXMLドキュメント印刷のためのスタイルシート作成方法

Size: px
Start display at page:

Download "XSL-FOによるXMLドキュメント印刷のためのスタイルシート作成方法"

Transcription

1 XSL-FO による XML ドキュメント 印 刷 のための スタイルシート 作 成 方 法 2005 年 7 月 改 訂 7 版 アンテナハウス 株 式 会 社

2 目 次 はじめに... 1 XSL スタイルシート 作 成 のステップ... 2 SimpleDoc の 構 造... 3 Hello! World... 5 SimpleDoc 文 書 から XSL-FO への 変 換 の 最 も 簡 単 な 例... 5 スタイルシートの 構 造... 6 ブロック 要 素 とインライン 要 素... 6 FO ツリーの 構 造... 7 実 用 的 な XSL スタイルシートの 設 計... 8 印 刷 形 式 の 仕 様... 8 XSL スタイルシートの 構 成... 9 ページ 書 式 の 設 定 表 紙 目 次 のページ 書 式 本 文 のページ 書 式 - 左 右 ページ 書 式 の 切 り 替 え 索 引 のページ 書 式 - 二 段 組 スタイルシート 全 体 の 出 力 制 御 表 紙 の 作 成 目 次 の 作 成 目 次 作 成 テンプレート 目 次 行 の 作 成 テンプレート ネストレベルの 計 算 ネストレベルに 応 じたプロパティ 設 定 ページ 番 号 の 取 得 fo:leader 生 成 された 目 次 行 の 例 本 文 の 処 理 本 文 を 処 理 するテンプレートの 枠 組 み ページ 番 号 の 設 定 ページフッタ/ページヘッダ 内 容 の 作 成 ページフッタの 出 力 ページ 番 号 の 出 力 ランニングフッタの 作 成 ページヘッダの 出 力 文 書 名 の 出 力 爪 の 出 力 見 出 しの 作 成 見 出 しの 書 式 条 件 見 出 しを 処 理 するテンプレート 生 成 された 見 出 しの 例 インライン 要 素 の 処 理 b, i, em, code 要 素 を 処 理 するテンプレート a 要 素... 35

3 note 要 素 br 要 素 span 要 素 ブロック 要 素 の 処 理 p 要 素 figure 要 素 program 要 素 div 要 素 表 要 素 の 処 理 表 構 造 の 比 較 表 を 処 理 するテンプレート 表 の 整 形 例 リスト 要 素 の 処 理 リスト 形 式 の 比 較 番 号 付 リストを 処 理 するテンプレート ラベルと 本 体 部 分 の 位 置 指 定 ラベルの 書 式 番 号 付 リストの 例 番 号 なしリストを 処 理 するテンプレート ラベル 文 字 の 指 定 番 号 なしリストの 例 PDF 生 成 に 関 する 機 能 PDF 文 書 情 報 しおりの 作 成 リンクの 設 定 参 考 資 料 の 参 照 索 引 の 作 成 Key の 作 成 索 引 ページの 作 成 index 要 素 をグループ 化 して 取 り 出 す ノード 集 合 の 出 力 その 他 mode を 使 用 する 付 録 参 考 資 料 索 引... 66

4 1 はじめに Extensible Stylesheet Language 仕 様 ( 略 称 :XSL-FO)( 参 考 資 料 [1])( 日 本 語 訳 ( 参 考 資 料 [2]))は XML ドキュメントを 表 示 印 刷 するための 仕 様 として W3C が 2001 年 10 月 に 勧 告 したものです XML ドキュメントから この XSL-FO を 作 成 して 印 刷 するには 次 の 手 順 が 一 般 的 です 1. XML ドキュメントの DTD に 対 して 目 的 の 出 力 を 実 現 する XSL スタイルシートを 作 成 する 2. XML ドキュメントと XSL スタイルシートの2つを 入 力 として XSLT プロセッサに 与 え XSL-FO を 作 成 する 3. XSL-FO を 処 理 する 組 版 エンジンで 印 刷 や PDF 出 力 などの 目 的 の 結 果 を 得 る XML 文 書 /データ XSL スタイル シート 表 示 印 刷 メディア 画 面 XSLT プロセッサ XSL-FO XSL 組 版 エンジン 変 換 組 版 出 力 PDF プリンタ XSL-FO の 作 成 とフォーマッタによる 表 示 印 刷 XSL-FO を 出 力 するスタイルシートを 作 成 するためには XSLT と XSL-FO の 知 識 が 不 可 欠 です XSLT については 仕 様 書 ( 参 考 資 料 [3]) その 日 本 語 訳 ( 参 考 資 料 [4])の 他 に 多 数 の 参 考 書 がでています XML から HTML への 変 換 などでもしばしば 使 われますので 既 にご 存 知 の 方 も 多 いでしょう 一 方 XSL-FO の 仕 様 は 非 常 に 膨 大 な 内 容 で A4 サイズで 400 ページを 超 える 量 (1) になります この 仕 様 全 体 を 理 解 するのは 非 常 に 大 変 です しかし XSL-FO の 仕 様 は 基 本 的 には 実 装 処 理 系 を 作 成 するためのも のです 処 理 系 を 利 用 する 側 では 必 ずしもそのすべてを 知 る 必 要 はありません 一 定 の 知 識 とパターン を 身 に 付 ければ 十 分 スタイルシートの 作 成 はできるでしょう 本 稿 では XML ドキュメントを XSL-FO に 変 換 するための XSL スタイルシートの 作 成 を 解 説 します 簡 単 な 文 書 を 記 述 するためのフォーマット SimpleDoc を 使 います SimpleDoc のベースは 浅 見 智 晴 氏 が 作 成 した PureSmartDoc ( 参 考 資 料 [5])です サンプルとするために 要 素 の 種 類 を 減 らし 文 書 の 記 述 と 組 版 に 便 利 な 機 能 を 追 加 しました 本 稿 では SimpleDoc 文 書 を XSL-FO に 変 換 するスタイルシートの 作 り 方 を 解 説 します 本 稿 自 体 が SimpleDoc.dtd のインスタンス XML 文 書 であり ここで 解 説 している SimpleDoc 文 書 から XSL-FO に 変 換 するスタイルシートを 使 って XSL Formatter によって 組 版 できます (1) W3C にある XSL 1.0 の PDF 版 では 416 ページでした ( xslspecrx.pdf) はじめに 1

5 2 XSL スタイルシート 作 成 のステップ XSL-FO に 変 換 するためのスタイルシートの 作 成 は どのようなステップを 踏 むのでしょうか? 簡 単 に 整 理 すると 以 下 のようになります ステップ XML 文 書 の 構 造 を 知 る 印 刷 形 式 の 仕 様 を 作 成 する 印 刷 形 式 を XSL-FO にあてはめ る XSL スタイルシートを 作 成 する 内 容 まず 入 力 仕 様 にあたる XML 文 書 の 構 造 に 関 する 情 報 が 必 要 です XSLT プロセ ッサによる 変 換 処 理 では DTD が 存 在 しなくとも XSL-FO を 作 ることができま す しかし 要 素 やプロパティの 種 類 内 容 出 現 順 序 など DTD に 記 述 された 情 報 はスタイルシートを 作 成 する 上 ではどうしても 必 要 です 最 終 結 果 として 得 られる 印 刷 物 の 形 式 で いわば 出 力 仕 様 にあたります XSL- FO は 組 版 のための 仕 様 です 印 刷 形 式 の 仕 様 は 用 紙 のサイズとレイアウト 見 出 しや 本 文 の 体 裁 設 定 目 次 や 索 引 の 有 無 など 多 岐 にわたります 印 刷 形 式 の 仕 様 が 決 定 されれば その 形 式 で 印 刷 するためには どのような XSL- FO のオブジェクトとプロパティを 適 用 するのかを 知 らなければなりません こ れはできあいのスタイルシートを 手 がかりに 指 定 方 法 に 習 熟 してゆくのがよい でしょう 入 力 の XML 文 書 を 目 的 の 印 刷 形 式 に 変 換 するための 処 理 を XSL スタイルシー トで 記 述 します 入 力 XML 文 書 を 出 力 仕 様 を 実 現 する XSL-FO にマッピング します スタイルシートの 記 述 は 一 般 のプログラミング 言 語 と 同 じ 側 面 もあり ますが XSLT の 特 性 を 知 らないと 難 しい 分 野 (2) もあります XSLT そのものは 日 本 でも 書 籍 が 出 版 されていますので 参 考 にするとよいでしょう (2) 定 義 型 リストのテンプレート の 例 をご 覧 ください XSLT では 条 件 分 岐 の 制 御 構 造 を 作 れますが 変 数 への 代 入 はできま せん ループを 再 帰 呼 び 出 しで 実 現 するテクニックが 必 要 になります 2 XSL スタイルシート 作 成 のステップ

6 3 SimpleDoc の 構 造 最 初 に SimpleDoc の 構 造 の 概 略 を 次 の 表 に 示 します 詳 細 は SimpleDoc.dtd を 参 照 ください 要 素 意 味 定 義 block 要 素 並 び - p ul ol dl table program pre div hidden inline 要 素 並 び - a note span figure b i em code br icon index underline ref doc ルート 要 素 (head, body) head ヘッダー (date author position abstract title)* date, author, abstract, title ヘッダーの 構 成 要 素 : 作 成 日 著 者 要 約 表 題 (#PCDATA inline 要 素 並 び)* body 文 書 本 体 (part chapter section appendix (%block;) (%inline;) newpage)* part 部 (title, (chapter block 要 素 並 び inline 要 素 並 び newpage)*) chapter 章 (title, (section block 要 素 並 び inline 要 素 並 び newpage)*) section 節 (title, (subsection block 要 素 並 び inline 要 素 並 び newpage)*) subsection 副 節 (title, (subsubsection block 要 素 並 び inline 要 素 並 び newpage)*) subsubsection 副 々 節 (title, (block 要 素 並 び inline 要 素 並 び newpage)*) appendix 付 録 (title, (bib block 要 素 並 び inline 要 素 並 び newpage)*) 付 録 には 参 考 資 料 一 覧 を 置 くことができます title タイトル (#PCDATA inline 要 素 並 び)* p 段 落 (#PCDATA block 要 素 並 び inline 要 素 並 び)* ul 番 号 なしリスト (li*) type プロパティで 行 頭 文 字 を 指 定 できます ol 番 号 付 リスト (li*) type プロパティでリストのラベル 部 分 の 番 号 書 式 を 指 定 できます bib 参 考 資 料 リスト (li*) 巻 末 に 参 考 資 料 の 一 覧 を 作 成 するためのリストです dl 定 義 型 リスト (dt, dd)* type プロパティで 横 並 びのブロックにフォーマットするのか 縦 並 びのブロックにフォーマットするかを 指 定 できます dt dd 定 義 型 リストの 用 語 部 分 (#PCDATA ブロック 要 素 並 び インライン 要 素 並 び)* 定 義 型 リストの 定 義 部 分 (#PCDATA ブロック 要 素 並 び インライン 要 素 並 び)* table テーブル 全 体 (title?, col*, thead?, tfoot?, tbody) layout プロパティでテーブルを 自 動 レイアウトするか 否 か(auto/fixed) を 指 定 します width プロパティでテーブル 全 体 の 幅 を 指 定 します rowheight プロパティでテーブル 全 体 にわたる 行 の 高 さを 指 定 しま す col 列 プロパティ EMPTY number プロパティで 列 番 号 width プロパティで 列 幅 を 指 定 します thead テーブルヘッダ (tr*) tfoot テーブルフッタ (tr*) tbody テーブル 本 体 (tr*) tr テーブルの 行 (th td)* height プロパティで 行 の 高 さを 指 定 できます th ヘッダセル (inline 要 素 並 び)* colspan プロパティで 横 結 合 する 列 数, rowspan プロパティで 縦 結 合 する 行 数 を 指 定 できます align, valign プロパティで 横 縦 方 向 の 揃 えを 指 定 できます td データセル (inline 要 素 並 び)* SimpleDoc の 構 造 3

7 3 要 素 意 味 定 義 program プログラムコード (#PCDATA title)* colspan プロパティで 横 結 合 する 列 数, rowspan プロパティで 縦 結 合 する 行 数 を 指 定 できます align, valign プロパティで 横 縦 方 向 の 揃 えを 指 定 できます div 汎 用 ブロック 要 素 (title, ( 汎 用 ブロック 要 素 汎 用 インライン 要 素 )*) class プロパティで 種 類 を 拡 張 します a アンカー 要 素 (リンク) (#PCDATA inline 要 素 並 び)* href プロパティでリンク 先 URI を 指 定 します note 注 釈 (#PCDATA inline 要 素 並 び)* b 太 字 (#PCDATA inline 要 素 並 び)* i 斜 体 (#PCDATA inline 要 素 並 び)* em 強 調 (#PCDATA inline 要 素 並 び)* code インラインのプログラム コード (#PCDATA inline 要 素 並 び)* span 汎 用 インライン 要 素 (#PCDATA inline 要 素 並 び)* figure 図 (title?) src プロパティでファイルを 指 定 します br 改 行 EMPTY ref 参 考 資 料 への 参 照 番 号 EMPTY ref-id プロパティに 参 考 資 料 の ID を 設 定 します index 索 引 項 目 #PCDATA key プロパティでグループ 化 用 の 文 字 を 指 定 します 特 徴 は 次 のとおりです part ~ subsubsection にいたる 文 書 構 造 は PureSmartDoc と 同 じです 文 書 は part から 書 き 始 めるこ とも section から 作 成 することもできます 様 々な 規 模 の 文 書 に 対 応 できるよう 柔 軟 な 構 造 を 持 っ ています ブロック 要 素 とインライン 要 素 は PureSmartDoc より 要 素 数 を 減 らし 最 低 限 のものとしました 汎 用 ブロック 要 素 の div 汎 用 インライン 要 素 の span の class プロパティにより 様 々な 拡 張 ができる ように 考 慮 してあります テーブルのセルやリストの 要 素 内 で 改 行 ができるように また 段 落 (p) 内 でも 段 落 を 終 了 せずに 改 行 ができるように br 要 素 を 追 加 しました リストやテーブルでは プロパティ 値 でその 出 力 形 式 をある 程 度 指 定 できるようにしました 参 考 資 料 一 覧 の 作 成 索 引 の 作 成 方 法 について 説 明 するために 特 別 に bib, ref, index などの 要 素 を 用 意 しています 4 SimpleDoc の 構 造

8 4 Hello! World SimpleDoc 文 書 から XSL-FO への 変 換 の 最 も 簡 単 な 例 まず SimpleDoc 文 書 から XSL-FO に 変 換 する XSL スタイルシートの 最 も 簡 単 な 例 を 次 に 示 します 入 力 XML 文 書 (Hello.xml) <?xml version="1.0" encoding="shift-jis"?> <doc> <head> <title>サンプル</title> </head> <body> <p>hello World!</p> <p>はじめての<b>simpledoc</b>です </p> </body> </doc> XSL-FO 変 換 のスタイルシート(Sample.xsl) <?xml version="1.0" encoding="shift-jis"?> <xsl:stylesheet version="1.0" xmlns:fo=" xmlns:xsl=" <xsl:output method="xml" version="1.0" indent="yes" /> <xsl:template match="doc"> <fo:root xmlns:fo=" <fo:layout-master-set> <fo:simple-page-master page-height="297mm" page-width="210mm" margin="5mm 25mm 5mm 25mm" master-name="pagemaster"> <fo:region-body margin="20mm 0mm 20mm 0mm" /> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="pagemaster"> <fo:flow flow-name="xsl-region-body"> <fo:block> <xsl:apply-templates select="body" /> </fo:flow> </fo:page-sequence> </fo:root> <xsl:template match="body"> <xsl:apply-templates /> <xsl:template match="p"> <fo:block> <xsl:apply-templates /> <xsl:template match="b"> <fo:inline font-weight="bold"> <xsl:apply-templates /> </fo:inline> Hello! World 5

9 4 </xsl:stylesheet> 生 成 された XSL-FO <?xml version="1.0" encoding="utf-16"?> <fo:root xmlns:fo=" <fo:layout-master-set> <fo:simple-page-master page-height="297mm" page-width="210mm" margin="5mm 25mm 5mm 25mm" master-name="pagemaster"> <fo:region-body margin="20mm 0mm 20mm 0mm" /> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="pagemaster"> <fo:flow flow-name="xsl-region-body"> <fo:block> <fo:block>hello World! <fo:block>はじめての <fo:inline font-weight="bold">simpledoc</fo:inline>です </fo:flow> </fo:page-sequence> </fo:root> 上 の XSL-FO は 次 のように 組 版 / 表 示 されます Hello World! はじめての SimpleDoc です スタイルシートの 構 造 Sample.xsl と 生 成 された XSL-FO を 見 ると 次 のことがわかります スタイルシートはテンプレートの 集 合 です ルート 要 素 の xsl:stylesheet の 下 位 は xsl:template 要 素 か ら 構 成 されています 各 テンプレート xsl:template は match="xxx"で 入 力 XML 文 書 の xxx タグを 処 理 するよう 対 応 付 けられています 各 テンプレートでは 必 要 な XSL-FO のオブジェクトと 入 力 要 素 のテキストが 出 力 されます そし て xsl:apply-templates 命 令 により 子 供 の 要 素 に 対 応 するテンプレートが 呼 び 出 されます XSLT プロセッサは 入 力 XML 文 書 を 読 み 込 み そのルートノードから 処 理 を 開 始 します 要 素 を 処 理 するテンプレートを 探 し テンプレートに 記 述 された 処 理 を 行 います そして 再 帰 的 に 次 々と 子 要 素 を 処 理 して ルート 要 素 に 戻 って 処 理 対 象 がなくなったら 終 了 します ブロック 要 素 とインライン 要 素 次 に 注 目 していただきたい 点 は ブロック 要 素 とインライン 要 素 の 対 応 付 けです スタイルシートを 見 ると p 要 素 は fo:block オブジェクトに b 要 素 は fo:inline オブジェクトに 変 換 しています XSL-FO への 変 換 の 基 本 は 入 力 XML 文 書 の 要 素 をレイアウト 意 図 によりブロック オブジェクトかインライン オブジェクトに 変 換 することです 一 般 的 に 終 了 タグで 改 行 したい 要 素 は fo:block オブジェクトにマッピングします 終 了 タグで 改 行 しない 要 素 は fo:inline オブジェクトにマッピングします fo:inline オブジェクトには 何 らかの 修 飾 プロパティを 指 定 します ここでは b 要 素 は 太 字 を 意 味 しているので 書 体 をボールドに 設 定 しま した 6 Hello! World

10 4 FO ツリーの 構 造 次 に 注 目 していただきたい 点 は FO ツリーの 構 造 ですが まず XML 文 書 のツリー 構 造 を 見 てみまし ょう doc head body title p p 'サンプル' 'Hello World!' 'はじめての' b 'です.!' 'SimpleDoc!' Hello.xml のツリー 構 造 それに 対 し XSL-FO のツリー 構 造 は 以 下 のようになっています FO ツリーはルートが fo:root で そ の 子 供 に fo:layout-master-set と fo:page-sequence があります fo:layout-master-set は ページ 書 式 の 定 義 部 で fo:page-sequence はページに 配 置 する 実 データです fo:root fo:layout-master-set fo:page-sequence fo:simple-page-master fo:flow fo:region-body fo:block fo:block fo:block 'Hello World!' 'はじめての' fo:inline 'です.!' 'SimpleDoc!' XSLT 処 理 後 の XSL-FO ツリー ページ 書 式 を 定 義 する fo:layout-master-set は 実 際 の 組 版 データの fo:page-sequence より 前 (precedingsibling)でなければなりません XSL プロセッサは 入 力 の XML 文 書 をルート 要 素 からたどり 対 応 する テンプレート(xsl:template)を 探 して 処 理 をはじめます したがって 一 般 的 に fo:layout-master-set は 入 力 XML 文 書 のルート 要 素 を 処 理 するテンプレートで 出 力 する 必 要 があります この 例 では<xsl:template match="doc">がこの 処 理 を 行 っています fo:flow 以 降 は 要 素 名 が 変 わっただけで 元 の 文 書 と 同 じツリー 構 造 です 元 の 文 書 に 存 在 するものを <xsl:template match="xxx">~<xsl:apply-templates />で そのまま 引 き 写 すだけなら このような 結 果 にな ります また Sample.xsl では XML 文 書 中 の<head>~</head>の 情 報 が 出 力 に 現 れません これは <xsl:stylesheet match="doc">テンプレート 中 で <xsl:apply-templates select="body" />として 処 理 対 象 の 子 要 素 を<body>とし <head>を 除 外 しているからです スタイルシートでは このように 処 理 対 象 を 意 図 的 にコントロールすることができます Hello! World 7

11 5 実 用 的 な XSL スタイルシートの 設 計 印 刷 形 式 の 仕 様 前 章 の Sample.xsl では 実 用 的 な 出 力 結 果 を 得 ることはできません 次 に 実 用 的 な 組 版 を 行 うための スタイルシートの 作 成 方 法 を 説 明 します 全 体 の 構 成 は 次 のようにします 文 書 書 式 用 紙 サイズ 用 紙 方 向 項 目 A4 用 紙 (210mm 297mm) 縦 置 き 仕 様 書 字 方 向 すべて lr-tb( 文 字 は 左 から 右 行 は 上 から 下 へ) 構 成 ヘッダ フッタ 表 紙 目 次 先 頭 から 順 に 表 紙 目 次 本 文 索 引 の 順 とする 表 紙 目 次 索 引 にはヘッダ フッタは 使 わない 本 文 のみヘッダとフッタを 付 ける 用 紙 のマージン 項 目 仕 様 上 :25mm 下 :25mm 左 :25mm 右 :25mm 本 文 用 紙 のマージン 項 目 仕 様 上 :10mm 下 :10mm 左 :0mm 右 :0mm 内 容 part ~ subsubsection に 対 応 した 見 出 し 表 箇 条 書 き 段 落 画 像 から 構 成 書 字 方 向 段 数 1 基 本 文 字 サイズ 文 字 配 置 その 他 の 条 件 ヘッダ 領 域 lr-tb 10pt 両 端 揃 え ヘッダ 領 域 とフッタ 領 域 を 配 置 する フッタ 領 域 の 内 容 は 小 口 寄 りとして 左 右 で 切 り 替 える また 脚 注 領 域 と 本 文 の 間 に 境 界 線 を 配 置 する 境 界 線 種 は 実 線 本 文 領 域 の 1/3 の 長 さで 左 寄 りに 配 置 項 目 エクステント 書 字 方 向 内 容 10mm lr-tb 仕 様 文 書 の 表 題 を 印 字 する 文 字 サイズ 9pt 文 字 送 り 方 向 は 中 央 揃 え 行 送 り 方 向 は 下 揃 え ページ 上 部 に 爪 インデクスを 作 成 する フッタ 領 域 項 目 エクステント 書 字 方 向 内 容 仕 様 10mm lr-tb ページ 番 号 および 現 在 ページの 節 タイトルを 小 口 側 に 印 字 する 8 実 用 的 な XSL スタイルシートの 設 計

12 5 索 引 項 目 仕 様 用 紙 のマージン 上 :25mm 下 :25mm 左 :25mm 右 :25mm 段 数 2 段 間 20mm XSL スタイルシートの 構 成 XSL スタイルシートは 次 の5つのファイルから 構 成 されます ファイル 名 SD2FO-DOC.XSL attribute.xsl param.xsl index.xsl article.xsl 内 容 用 途 XSL スタイルシート 本 体 XSL-FO のプロパティをまとめて 定 義 したファイル 用 紙 サイズなどの 値 をパラメータとして 定 義 したファイル 索 引 を 作 成 する 処 理 をまとめたファイル 表 紙 目 次 索 引 の 無 い 論 文 型 書 式 の 組 版 用 スタイルシート SD2FO-DOC.XSL は 大 別 すると 次 のトップレベル XSLT 要 素 から 構 成 されます XSLT 要 素 xsl:include xsl:param xsl:attribute-set xsl:template match="xxx" xsl:template name="yyy" xsl:key 内 容 用 途 機 能 別 に 分 割 されたスタイルシートをインクルードします スタイルシート 全 体 で 使 用 する 用 紙 サイズなどの 値 をパラメータとして 定 義 します ブロックやインラインなど 出 力 する XSL-FO のオブジェクトごとのプロパティをグ ループ 化 して 定 義 したものです 入 力 XML 文 書 のタグ("xxx")ごとに 記 述 した 変 換 テンプレート 定 義 です <xsl:applytemplates />で 呼 び 出 されます <xsl:call-template name="yyy" />で 明 示 的 に 呼 び 出 される いわばテンプレートのサブ ルーチンです 索 引 のための key を 生 成 します 索 引 の 作 り 方 は 後 述 します xsl:param xsl:attribute-set はそれぞれ param.xsl attribute.xsl の 中 で 定 義 され SD2FO-DOC.XSL におい てインクルードされています スタイルシートを 作 成 する 際 に 必 ずしも xsl:param xsl:attribute-set を 使 う 必 要 はありません しかし 以 下 の 利 点 があります xsl:attribute-set は XSL-FO のプロパティ xsl:template は 変 換 処 理 本 体 と 役 割 分 担 させることにより スタイルシートを 見 やすくでき メンテナンスが 容 易 になります xsl:param は XSLT プロセッサの 呼 び 出 し 側 から 値 を 渡 すことができます スタイルシートで xsl:param の 値 によって 処 理 を 分 岐 させれば スタイルシートの 処 理 を 外 部 から 制 御 することができ ます xsl:param の 使 用 例 <!-- 目 次 を 作 成 するか 否 かを 決 定 します --> <xsl:param name="toc-make" select="false()" /> <!-- 用 紙 サイズを 定 義 します --> <!-- 値 は$paper-width, $paper-height で 参 照 できます --> <xsl:param name="paper-width">210mm</xsl:param> <xsl:param name="paper-height">297mm</xsl:param> 実 用 的 な XSL スタイルシートの 設 計 9

13 5 xsl:attribute-set の 使 用 例 <!-- 段 落 (p 要 素 )に 対 応 する XSL-FO のプロパティを 定 義 します --> <!-- xsl:use-attribute-sets="p"で 参 照 できます --> <xsl:attribute-set name="p"> <xsl:attribute name="text-indent">1em <xsl:attribute name="space-before">0.6em <xsl:attribute name="space-after">0.6em <xsl:attribute name="text-align">justify </xsl:attribute-set> 以 降 ではこの SD2FO-DOC.XSL に 沿 って スタイルシートを 説 明 します 10 実 用 的 な XSL スタイルシートの 設 計

14 6 ページ 書 式 の 設 定 SD2FO-DOC.XSL のページ 書 式 は 次 のような 特 徴 を 持 ちます 表 紙 目 次 本 文 索 引 用 のページ 書 式 を 持 つ 表 紙 目 次 索 引 用 のページ 書 式 はページ 番 号 や 文 書 名 を 入 れないものとする したがってヘッ ダ フッタ 領 域 は 持 たない 本 文 用 のページ 書 式 は 左 右 で 異 なるページ 書 式 とし フッタ 内 容 の 印 刷 位 置 を 小 口 寄 りに 配 置 する ページ 番 号 は 本 文 の 先 頭 を1ページとする 索 引 ページのみ 二 段 組 とする したがって 表 紙 目 次 本 文 ( 左 ) 本 文 ( 右 ) 索 引 の5 種 類 のページ 書 式 が 必 要 になります 以 降 で 各 ページ 書 式 の 定 義 方 法 を 記 述 します 表 紙 目 次 のページ 書 式 表 紙 目 次 のページ 書 式 は 次 の 図 のようになります ページ 書 式 の 設 定 11

15 6 25mm 25mm 25mm 本 文 領 域 桁 の 進 行 方 向 行 の 進 行 方 向 用 紙 のマージン 297mm 25mm 210mm 表 紙 目 次 のページ 書 式 ページの 書 式 はページマスタとして 定 義 します 具 体 的 には fo:simple-page-master 要 素 を 用 いて 以 下 のように 記 述 します スタイルシートのページ 書 式 設 定 部 分 <fo:simple-page-master margin="25mm 25mm 25mm 25mm" master-name="pagemaster-cover"> <xsl:attribute name="page-height"> <xsl:value-of select="$paper-height" /> <xsl:attribute name="page-width"> <xsl:value-of select="$paper-width" /> <fo:region-body margin="0mm 0mm 0mm 0mm" /> </fo:simple-page-master> <fo:simple-page-master margin="25mm 25mm 25mm 25mm" master-name="pagemaster-toc"> <xsl:attribute name="page-height"> <xsl:value-of select="$paper-height" /> <xsl:attribute name="page-width"> <xsl:value-of select="$paper-width" /> <fo:region-body margin="0mm 0mm 0mm 0mm" /> </fo:simple-page-master> 12 ページ 書 式 の 設 定

16 6 設 定 している 値 は 同 じですが 変 更 の 可 能 性 も 考 えて それぞれページマスタを 用 意 します fo:simple-page-master の master-name との 対 応 関 係 は 次 のとおりです master-name 用 途 参 照 しているテンプレート PageMaster-Cover 表 紙 用 <xsl:template match="doc/head"> PageMaster-TOC 目 次 用 <xsl:template name="toc"> これらのページマスタをどこで 定 義 し どこで 参 照 するかという 観 点 で XSL-FO ツリーの 構 造 を 示 す と 次 の 図 のようになります fo:root fo:simple-page-master master-name= "PageMaster-Cover" fo:layout-master-set master-reference= "PageMaster-Cover" で 参 照 fo:page-sequence master-reference= "PageMaster-Cover" 表 紙 の 内 容... fo:page-sequence master-reference= "PageMaster-TOC" fo:page-sequence master-reference= "PageMaster" 目 次 の 内 容... 本 文 部 分 の 内 容... fo:simple-page-master master-name= "PageMaster-TOC" fo:simple-page-master master-name= "PageMaster" master-reference="pagemaster-toc"で 参 照 master-reference="pagemaster"で 参 照 ページ 書 式 から 見 た FO ツリーの 構 造 本 文 のページ 書 式 - 左 右 ページ 書 式 の 切 り 替 え 本 文 では 左 右 でのページ 書 式 切 り 替 えを 行 います XSL-FO では 偶 数 ページ 書 式 と 奇 数 ページ 書 式 を グループにして 交 互 に 切 り 替 えることで 左 右 ページの 書 式 切 替 ができます 左 ページ 用 と 右 ページ 用 のふたつの fo:simple-page-master を 作 成 し fo:page-sequence-master で 2 つを グループ 化 します 2 つのページ 書 式 を 交 互 に 繰 返 すには fo:repeatable-page-master-alternatives を 使 いま す 偶 数 ページ 用 か 奇 数 ページ 用 かは fo:conditional-page-master-reference の odd-or-even プロパティに odd ( 奇 数 )または even( 偶 数 )を 指 定 します スタイルシートでの 記 述 は 以 下 のようになります スタイルシートのページ 書 式 設 定 部 分 <fo:simple-page-master margin="10mm 00mm 10mm 00mm" master-name="pagemaster-left"> <xsl:attribute name="page-height"> <xsl:value-of select="$paper-height-default" /> <xsl:attribute name="page-width"> <xsl:value-of select="$paper-width-default" /> <fo:region-body margin="15mm 25mm 15mm 25mm" /> <fo:region-before region-name="left-header" extent="10mm" display-align="after" /> <fo:region-after region-name="left-footer" extent="10mm" display-align="before" /> <fo:region-start region-name="left-start" extent="20mm" /> <fo:region-end region-name="left-end" extent="20mm" /> </fo:simple-page-master> ページ 書 式 の 設 定 13

17 6 <fo:simple-page-master margin="10mm 00mm 10mm 00mm" master-name="pagemaster-right"> <xsl:attribute name="page-height"> <xsl:value-of select="$paper-height-default" /> <xsl:attribute name="page-width"> <xsl:value-of select="$paper-width-default" /> <fo:region-body margin="15mm 25mm 15mm 25mm" /> <fo:region-before region-name="right-header" extent="10mm" display-align="after" /> <fo:region-after region-name="right-footer" extent="10mm" display-align="before" /> <fo:region-start region-name="right-start" extent="20mm" /> <fo:region-end region-name="right-end" extent="20mm" /> </fo:simple-page-master> <fo:page-sequence-master master-name="pagemaster"> <fo:repeatable-page-master-alternatives> <fo:conditional-page-master-reference master-reference="pagemaster-left" odd-or-even="even" /> <fo:conditional-page-master-reference master-reference="pagemaster-right" odd-or-even="odd" /> </fo:repeatable-page-master-alternatives> </fo:page-sequence-master> 横 組 みなので 奇 数 ページを 右 にします 索 引 のページ 書 式 - 二 段 組 索 引 のページ 書 式 は 二 段 組 です XSL-FO では fo:region-body のプロパティ column-count に 段 数 を 指 定 します つまりページ 単 位 で 段 組 の 設 定 が 可 能 ですが ページの 途 中 で 段 数 を 変 更 することはできませ ん ただし fo:block にプロパティ span="all"を 指 定 することでブロック オブジェクトを 全 段 抜 きで 配 置 することができます 段 間 の 空 き 量 は fo:region-body のプロパティ column-gap で 指 定 します スタイル シートでは 以 下 のように 記 述 します スタイルシートのページ 書 式 設 定 部 分 <fo:simple-page-master margin="25mm 25mm 25mm 25mm" master-name="pagemaster-index"> <xsl:attribute name="page-height"> <xsl:value-of select="$paper-height-default" /> <xsl:attribute name="page-width"> <xsl:value-of select="$paper-width-default" /> <fo:region-body margin="00mm 00mm 00mm 00mm" column-count="2" column-gap="20mm" /> </fo:simple-page-master> 14 ページ 書 式 の 設 定

18 7 スタイルシート 全 体 の 出 力 制 御 スタイルシートは FO ツリーをページ 書 式 部 分 (fo:layout-master-set) 表 紙 の 内 容 目 次 の 内 容 本 文 の 内 容 索 引 の 内 容 (これらは fo:page-sequence)の 順 で 生 成 する 表 紙 と 目 次 索 引 は 入 力 の XML データの 順 に 沿 ったスタイルシートからは 作 れないので 独 自 に 作 成 するサブルーチンのテンプレートを 作 る これらの 制 御 をルート 要 素 doc を 処 理 するテンプレートで 行 う doc 要 素 を 処 理 するテンプレートは 以 下 のようになります 要 件 どおり fo:layout-master-set の 出 力 表 紙 の 作 成 目 次 の 作 成 本 文 の 処 理 索 引 の 作 成 という 順 になっています doc 要 素 のプロパティまたは 外 部 パラメータを 指 定 することで 表 紙 目 次 索 引 の 出 力 をそれぞれ 抑 制 できるようにしました 例 えば <doc cover="false">とすれば 表 紙 は 出 力 されません また 外 部 パラメータとして toc-make の 値 を false としておけば 目 次 は 出 力 されません doc 要 素 を 処 理 するテンプレート <xsl:template match="doc"> <fo:root xmlns:fo=" <fo:layout-master-set> <!-- ページ 書 式 の 設 定 (fo:simple-page-master) 省 略 --> </fo:layout-master-set> <!-- head 要 素 を 処 理 させ 表 紙 を 作 成 します --> <xsl:if test="$cover-make <xsl:apply-templates select="head" /> </xsl:if> <!-- 目 次 を 作 成 するテンプレートを 呼 び 出 します --> <xsl:if test="$toc-make <xsl:call-template name="toc" /> </xsl:if> <!-- 本 文 (body 要 素 以 降 )を 処 理 します --> <xsl:apply-templates select="body" /> <!-- 索 引 を 作 成 するテンプレートを 呼 び 出 します --> <xsl:if test="$index-make <xsl:if test="//index"> <xsl:call-template name="index.create" /> </xsl:if> </xsl:if> </fo:root> スタイルシート 全 体 の 出 力 制 御 15

19 8 表 紙 の 作 成 表 紙 には head 要 素 の title( 表 題 ) date( 作 成 日 ) author( 著 者 )を 出 力 する abstract は 出 力 しない 表 題 を 格 納 するブロックは 幅 130mm 高 さ 20mm で 左 右 中 央 に 配 置 する 背 景 はグレーでボーダ ーにはそれより 濃 い 目 のグレーを 使 用 する 上 マージンから 25mm の 位 置 に 配 置 し 次 に 配 置 す る 作 成 日 との 間 に 150mm の 距 離 を 確 保 する フォントサイズは 24pt とし フォントは MS ゴシ ック を 使 用 する 文 字 の 配 置 はブロック 内 でセンタリングする 作 成 日 を 格 納 するブロックは 幅 160mm で 左 右 中 央 に 配 置 する 背 景 色 ボーダーはなし フォン トサイズは 14pt フォントは MS 明 朝 を 使 用 する 著 者 との 間 に 5mm の 空 きを 確 保 する 著 者 を 格 納 するブロックは 幅 160mm で 左 右 中 央 に 配 置 する 背 景 色 ボーダーはなし フォント サイズは 14pt フォントは MS 明 朝 を 使 用 する author にロゴマークの 画 像 が 指 定 された 場 合 はそれを 文 字 の 上 側 に 印 字 する 表 紙 の 作 成 は head を 処 理 するテンプレートで 行 います 表 題 部 分 のレイアウト 指 定 は xsl:attribute-set の 中 で name="cover.title"の 部 分 に 整 理 されています 表 紙 の 表 題 作 成 日 著 者 の 書 式 指 定 <!-- cover --> <xsl:attribute-set name="cover.title"> <xsl:attribute name="space-before">25mm <xsl:attribute name="space-before.conditionality">retain <xsl:attribute name="space-after">150mm <xsl:attribute name="font-size">24pt <xsl:attribute name="font-family">"ms ゴシック" <xsl:attribute name="text-align">center <xsl:attribute name="text-align-last">center <xsl:attribute name="start-indent">15mm <xsl:attribute name="width">130mm <xsl:attribute name="height">20mm <xsl:attribute name="background-color">#eeeeee <xsl:attribute name="border-style">outset <xsl:attribute name="border-color"># <xsl:attribute name="padding-top">5pt <xsl:attribute name="padding-bottom">5pt </xsl:attribute-set> <xsl:attribute-set name="cover.date"> <xsl:attribute name="space-after">5mm <xsl:attribute name="font-size">14pt <xsl:attribute name="font-family">"ms 明 朝 " <xsl:attribute name="text-align">center <xsl:attribute name="text-align-last">center <xsl:attribute name="width">160mm </xsl:attribute-set> <xsl:attribute-set name="cover.author"> <xsl:attribute name="font-size">14pt <xsl:attribute name="font-family">"ms 明 朝 " <xsl:attribute name="text-align">center <xsl:attribute name="text-align-last">center <xsl:attribute name="width">160mm </xsl:attribute-set> 注 意 すべき 点 は 次 の 通 りです 16 表 紙 の 作 成

20 8 表 題 をレイアウトする 手 段 として fo:block-container を 使 用 します fo:block-container には width, height が 指 定 できます 本 文 領 域 の 幅 は 210mm - 25mm - 25mm = 160mm です この 幅 の 中 にセンタ リングして 配 置 できればよいのですが そのような 機 能 はないので ここからブロックの 幅 130mm を 引 き 結 果 の 30mm を 等 分 して start-indent=15mm と 指 定 しています fo:block-container にはプロパティ space-before="25mm"を 指 定 しています この 表 題 は 本 文 領 域 内 の 最 初 のブロックになります しかし 既 定 値 のままでは 本 文 領 域 の 先 頭 ブロックの space-before は 無 視 されて 表 題 が 本 文 領 域 の 上 端 に 配 置 されてしまいます space-before.conditionality="retain"とす ることにより 強 制 的 に 空 きを 確 保 することができます author に logo プロパティが 指 定 されていた 場 合 それを 画 像 として 表 示 します これを 処 理 するのが author.logo.img テンプレートです pos プロパティにより 配 置 位 置 も 著 者 の 左 か 上 かを 選 択 できます 画 像 付 き 著 者 名 の 例 は 本 稿 の 表 紙 をご 覧 ください head 要 素 を 処 理 するテンプレート <xsl:template match="doc/head"> <fo:page-sequence master-reference="pagemaster-cover"> <fo:flow flow-name="xsl-region-body"> <fo:block-container xsl:use-attribute-sets="cover.title"> <xsl:apply-templates select="/doc/head/title" /> </fo:block-container> <fo:block-container xsl:use-attribute-sets="cover.date"> <xsl:apply-templates select="/doc/head/date" /> </fo:block-container> <fo:block-container xsl:use-attribute-sets="cover.author"> <xsl:apply-templates select="/doc/head/author" /> </fo:block-container> </fo:flow> </fo:page-sequence> <xsl:template match="doc/head/title"> <fo:block start-indent="0mm"> <xsl:apply-templates /> <xsl:template match="doc/head/date"> <fo:block> <xsl:apply-templates /> <xsl:template match="doc/head/author"> <fo:block> <xsl:if test="@logo"> <xsl:call-template name="author.logo.img" /> </xsl:if> <xsl:apply-templates /> <xsl:template name="author.logo.img"> <xsl:choose> <xsl:when test="@pos='side'"> <fo:inline space-end="1em"> <fo:external-graphic src="{@logo}"> <xsl:if test="@width <xsl:attribute name="content-width"> <xsl:value-of select="@width" /> <xsl:attribute name="content-height"> <xsl:value-of select="@height" /> 表 紙 の 作 成 17

21 8 </xsl:if> </fo:external-graphic> </fo:inline> </xsl:when> <xsl:otherwise> <fo:block space-after="1em"> <fo:external-graphic <xsl:if <xsl:attribute name="content-width"> <xsl:value-of /> <xsl:attribute name="content-height"> <xsl:value-of /> </xsl:if> </fo:external-graphic> </xsl:otherwise> </xsl:choose> テンプレートはきわめて 単 純 な 構 造 です title, date, author のそれぞれに 対 応 した fo:block-container に xsl:attribute-set 要 素 で 定 義 したプロパティの 組 を xsl:use-attribute-sets で 呼 び 出 して 適 用 させていま す それぞれの fo:block-container の 中 では title, date, author の 各 要 素 にそれぞれのテンプレートを 適 用 していきます 18 表 紙 の 作 成

22 9 目 次 の 作 成 目 次 は 表 紙 の 次 に 改 ページして 配 置 する 表 題 は 目 次 背 景 は 薄 い 灰 色 入 力 XML 文 書 中 の part( 部 ), chapter( 章 ), section( 節 ), subsection( 副 節 ), subsubsection( 副 々 節 )の title 要 素 の 内 容 を 集 めて 目 次 を 作 成 する 目 次 の 各 行 は part ~ subsection の 各 title リーダ( 罫 ) ページ 番 号 で 構 成 目 次 の 各 行 は 文 書 中 の part ~ subsection のネストレベル( 入 れ 子 の 深 さ)に 応 じて 前 スペース 左 インデント フォントサイズ フォントウェイトを 設 定 する PDF 出 力 のために 目 次 の 各 行 から 本 文 中 の 見 出 しへの 内 部 リンクを 設 定 する 目 次 作 成 テンプレート 目 次 は toc テンプレートで 作 成 します toc テンプレートは ルート 要 素 doc を 処 理 するテンプレート から <xsl:call-template name="toc">で 呼 び 出 されます toc テンプレート <xsl:template name="toc"> <!-- fo:page-sequence を 生 成 します --> <fo:page-sequence master-reference="pagemaster-toc"> <!-- region-body に 対 する flow を 生 成 します --> <fo:flow flow-name="xsl-region-body"> <!-- 目 次 全 体 のブロックを 生 成 します --> <fo:block xsl:use-attribute-sets="div.toc"> <!-- 目 次 のタイトル Table of Contents を 生 成 します --> <fo:block xsl:use-attribute-sets="h2">table of Contents <!-- XML 文 書 全 体 から part, chapter, section, subsection, subsubsection 要 素 を 抽 出 し--> <xsl:for-each select="//part //chapter //section //subsection //subsubsection"> <!-- 各 々に 対 して 目 次 の 各 行 を 生 成 するテンプレートを 適 用 します --> <xsl:call-template name="toc.line" /> </xsl:for-each> </fo:flow> </fo:page-sequence> toc テンプレートでは 次 の 順 で 処 理 を 行 います 1. 新 しい page-sequence を 生 成 します この page-sequence はページ 書 式 として mastername="pagemaster-toc"の fo:simple-page-master を 参 照 します 新 しい page-sequence が 生 成 される ため 印 刷 時 には 改 ページが 発 生 します 2. 次 に 本 文 領 域 の xsl:flow オブジェクトを 生 成 します 目 次 全 体 を 蔽 うブロックを "div.toc"という 名 の attribute-set を 適 用 して 作 成 します この attribute-set では 背 景 の 薄 い 灰 色 を 設 定 しています そ して 目 次 のタイトルの 目 次 を 作 成 します 3. xsl:for-each select="..."で 文 書 全 体 の part ~ subsubsection の 要 素 集 合 を 生 成 し 個 々の 要 素 を 目 次 の 一 行 を 処 理 する toc.line テンプレートに 渡 します 目 次 の 行 の 並 びは XML 文 書 ツリーでの 該 当 ノー ドの 出 現 順 になります 目 次 の 作 成 19

23 9 このテンプレートは doc 要 素 を 処 理 するテンプレートから 呼 び 出 されますので カレントノードは doc 要 素 ノードです xsl:for-each は このカレントノードを select で 指 定 したノード 集 合 のひとつひとつ に 一 時 的 に 変 更 します したがって 呼 び 出 される toc.line テンプレートでは カレントノードは part ~ subsection のいずれかの 要 素 ノードになります xsl:for-each の 処 理 が 終 了 するとカレントノードは 元 の doc 要 素 ノードに 復 帰 します 目 次 行 の 作 成 テンプレート toc.line テンプレートでは 目 次 の 一 行 を 編 集 します 目 次 の 各 行 を 生 成 する toc.line テンプレート <!-- 目 次 行 の 編 集 で 使 用 するグローバルパラメータと 変 数 です --> <xsl:param name="toc-level-default" select="3" /> <!-- 目 次 行 の 編 集 テンプレート 本 体 --> <xsl:variable name="toc-level-max"> <xsl:choose> <xsl:when test="not (doc/@toclevel)"> <xsl:value-of select="$toc-level-default" /> </xsl:when> <xsl:otherwise> <xsl:value-of select="number(doc/@toclevel)" /> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:template name="toc.line"> <!-- カレントノードのネストレベルを 計 算 し "level" ローカル 変 数 にセットします --> <xsl:variable name="level" select="count(ancestor-or-self::part ancestor-or-self::chapter ancestor-or-self::section ancestor-or-self::subsection ancestor-or-self::subsubsection )" /> <!-- ネストレベルが 対 象 内 かチェックします --> <xsl:if test="$level <= $toc-level-max"> <!-- 目 次 の 一 行 ごとに fo:block を 生 成 します --> <fo:block text-align-last="justify"> <!-- 左 マージンはネストレベルに 比 例 させて 深 くします --> <xsl:attribute name="margin-left"> <xsl:value-of select="$level - 1" /> <xsl:text>em</xsl:text> <!-- space-before は 上 位 の 項 目 であるほど 大 きく 取 ります --> <xsl:attribute name="space-before"> <xsl:choose> <xsl:when test="$level=1">5pt</xsl:when> <xsl:when test="$level=2">3pt</xsl:when> <xsl:when test="$level=3">1pt</xsl:when> <xsl:otherwise>1pt</xsl:otherwise> </xsl:choose> <!-- font-size も 同 様 です --> <xsl:attribute name="font-size"> <xsl:choose> <xsl:when test="$level=1">1em</xsl:when> <xsl:otherwise>0.9em</xsl:otherwise> </xsl:choose> <!-- font-weight も 同 様 です --> <xsl:attribute name="font-weight"> <xsl:value-of select="800 - $level * 100" /> 20 目 次 の 作 成

24 9 <!-- 以 降 が 目 次 のデータです --> <fo:basic-link internal-destination="{generate-id()}"> <xsl:value-of select="title" /> </fo:basic-link> <fo:leader leader-pattern="dots" /> <!-- fo:page-number-citation を 生 成 します 印 刷 時 はページ 番 号 で 置 き 換 えられます --> <fo:page-number-citation ref-id="{generate-id()}" /> </xsl:if> toc.line テンプレートでは 次 の 順 で 処 理 を 行 います 1. 処 理 する 要 素 ノードのルート 要 素 からの 入 れ 子 の 深 さ(ネストレベル)を 計 算 し level 変 数 に 設 定 し ます 2. ネストレベルが 目 次 を 設 定 するレベル 以 下 であれば 処 理 を 進 めます そうでなければ 読 み 飛 ばし ます 目 次 を 設 定 するレベルは doc 要 素 の toclevel プロパティで 指 定 します 指 定 がない 場 合 は3 としています 3. 目 次 の 各 行 に 対 して fo:block を 生 成 します 4. ルート 要 素 からの 深 さに 応 じて インデント フォントサイズ フォントウェイトのプロパティ 値 を 決 定 します 5. 目 次 行 の 実 データであるその 要 素 の title リーダ ページ 番 号 を 出 力 します 目 次 の 見 出 しを fo:basiclink で 囲 み 見 出 しから 本 文 へのリンクを 設 定 します 生 成 した PDF に 内 部 リンクとして 設 定 され ます (fo:basic-link については PDF 生 成 に 関 する 機 能 の 項 で 説 明 します ) ネストレベルの 計 算 ネストレベルは level というローカル 変 数 を 設 けて count(ancestor-or-self::part ancestor-or-self::chapter ancestor-or-self::section ancestor-or-self::subsection ancestor-or-self::subsubsection )という 値 を 計 算 させるこ とで 得 ています doc 要 素 の 下 にある 自 分 もしくは 先 祖 の part ~ subsubsection の 数 を 数 えるわけです 図 解 すると 次 のようになります doc part title="introduction" part title="introduction to XSL" 4 chapter title="what this is About" chapter title="xml overview" 3 section title="this Book is for you" section title="dtd" 2 subsection title="xml, XSL, XSLT" subsection title="what is DTD" subsection title="how To Use DTD" 1 対 象 要 素 subsubsection title="naming Rule" subsubsection title="dtd from scratch" subsubsection title="dtd Editor" count(ancestor-or-self::part ancestor-or-self::chapter ancestor-or-self::section ancestor-or-self::subsection )は 自 分 自 身 を 含 む 先 祖 のpart, chapter, section, subsection, subsubsection 要 素 の 数 をカウントして 返 します. 例 えば 対 象 の 要 素 がtitel="How To Use DTD"のsubsectionの 場 合 count(...) 関 数 の 返 す 値 は4になります. ルート 要 素 からのネストレベルの 計 算 目 次 の 作 成 21

25 9 ネストレベルに 応 じたプロパティ 設 定 取 得 したカレントノードのネストレベルに 応 じて fo:block のプロパティを 設 定 します ここでは part ~ subsubsection という 要 素 名 に 応 じて 設 定 しているのではない 点 にご 注 意 ください ネストレベルに 応 じてプロパティ 設 定 を 行 うことで 使 用 する 要 素 に 依 存 せず 同 じフォーマットで 目 次 を 生 成 できます 次 の 表 がスタイルシートが 設 定 しているプロパティです プロパティ ネストレベル margin-left 0em 1em 2em 3em 4em space-before 5pt 3pt 1pt 1pt 1pt font-size 1em 0.9em 0.9em 0.9em 0.9em font-weight ページ 番 号 の 取 得 次 に 各 part ~ subsection の 出 現 するページ 番 号 を 取 得 する 必 要 があります ところが XSL 変 換 で FO を 作 る 段 階 ではページ 番 号 の 値 を 知 りたくても まだ 組 版 していないので 値 は 未 確 定 です これを XSL- FO では fo:page-number-citation という 機 構 で 解 決 します fo:page-number-citation は 組 版 の 過 程 でフォー マッタがページ 番 号 に 置 き 換 える FO です どのページ 番 号 で 置 き 換 えるのかを 指 定 するのが ref-id プ ロパティです フォーマッタは ref-id で 指 定 された 値 と 同 じ 値 を id プロパティで 持 った FO を 探 します そしてその FO が 属 しているページの 番 号 を 取 得 してきてくれます したがって part ~ subsection 要 素 から 生 成 する fo:block には かならず id プロパティを 作 らねばなりません この 仕 組 みを 図 で 表 すと 次 のようになります 目 次 ページ 本 文 ページ - 目 次 - 第 9 章 WEBアプリケーション.. 第 9 章 WEBアプリケーション WEBアプリケーションにおけるXML 技 術 の 導 入 は この 間 急 速 な 発 展 をと げてきました. 例 えば 目 次 行 に 対 応 するFOオブジェクト fo:block 章 見 出 しに 対 応 するFOオブジェクト fo:block id="nnn" ' 第 9 章 WEBアプリケーション' fo:leader leader-pattern="dots" idで 対 応 付 け ' 第 9 章 WEBアプリケーション' fo:pagenumber-citation ref-id="nnn" fo:page-number-citation の 仕 組 み 22 目 次 の 作 成

26 9 テンプレート 中 では ref-id プロパティの 値 として generate-id( ) 関 数 を 使 用 しています generate-id( ) 関 数 は XSLT プロセッサが カレントノードを 識 別 するユニークな 文 字 列 を 生 成 してくれます fo:leader 目 次 行 のタイトルとページ 番 号 の 間 には fo:leader を 使 用 しています fo:leader は インラインエリア を 生 成 する 特 殊 なオブジェクトです ここでは leader-pattern="dots"を 指 定 しました タイトルとページ 番 号 の 間 を dot(ピリオド)で 埋 める 役 割 を 果 たします ここで 重 要 な 点 は 目 次 行 を 生 成 する fo:block で text-align-last="justify"で 両 端 揃 えを 指 定 している 点 です これにより 部 ~ 節 のタイトルは 左 に ページは 右 に 配 置 され その 間 をリーダパターンが 埋 める 結 果 を 得 ることができます fo:leader のプロパティで 様 々なパターンを 指 定 することができます 次 に 例 を 示 します 左 側 が fo:leader のプロパティです leader-pattern="dots" ページ leader-pattern="rule" rule-style="dotted" 99 ページ leader-pattern="rule" rule-style="dashed" 99 ページ leader-pattern="rule" rule-style="solid" 99 ページ leader-pattern="rule" rule-style="double" 99 ページ leader-pattern="rule" rule-style="groove" 99 ページ leader-pattern="rule" rule-style="ridge" 99 ページ また 次 のようにした 場 合 <fo:leader leader-pattern="use-content">+</fo:leader> パターンの 任 意 指 定 ページ 生 成 された 目 次 行 の 例 今 までの 手 続 きを 経 て 作 成 された 目 次 行 の FO の 例 を 示 します 生 成 された 目 次 行 <fo:block text-align-last="justify" margin-left="0em" space-before="5pt" font-size="1em" font-weight="700"> <fo:basic-link internal-destination="ida0uu3b"> はじめに </fo:basic-link> <fo:leader leader-pattern="dots" /> <fo:page-number-citation ref-id="ida4aiob" /> 実 際 の 印 刷 例 は 本 稿 の 目 次 を 参 照 ください 目 次 の 作 成 23

27 10 本 文 の 処 理 入 力 XML 文 書 中 の body 要 素 以 下 の 要 素 の 内 容 を 本 文 に 出 力 する 本 文 部 分 の 各 ページ 書 式 は ページヘッダ ページフッタと 本 文 領 域 から 構 成 する ページヘッ ダ ページフッタの 内 容 は 本 文 の 偶 数 ページと 奇 数 ページで 対 称 の 位 置 に 配 置 する 脚 注 があるページには 本 文 領 域 と 脚 注 領 域 を 区 切 る 線 を 引 く 本 文 を 処 理 するテンプレートの 枠 組 み 入 力 XML 文 書 の 本 文 部 分 は body 要 素 以 下 に 格 納 されます body 要 素 を 処 理 するテンプレートを 次 に 示 します body 要 素 を 処 理 するテンプレート <!-- 本 文 の 処 理 --> <xsl:template match="body"> <!-- 開 始 ページ 番 号 は1 --> <fo:page-sequence master-reference="pagemaster" initial-page-number="1"> <!-- 左 ページのヘッダ --> <fo:static-content flow-name="left-header"> <!-- ( 詳 細 は ページヘッダとページフッタの 作 成 の 項 を 参 照 )--> </fo:static-content> <!-- 右 ページのヘッダ --> <fo:static-content flow-name="right-header"> <!-- ( 詳 細 は ページヘッダとページフッタの 作 成 の 項 を 参 照 )--> </fo:static-content> <!-- 左 ページのフッタ --> <fo:static-content flow-name="left-footer"> <!-- ( 詳 細 は ページヘッダとページフッタの 作 成 の 項 を 参 照 )--> </fo:static-content> <!-- 右 ページのフッタ --> <fo:static-content flow-name="right-footer"> <!-- ( 詳 細 は ページヘッダとページフッタの 作 成 の 項 を 参 照 )--> </fo:static-content> <!-- 本 文 と 脚 注 の 間 に 短 い 線 を 引 く --> <fo:static-content flow-name="xsl-footnote-separator"> <fo:block> <fo:leader leader-pattern="rule" rule-thickness="0.5pt" leader-length="33%" /> </fo:static-content> <!-- 本 文 領 域 --> <fo:flow flow-name="xsl-region-body"> <fo:block> <xsl:apply-templates /> </fo:flow> </fo:page-sequence> このテンプレートでは 以 下 の 処 理 を 行 います 24 本 文 の 処 理

28 10 1. 新 しい "PageMaster" に 基 づいた fo:page-sequence を 作 成 します これで 直 前 の 目 次 からページ 書 式 が 切 り 替 わります 2. 新 しいページ 書 式 に 基 づいて ページヘッダ ページフッタの 内 容 を 出 力 します 3. 本 文 と 脚 注 の 間 の 境 界 領 域 をリーダで 作 成 します 4. 本 文 領 域 のフローオブジェクトを 生 成 します 5. xsl:apply-templates で 下 位 の 要 素 を 処 理 します ページヘッダやページフッタは fo:static-content の 中 に 記 述 します 本 文 ページでは 左 右 でページ 書 式 の 切 り 替 えを 行 うため 左 右 のページヘッダと 左 右 のページフッタの 4 つの fo:static-content を 作 成 し ます また 本 文 と 脚 注 の 境 界 も fo:static-content を 使 って 作 成 します 4 つの fo:static-content をページ 内 の 領 域 への 対 応 付 けは 次 のようになります 本 文 のページ 書 式 - 左 右 ページ 書 式 の 切 り 替 え で 用 意 した 本 文 の fo:simple-page-master は 右 ページ 用 と 左 ページ 用 が 定 義 さ れていて 各 ページのヘッダ 領 域 とフッタ 領 域 にはそれぞれ 名 前 が 付 けられています 一 方 fo:staticcontent には flow-name をつけ それが region-name と 一 致 する 領 域 に fo:static-content の 内 容 が 流 し 込 ま れます ページ 領 域 の 名 前 static-content の 名 前 右 ページヘッダ fo:region-before region-name="right-header" fo:static-content flow-name="right-header" 右 ページフッタ fo:region-after region-name="right-footer" 左 ページヘッダ fo:region-before region-name="left-header" 左 ページフッタ fo:region-after region-name="left-footer" fo:static-content flow-name="right-footer" fo:static-content flow-name="left-header" fo:static-content flow-name="left-footer" 脚 注 と 本 文 との 境 界 線 に xsl-footnote-separator という flow-name を 持 つ fo:static-content で 作 成 しま す 線 の 描 画 には fo:leader オブジェクトを 使 用 します 実 線 で 本 文 領 域 の 1/3 の 幅 を 確 保 します 本 文 の 内 容 は fo:flow の 子 供 として 出 力 します ページ 番 号 の 設 定 fo:page-sequence に initial-page-number プロパティを 使 ってページ 番 号 の 初 期 値 を 設 定 することが 可 能 です SD2FO-DOC.XSL では 本 文 の fo:page-sequence に initial-page-number="1"を 設 定 して 本 文 から1 ページが 開 始 するようにしています 本 文 の 処 理 25

29 11 ページフッタ/ページヘッダ 内 容 の 作 成 ページフッタにはページ 番 号 とページ 中 の 節 タイトルを 配 置 する ページヘッダには 文 書 タイトルを 出 力 する さらに 入 力 文 書 中 の part( 部 ), chapter( 章 ), section ( 節 )のいずれかのうち 文 書 内 の 最 上 位 レベル 要 素 の 出 現 に 応 じて 番 号 つきの 爪 を 配 置 する ページフッタの 出 力 fo:static-content にページフッタの 内 容 を 出 力 します 左 右 ページで 配 置 が 異 なりますが 内 容 は 同 じで す ページ 番 号 本 文 section の 見 出 し( 柱 ) ページ 番 号 の 出 力 ページ 番 号 を 表 すには fo:page-number オブジェクトを 使 用 します fo:page-number オブジェクトは 特 殊 なインラインエリアを 生 成 し 組 版 時 にフォーマッタがページ 番 号 に 置 換 します ページ 番 号 は 小 口 側 に 配 置 するため fo:block のプロパティに text-align="outside"を 設 定 します <!-- フッタ 領 域 にページ 番 号 を 配 置 する --> <fo:block font-size="9pt" text-align="outside"> <fo:inline font-size="17pt"> <fo:page-number /> <xsl:text> </xsl:text> </fo:inline> (ランニングフッタの 出 力 ( 後 述 )) ランニングフッタの 作 成 文 書 中 の section のタイトルをページフッタに 出 力 します section のタイトルは 節 ごとに 変 わってい くのでランニングフッタとなります このため fo:marker と fo:retrieve-marker を 使 います 本 文 中 のタイ トル 要 素 に 対 して fo:marker を 作 成 し ページフッタの fo:static-content には fo:retrieve-marker を 置 きま す 組 版 時 にフォーマッタが fo:retrieve-marker の 部 分 を 該 当 する fo:marker の 内 容 に 置 換 します fo:retrieve-marker retrieve-class-name="a" fo:marker marker-class-name="a" Sample1 fo:retrieve-marker retrieve-class-name="a" fo:marker marker-class-name="a" Sample2 26 ページフッタ/ページヘッダ 内 容 の 作 成

30 11 fo:retrieve-marker の retrieve-class-name プロパティで 置 換 したい fo:marker のクラス 名 を 指 定 します retrieve-boundary は 適 用 範 囲 を 指 定 します retrieve-position はそのページの 中 のどの fo:marker を 選 択 す るか( 最 初 に 現 れるものか 最 後 のものか 等 )を 指 定 します <!-- フッタに section 名 を 出 力 するために retrieve-marker を 置 く --> <fo:retrieve-marker retrieve-boundary="page-sequence" retrieve-position="first-starting-within-page" retrieve-class-name="section-title" /> 本 文 中 のタイトル 要 素 に 対 して fo:marker を 生 成 します "part chapter section subsection subsubsection appendix "を 処 理 するテンプレートの 中 で 以 下 のように 記 述 します <xsl:if test="local-name() = 'section'"> <xsl:element name="fo:marker"> <xsl:attribute name="marker-class-name">section-title <xsl:value-of select="title" /> </xsl:element> </xsl:if> これによって 文 書 中 に section が 出 現 するたび 以 下 のように fo:marker が 生 成 されます <fo:flow flow-name="xsl-region-body"> <fo:marker marker-class-name="section-title">はじめに</fo:marker> <!-- セクションの 内 容 --> <fo:marker marker-class-name="section-title"> XSL-FO 変 換 のステップ </fo:marker> <!-- セクションの 内 容 --> <fo:marker marker-class-name="section-title"> SimpleDoc の 構 造 </fo:marker> <!-- セクションの 内 容 --> ページヘッダの 出 力 ページヘッダの 内 容 は 次 の 2 つです 文 書 名 爪 文 書 名 の 出 力 文 書 名 をページヘッダに 出 力 する 処 理 は 以 下 のように 文 書 名 要 素 を fo:block に 出 力 するだけです <fo:block font-size="7pt" text-align="center" border-after-width="thin" border-after-style="solid"> <xsl:value-of select="/doc/head/title" /> ページフッタ/ページヘッダ 内 容 の 作 成 27

31 11 爪 の 出 力 ページヘッダに 出 力 する 爪 もページフッタの 節 タイトルと 同 様 に fo:marker と fo:retrieve-marker を 使 うことで 可 能 です SD2FO-DOC.XSL スタイルシートでは 15 種 類 のクラス 名 (thumb1, thumb2,, thumb14, thumb0)を 用 意 し 文 書 内 に 出 現 する 対 象 (part/chapter/section のうち 最 上 位 レベル)へ 順 に 設 定 していきます ページヘッダである fo:static-content には それぞれの fo:retrieve-marker を 表 セルを 使 って 設 定 します ページ 内 に 該 当 する fo:marker が 存 在 しなければ fo:retrieve-marker は 置 換 されません これ により 爪 が 節 の 切 り 替 えに 応 じて 移 動 しているように 見 せることができます スタイルシートのページヘッダの 表 組 は 以 下 のように 生 成 されています 爪 を 出 力 するための 表 の 生 成 <!-- 絶 対 位 置 指 定 のテーブル --> <fo:block-container absolute-position="fixed" top="0mm" left="20mm" height="15mm"> <fo:table> <fo:table-column column-width="12mm" number-columns-repeated="15" /> <fo:table-body> <fo:table-row> <fo:table-cell> <fo:block font-size="24pt" color="white" background-color="black" text-align-last="center" display-align="center"> <!-- thumb1 のクラスを 持 つ marker があれば 置 換 される --> <fo:retrieve-marker xsl:use-attribute-sets="thumb-class" retrieve-class-name="thumb1" /> </fo:table-cell> <!-- 同 じように 残 り14 個 のセルを 作 る( 最 後 は retrieve-class-name="thumb0") --> </fo:table-row> </fo:table-body> </fo:table> </fo:block-container> 本 文 中 の"part chapter section "の 処 理 で fo:marker の 生 成 は 以 下 のようになっています 変 数 thumb ($thumb)には 爪 を 切 り 替 える 要 素 名 が 設 定 されています 複 数 の 要 素 を 共 通 で 処 理 するテンプレートな ので カレントノードを 判 定 しなければなりません カレントノードの 要 素 名 は local-name( )を 使 って 調 べてられています 爪 のための fo:marker の 生 成 <xsl:template match="part chapter section subsection subsubsection appendix"> <fo:block> <xsl:choose> <xsl:when test="(local-name() = 'part') and ($thumb = 'part')"> <xsl:element name="fo:marker"> <xsl:variable name="num"> <xsl:number format="1" /> </xsl:variable> <xsl:attribute name="marker-class-name"> thumb<xsl:value-of select="$num mod 15" /> <xsl:number format="1" /> </xsl:element> </xsl:when> <xsl:when test="(local-name() = 'chapter') and ($thumb = 'chapter')"> <xsl:element name="fo:marker"> <xsl:variable name="num"> 28 ページフッタ/ページヘッダ 内 容 の 作 成

32 11 <xsl:number format="1" /> </xsl:variable> <xsl:attribute name="marker-class-name"> thumb<xsl:value-of select="$num mod 15" /> <xsl:number format="1" /> </xsl:element> </xsl:when> <xsl:when test="(local-name() = 'section') and ($thumb = 'section')"> <xsl:element name="fo:marker"> <xsl:variable name="num"> <xsl:number format="1" /> </xsl:variable> <xsl:attribute name="marker-class-name"> thumb<xsl:value-of select="$num mod 15" /> <xsl:number format="1" /> </xsl:element> </xsl:when> </xsl:choose> <!-- 以 降 省 略 --> 設 定 するクラス 名 (marker-class-name)は 'thumb'までは 固 定 文 字 列 で その 後 は 順 に 数 字 をつけます 1から 始 まって 15 個 単 位 で 繰 り 返 すために 最 初 に xsl:number を 使 ってその 要 素 が 文 書 内 の 同 じ 要 素 と 比 較 して 何 番 目 であるかを 得 ます 次 にその 数 値 を 15 で 割 った 余 りをクラス 名 として 用 いることに よって 実 現 しています ページフッタ/ページヘッダ 内 容 の 作 成 29

33 12 見 出 しの 作 成 入 力 XML 文 書 中 の part( 部 ), chapter( 章 ), section( 節 ), subsection( 副 節 ), subsubsection( 副 々 節 )の title から 見 出 しを 作 成 する 見 出 しの 書 式 は part ~ subsection の 要 素 ごとに 割 り 当 てるのではなく 文 書 中 のネストレベルに 応 じて 割 り 当 てる 最 上 位 のネストレベルの 見 出 しは 直 前 で 改 ページする 見 出 しに 画 像 を 配 置 できるようにする 見 出 しの 書 式 条 件 一 般 的 には 部 ~ 副 節 の 見 出 しに 設 定 する 書 式 は その 要 素 にあわせて 作 成 しますが ここではネスト レベルに 応 じて 設 定 するものとします 設 定 する 条 件 は 次 のとおりです ネストレベル attribute-set 書 式 の 条 件 1 h1 2 h2 3 h3 4 h4 5 h5 フォント:サイズ 24pt, MS ゴシック, ボールド 後 スペース:14pt, 次 のブロックとのページ 内 の 継 続 :always ボトムボーダー: 実 線 2pt ブレーク 条 件 : 直 前 で 改 ページ フォント:サイズ 16pt, MS ゴシック, ボールド 前 スペース:19pt 後 スペース:5pt 次 のブロックとの 継 続 :always フォント:サイズ 13pt, MS ゴシック, ボールド 前 スペース:14pt 後 スペース:5pt 次 のブロックとの 継 続 :always フォント:サイズ 12pt, MS ゴシック, ボールド 前 スペース:5pt 後 スペース:5pt 次 のブロックとの 継 続 :always フォント:サイズ 10pt, MS ゴシック, ボールド 前 スペース:3pt 後 スペース:3pt 次 のブロックとの 継 続 :always この 条 件 を 記 述 したスタイルシートの 書 式 定 義 部 は 以 下 のとおりです 見 出 しの 書 式 定 義 <!-- titles --> <xsl:attribute-set name="h1"> <xsl:attribute name="font-size">24pt <xsl:attribute name="font-family">"ms ゴシック" <xsl:attribute name="font-weight">bold <xsl:attribute name="space-after">14pt <xsl:attribute name="break-before">page <xsl:attribute name="keep-with-next.within-page">always <xsl:attribute name="border-after-style">solid <xsl:attribute name="border-after-width">2pt </xsl:attribute-set> <xsl:attribute-set name="h2"> <xsl:attribute name="font-size">16pt <xsl:attribute name="font-family">"ms ゴシック" <xsl:attribute name="font-weight">bold <xsl:attribute name="space-before">19pt <xsl:attribute name="space-after">5pt <xsl:attribute name="keep-with-next.within-page">always </xsl:attribute-set> <xsl:attribute-set name="h3"> <xsl:attribute name="font-size">13pt 30 見 出 しの 作 成

34 12 <xsl:attribute name="font-family">"ms ゴシック" <xsl:attribute name="font-weight">bold <xsl:attribute name="space-before">14pt <xsl:attribute name="space-after">5pt <xsl:attribute name="keep-with-next.within-page">always </xsl:attribute-set> <xsl:attribute-set name="h4"> <xsl:attribute name="font-size">12pt <xsl:attribute name="font-family">"ms ゴシック" <xsl:attribute name="font-weight">bold <xsl:attribute name="space-before">5pt <xsl:attribute name="space-after">5pt <xsl:attribute name="keep-with-next.within-page">always </xsl:attribute-set> <xsl:attribute-set name="h5"> <xsl:attribute name="font-size">10pt <xsl:attribute name="font-family">"ms ゴシック" <xsl:attribute name="font-weight">bold <xsl:attribute name="space-before">3pt <xsl:attribute name="space-after">3pt <xsl:attribute name="keep-with-next.within-page">always </xsl:attribute-set> 見 出 しは 次 のブロックとの 間 で 自 然 改 ページが 発 生 しないように keep-with-next.withinpage="always"を 指 定 します h1 には keep-with-next.within-page="always"は 指 定 してありませんが breakbefore="page"が 指 定 されているので 直 前 に 改 ページが 挿 入 され ブロックは 必 ずページの 先 頭 に 配 置 さ れます したがって 次 のブロックと 連 続 します 見 出 しを 処 理 するテンプレート 見 出 しを 処 理 するテンプレートを 次 に 示 します ネストレベルで 書 式 を 選 択 するため ひとつのテン プレートで 集 中 的 に 処 理 できます <xsl:template match="part chapter section subsection subsubsection"> <xsl:call-template name="title.out" /> <xsl:apply-templates /> 見 出 しを 処 理 するテンプレート <xsl:template match="part/title chapter/title section/title subsection/title subsubsection/title"> <xsl:template name="title.out"> <xsl:variable name="level" select="count(ancestor-or-self::part ancestor-or-self::chapter ancestor-or-self::section ancestor-or-self::subsection ancestor-or-self::subsubsection )" /> <xsl:choose> <xsl:when test="$level=1"> <fo:block xsl:use-attribute-sets="h1" id="{generate-id()}"> <xsl:call-template name="title.out.sub" /> 見 出 しの 作 成 31

35 12 <xsl:value-of select="title" /> </xsl:when> <xsl:when test="$level=2"> <fo:block xsl:use-attribute-sets="h2" id="{generate-id()}"> <xsl:call-template name="title.out.sub" /> <xsl:value-of select="title" /> </xsl:when> <xsl:when test="$level=3"> <fo:block xsl:use-attribute-sets="h3" id="{generate-id()}"> <xsl:call-template name="title.out.sub" /> <xsl:value-of select="title" /> </xsl:when> <xsl:when test="$level=4"> <fo:block xsl:use-attribute-sets="h4" id="{generate-id()}"> <xsl:call-template name="title.out.sub" /> <xsl:value-of select="title" /> </xsl:when> <xsl:when test="$level=5"> <fo:block xsl:use-attribute-sets="h5" id="{generate-id()}"> <xsl:call-template name="title.out.sub" /> <xsl:value-of select="title" /> </xsl:when> <xsl:otherwise> <fo:block xsl:use-attribute-sets="h5" id="{generate-id()}"> <xsl:call-template name="title.out.sub" /> <xsl:value-of select="title" /> </xsl:otherwise> </xsl:choose> <xsl:template name="title.out.sub"> <xsl:if <fo:inline space-end="5pt"> <fo:external-graphic <xsl:if <xsl:attribute name="content-width"> <xsl:value-of /> <xsl:attribute name="content-height"> <xsl:value-of /> </xsl:if> </fo:external-graphic> </fo:inline> </xsl:if> 見 出 しの 処 理 は4つのテンプレートから 構 成 されます 実 際 の 見 出 し 行 の 生 成 は title.out テンプレー トを 呼 び 出 して 行 います title.out では 1. level というローカル 変 数 に 処 理 中 の 要 素 のネストレベルを 計 算 して 格 納 します 2. この 値 に 応 じて h1 ~ h5 の 見 出 し 書 式 を 選 択 して 見 出 しの fo:block に 適 用 します 3. 同 様 に id プロパティを generate-id( ) 関 数 で 生 成 して 見 出 しの fo:block に 適 用 します (5) 4. 画 像 を 処 理 する title.out.sub テンプレートを 呼 び 出 す (5) 目 次 行 の fo:page-number-citation から 参 照 します 32 見 出 しの 作 成

36 12 5. title 要 素 で 指 定 された 文 字 列 を 出 力 する という 順 で 処 理 されます 2 番 目 の part/title ~ subsubsection/title を 処 理 するテンプレートは 空 の 処 理 ( 何 も 出 力 されない)にな っていますが これはタイトルを 二 重 に 出 力 してしまわないための 常 套 手 段 です タイトル 行 は 先 に 見 たように title.out の 処 理 で 出 力 されますが part ~ subsection 要 素 の xsl:apply-templates を 処 理 している ときに title 要 素 が 現 れますから 再 びタイトル 文 字 列 が 出 力 されてしまいます しかし part/title ~ subsubsection/title にマッチするテンプレートを 用 意 して 中 身 を 空 にしておけば 余 計 なタイトル 文 字 列 の 出 力 が 抑 制 できるというわけです これは title.out テンプレートで 先 行 して 処 理 してしまっているの で 1 番 目 のテンプレートで xsl:apply-templates で 再 び title が 処 理 対 象 になったときに title のテキスト が 出 力 に 現 れないようにするためです 生 成 された 見 出 しの 例 今 までの 手 続 きを 経 て 作 成 された 見 出 しの FO の 例 を 示 します id プロパティに generate-id( ) 関 数 の 結 果 が 格 納 されていることにご 注 目 ください 生 成 された 見 出 し <fo:block font-size="24pt" font-family=""ms ゴシック"" font-weight="bold" space-after="14pt" break-before="page" keep-with-next.within-page="always" border-after-style="solid" border-after-width="2pt" id="ida4aiob"> <fo:inline space-end="5pt"> <fo:external-graphic src="img/ico3.png" /> </fo:inline> はじめに 見 出 しの 作 成 33

37 13 インライン 要 素 の 処 理 b( 太 字 ) i( 斜 体 ) em( 強 調 ) code(インラインのプログラムコード) 要 素 は 文 字 のプロパティを 設 定 した fo:inline オブジェクトに 変 換 する a(アンカー)は テキストを 出 力 するのみとし リンク 先 (href プロパティ)の 内 容 を 続 けて 出 力 す る note( 注 釈 )は 脚 注 に 変 換 する 脚 注 参 照 文 字 列 は (n) のフォーマットとし n には 文 書 全 体 で 一 意 な 通 し 番 号 を 割 り 当 てる br( 改 行 )は 見 かけ 上 行 を 切 り 替 える span( 汎 用 インライン 要 素 )は fo:inline を 生 成 するのみとする b, i, em, code 要 素 を 処 理 するテンプレート b( 太 字 ), i( 斜 体 ), em( 強 調 ), code(インラインのプログラムコード) 要 素 の 変 換 はきわめて 簡 単 で す fo:inline を 生 成 して そこに 該 当 するプロパティを 設 定 するだけです 太 字 は font-weight="bold" 斜 体 は font-style="italic"となります em も 太 字 を 適 用 します 記 述 方 法 が b と 違 いますが 同 じ 結 果 です code は 等 幅 フォントを 表 す monospace を font-family プロパティに 設 定 します( 実 際 には Courier などのフォ ントで 組 まれます) <xsl:template match="b"> <fo:inline font-weight="bold"> <xsl:apply-templates /> </fo:inline> <xsl:template match="i"> <fo:inline font-style="italic"> <xsl:apply-templates /> </fo:inline> b, i, em, code 要 素 を 処 理 するテンプレート <xsl:template match="em"> <fo:inline xsl:use-attribute-sets="em"> <xsl:apply-templates /> </fo:inline> <xsl:template match="code"> <fo:inline font-family="monospace"> <xsl:apply-templates /> </fo:inline> fo:inline を 適 用 するので 要 素 テキストの 終 端 は 改 行 があるとはみなされません 例 を 次 に 示 します インライン 要 素 i(italic)は 斜 体 になります インライン 要 素 b(bold)は ボールド 書 体 になります インライン 要 素 em(emphasis)もやはり ボールド 書 体 になります 34 インライン 要 素 の 処 理

38 13 インライン 要 素 code(インラインプログラムコード)は 等 幅 フォント(monospace font) にな ります a 要 素 a(アンカー)は href プロパティでリンク 先 URI を 持 っています 組 版 でリンク 先 をどう 扱 うかが 問 題 になります ここでは リンク 先 を a 要 素 で 囲 まれたテキストの 後 に 括 弧 で 囲 んでリンク 先 を 出 力 する ことにします ただし 両 者 が 同 じ 内 容 の 場 合 は 出 力 しません <xsl:template match="a"> <xsl:variable name="anchor-texts"> <xsl:value-of select="." /> </xsl:variable> <xsl:apply-templates /> <xsl:if test="@href!=$anchor-texts"> <fo:inline> <xsl:text>(</xsl:text> <xsl:value-of select="@href" /> <xsl:text>)</xsl:text> </fo:inline> </xsl:if> このスタイルシートを 使 った 例 を 示 します a 要 素 を 処 理 するテンプレート この 例 は<a href=" のサイト</a>で 公 開 されています は この 例 は W3C のサイト( で 公 開 されています と 表 示 されます この 例 は<a href=" 公 開 されています は この 例 は で 公 開 されています と 表 示 されます この 例 は<a href=" 公 開 されています は この 例 は / で 公 開 されています と 表 示 されます ここではアンカーを 単 純 なテキストに 変 換 しましたが SD2FO-DOC.XSL では XSL の fo:basic-link に 変 換 し XSL Formatter で 組 版 することで PDF のリンクを 作 成 することができます 詳 細 は PDF 生 成 に 関 する 機 能 の リンクの 設 定 を 参 照 してください note 要 素 note( 注 釈 )は XSL-FO の 脚 注 用 オブジェクト fo:footnote に 変 換 します note 要 素 を 処 理 するテンプレート <xsl:template match="note"> <fo:footnote> <fo:inline baseline-shift="super" font-size="75%"> <xsl:number level="any" count="//note" format="(1)" /> </fo:inline> <fo:footnote-body> <fo:block xsl:use-attribute-sets="note"> <fo:inline baseline-shift="super" font-size="75%"> <xsl:number level="any" count="//note" format="(1)" /> </fo:inline> <xsl:apply-templates /> インライン 要 素 の 処 理 35

39 13 </fo:footnote-body> </fo:footnote> XSL-FO で 脚 注 とその 参 照 ラベルを 作 成 するのが fo:footnote オブジェクトです 構 造 は (inline, fo:footnote-body)となっています 最 初 の 子 の inline が 本 文 中 に 配 置 される 脚 注 参 照 文 字 となります 次 の fo:footnote-body が 脚 注 の 本 体 で これは fo:block などのブロック 要 素 から 構 成 されます 典 型 的 な fo:footnote オブジェクトの 例 を 以 下 に 示 します S am ple Do c の n o t e ( 注 釈 ) 要 素 note X S L- FOの 脚 注 fo : fo o t n o t e ( 典 型 的 な 例 ) fo:footnote 'これは 脚 注 の 本 体 です.' fo:inline fo:footnote-body " (n )" fo:block 脚 注 参 照 文 字 fo:inline 'これは 脚 注 の 本 体 です.' " (n )" note 要 素 と fo:footnote の 典 型 的 な 例 一 般 的 には 本 文 側 に 配 置 する 脚 注 参 照 文 字 と 同 じラベルを 脚 注 の 本 体 側 にも 置 きます また 脚 注 参 照 文 字 は 文 書 中 で 全 体 にわたる 通 し 番 号 をふります これらはスタイルシート 側 で 行 う 必 要 があります FO には 実 現 する 機 構 はありません スタイルシートの 処 理 は 次 のようになります 1. fo:footnote を 出 力 します 2. fo:inline で 脚 注 参 照 文 字 を xsl:number を 使 用 して 作 成 します 3. note 要 素 の 子 は 同 じ 脚 注 参 照 文 字 を 加 えて fo:footnote 要 素 で 囲 んだ block 要 素 に 格 納 します xsl:number は XSLT の 命 令 です <xsl:number level="any" count="//note" format="(1)" />で ル ート 要 素 の 下 のすべての note 要 素 を 出 現 順 に 検 索 し 現 在 の note 要 素 と 一 致 するものを 探 します 一 致 したノードの 出 現 番 号 を"(1)"の 書 式 にしたがってフォーマットします また baseline-shift="super"は 上 付 き 文 字 用 に フォントサイズに 合 わせてベースラインをシフトさせ る 指 定 です 以 下 に 脚 注 の 例 を 示 します 脚 注 の 例 です ここに 脚 注 番 号 が 置 かれます<note> 脚 注 の 本 文 です 本 文 領 域 下 端 に 本 文 とは 離 れ て 配 置 されます </note> は 脚 注 の 例 です ここに 脚 注 番 号 が 置 かれます (6) と 表 示 されます (6) 脚 注 の 本 文 です 本 文 領 域 下 端 に 本 文 とは 離 れて 配 置 されます 36 インライン 要 素 の 処 理

40 13 br 要 素 br 要 素 は 空 要 素 ですから 空 のブロック 要 素 (fo:block)に 置 き 換 えてやります こうすることで 印 刷 結 果 では 改 行 が 発 生 します <xsl:template match="br"> <fo:block> 次 に 例 を 示 します br 要 素 を 処 理 するテンプレート <p> 段 落 中 に br により<b><i> 強 制 的 に<br /> 改 行 </i></b>を 入 れてみます 段 落 が 終 了 するわけで はないので 改 行 前 に 設 定 されたプロパティは 保 持 されます </p> は 段 落 中 に br により 強 制 的 に 改 行 を 入 れてみます 段 落 が 終 了 するわけではないので 改 行 前 に 設 定 されたプロパティは 保 持 され ます と 表 示 されます span 要 素 span 要 素 ( 汎 用 インライン 要 素 )は 現 在 のところ fo:inline に 変 換 するのみです class プロパティに 意 味 をもたせれば 拡 張 できます <xsl:template match="span"> <fo:inline> <xsl:apply-templates /> </fo:inline> span 要 素 を 処 理 するテンプレート インライン 要 素 の 処 理 37

41 14 ブロック 要 素 の 処 理 ここでは 表 (table) リスト(ol, ul, dl) 以 外 のブロック 要 素 を 扱 います p( 段 落 )は ブロック 要 素 に 変 換 する 段 落 の 一 行 目 は 一 文 字 分 だけインデントする 体 裁 は 両 端 揃 え ただし 最 終 行 は 左 揃 え 前 後 に 文 字 サイズ 0.6 のスペースを 確 保 する 段 落 はページにま たがらないようにする figure( 図 )は 出 現 位 置 で 改 行 してセンタリングして 画 像 を 配 置 する 画 像 のサイズ 指 定 があった 場 合 はそれを 適 用 する キャプションがあった 場 合 は 画 像 の 下 に 配 置 する program(プログラムコード)は ブロック 要 素 に 変 換 する 等 幅 フォントを 使 用 し 改 行 やスペー スなどをそのまま 無 視 しないで 扱 う 背 景 は 灰 色 キャプションをプログラムコードの 前 に 出 力 する div( 汎 用 ブロック 要 素 )は ブロック 要 素 の fo:block に 変 換 する p 要 素 p 要 素 ( 段 落 )は 使 用 頻 度 が 高 い 要 素 です p 要 素 を 処 理 するテンプレートを 次 に 示 します p 要 素 を 処 理 するテンプレート <xsl:attribute-set name="p"> <xsl:attribute name="text-indent">1em <xsl:attribute name="space-before">0.6em <xsl:attribute name="space-after">0.6em <xsl:attribute name="text-align">justify <xsl:attribute name="keep-together.within-page">always </xsl:attribute-set> <xsl:template match="p"> <fo:block xsl:use-attribute-sets="p"> <xsl:apply-templates /> テンプレートは 簡 単 で fo:block に 変 換 するのみです 先 頭 行 のインデントは text-indent で 行 揃 えは text-align で 指 定 します また 段 落 がページにまたがらないようにするのは keep-together で 指 定 していま す 次 に 組 版 した 例 を 示 します 1 行 を 21 文 字 とした 場 合 これは 段 落 のサンプルです 段 落 は fo:block に 変 換 されます text-indent="1em"を 指 定 する ので 先 頭 行 は 一 文 字 分 だけインデントされま す 行 揃 えは 両 端 揃 え としています (textalign="justify")ただし 段 落 の 最 終 行 は 自 動 的 に 左 揃 えとなります これは 最 終 行 に 適 用 される text-indent-last の 初 期 値 が textalign="justify"の 場 合 は 自 動 的 に start になっ てくれるためです 1 行 を 25 文 字 とした 場 合 38 ブロック 要 素 の 処 理

42 14 これは 段 落 のサンプルです 段 落 は fo:block に 変 換 さ れます text-indent="1em"を 指 定 するので 先 頭 行 は 一 文 字 分 だけインデントされます 行 揃 えは 両 端 揃 え とし ています (text-align="justify")ただし 段 落 の 最 終 行 は 自 動 的 に 左 揃 えとなります これは 最 終 行 に 適 用 される text-indent-last の 初 期 値 が text-align="justify"の 場 合 は 自 動 的 に start になってくれるためです figure 要 素 figure 要 素 ( 図 )は fo:external-graphic に 変 換 します figure 要 素 を 処 理 するテンプレートを 次 に 示 しま す figure 要 素 を 処 理 するテンプレート <xsl:attribute-set name="figure.title"> <xsl:attribute name="font-family">sans-serif <xsl:attribute name="text-align">center <xsl:attribute name="space-before">3pt <xsl:attribute name="space-after">10pt <xsl:attribute name="font-weight">bold <xsl:attribute name="keep-with-previous.within-page">always </xsl:attribute-set> <xsl:template match="figure"> <fo:block text-align="center"> <fo:external-graphic src="{@src}"> <xsl:if test="@width <xsl:attribute name="content-width"> <xsl:value-of select="@width" /> <xsl:attribute name="content-height"> <xsl:value-of select="@height" /> </xsl:if> </fo:external-graphic> <fo:block xsl:use-attribute-sets="figure.title"> <xsl:value-of select="title" /> テンプレートでは fo:external-graphic を 生 成 し 画 像 のパスを src プロパティから 設 定 します width, height プロパティで 画 像 のサイズ 指 定 があった 場 合 は content-width, content-height に 引 き 写 します 弊 社 の XSL-Formatter では BMP, EMF, WMF, JPEG, TIFF, GIF, PNG, EPS, SVG などの 画 像 形 式 を 扱 うことが できます program 要 素 program 要 素 (プログラムコード)は fo:block に 変 換 し 等 幅 フォントで 表 示 させます テンプレートを 次 に 示 します program 要 素 を 処 理 するテンプレート <xsl:attribute-set name="program"> <xsl:attribute name="white-space">pre <xsl:attribute name="wrap-option">wrap <xsl:attribute name="background-color">gainsboro <xsl:attribute name="font-family">monospace ブロック 要 素 の 処 理 39

43 14 <xsl:attribute name="font-size">9pt <xsl:attribute name="padding">0.5em </xsl:attribute-set> <xsl:attribute-set name="program.title"> <xsl:attribute name="font-family">sans-serif <xsl:attribute name="text-align">center <xsl:attribute name="space-before">3pt <xsl:attribute name="font-weight">bold <xsl:attribute name="keep-with-next.within-page">always <xsl:attribute name="space-before">0.5em <xsl:attribute name="space-after">0.5em </xsl:attribute-set> <xsl:template match="program"> <xsl:apply-templates select="title" /> <fo:block xsl:use-attribute-sets="program"> <xsl:apply-templates select="text()" /> テンプレートで fo:block を 生 成 している 点 は p 要 素 と 変 わりません 違 いは 下 位 の 処 理 対 象 を text( ) としている 点 です これにより program 要 素 のテキストノードのみが 処 理 対 象 となります テキストノ ードを 処 理 するテンプレート(match="program/text()")は 準 備 されていません このため XSLT のビルト インテンプレートで 処 理 されます ビルトインテンプレートは テキストを 結 果 に 複 写 します fo:block に 適 用 するプロパティでは 次 のものが 重 要 です font-family で 等 幅 の monospace を 指 定 している white-space を pre としています これは 次 の4つの 意 味 を 持 ちます 1. linefeed-treatment="preserve": 復 帰 文 字 (#xa)をそのままとする 空 白 へ 置 換 したり 無 視 したり しない 2. white-space-treatment="preserve":xml 仕 様 で white space に 分 類 される 文 字 で#xA を 除 くもの をそのままとして 扱 う (7) 3. white-space-collapse="false":linefeed-treatment, space-treatment で 処 理 された 後 の 連 続 した white space をそのままとして 扱 う 無 視 しない 4. wrap-option="no-wrap": 行 が 印 字 領 域 からあふれても 自 動 的 に 折 り 返 さない wrap-option を wrap とし 行 があふれた 場 合 には 行 を 折 り 返 す (8) これらの 指 定 により program 要 素 中 のテキストは 整 形 済 みの 扱 いとしてフォーマットされます div 要 素 div 要 素 ( 汎 用 ブロック 要 素 )は プロパティ 指 定 なしで 単 純 に fo:block に 変 換 しているのみです テン プレートを 次 に 示 します <xsl:template match="div"> <fo:block> <xsl:apply-templates /> div 要 素 を 処 理 するテンプレート div 要 素 の 応 用 例 を 次 に 示 します div 要 素 中 に FO を 直 接 格 納 し 出 力 します (7) XML 仕 様 の white space は 空 白 (#x20), タブ(#x9), 改 行 文 字 (#xd), 復 帰 文 字 (#xa)です このうち #xa は linefeed-treatment で 扱 いが 決 まります (8) wrap-option="wrap"は 既 定 値 ですが white-space="pre"の 指 定 により wrap-option="no-wrap"になってしまいます これをオーバライドしています 40 ブロック 要 素 の 処 理

44 14 div 要 素 の 応 用 例 <xsl:attribute-set name="div.fo"> <xsl:attribute name="border">solid <xsl:attribute name="border-width">thin <xsl:attribute name="padding">1em </xsl:attribute-set> <xsl:template = 'fo']"> <fo:block xsl:use-attribute-sets="div.fo"> <xsl:copy-of select="node()" /> テンプレートでは <xsl:copy-of select="node()" />により div 要 素 の 下 の FO の 要 素 をすべてまるごと 出 力 側 にコピーします この 機 能 を 使 用 するために doc 要 素 に FO ネームスペースを 指 定 します <doc xmlns:fo=" 使 用 例 を 以 下 に 示 します <div class="fo"><fo:block>これは 文 書 中 に<fo:inline font-size="1.5em" text-decoration="underline" fontstyle="italic" font-weight="bold">fo(フォーマッティングオブジェクト)</fo:inline>を 直 接 埋 め 込 む <fo:inline font-weight="bold"> 例 </fo:inline>です <fo:inline font-size="1em">ス</fo:inline><fo:inline fontsize="1.2em">タ</fo:inline><fo:inline font-size="1.4em">イ</fo:inline><fo:inline font-size="1.6em">ル</ fo:inline><fo:inline font-size="1.8em">シ</fo:inline><fo:inline font-size="2.0em">ー</fo:inline><fo:inline font-size="2.2em">ト</fo:inline>に 制 約 されずに<fo:inline background-color="#dddddd"> 勝 手 なことが できます </fo:inline>ただし FO を 直 接 記 述 するのはとても<fo:inline font-size="3em" font-weight="bold" font-family="sans-serif"> 大 変 </fo:inline>です </div> これは 次 のように 表 示 されます これは 文 書 中 に FO(フォーマッティングオブジェクト)を 直 接 埋 め 込 む 例 です ス タ イ ル シ ー トに 制 約 されずに 勝 手 なことができます ただし FO を 直 接 記 述 するのは とても 大 変 です ブロック 要 素 の 処 理 41

45 15 表 要 素 の 処 理 入 力 XML 文 書 中 の table 要 素 以 下 は 表 に 整 形 する 表 の 見 出 し 行 は 背 景 色 を 灰 色 にして 表 の 本 体 データ 部 分 と 区 別 する また 表 の 罫 線 は 実 線 で 幅 は 1pt とする 表 のセルは 左 に 0.3 フォントサイズ 右 に 0.2 フォントサイズのパディングを 確 保 してセルデ ータを 格 納 する その 他 表 の 書 式 に 関 するプロパティを 処 理 し 組 版 結 果 に 反 映 させる 1. table 要 素 の layout プロパティ width プロパティ rowheight プロパティ 2. col 要 素 の number プロパティ width プロパティ 3. tr 要 素 の height プロパティ 4. th, td 要 素 の align プロパティ valign プロパティ colspan プロパティ rowspan プロパティ 表 構 造 の 比 較 table 要 素 以 下 を 表 として 整 形 するためには XSL-FO の fo:table-and-caption に 変 換 してやる 必 要 があ ります ここで SimpleDoc と XSL-FO の 表 の 構 造 を 比 較 してみましょう まず SimpleDoc の 表 は 次 のと おりです 要 素 意 味 定 義 table 表 全 体 (title?, col*, thead?, tfoot?, tbody) layout プロパティで 表 を 自 動 レイアウトする(auto)か レイアウト 指 定 とするか(fixed)を 指 定 します width プロパティで 表 全 体 の 幅 を 指 定 します rowheight プロパティで 表 全 体 にわたる 行 の 高 さを 指 定 し ます col 列 プロパティ EMPTY number プロパティで 列 番 号 width プロパティで 列 幅 を 指 定 します thead 表 ヘッダ (tr*) tfoot 表 フッタ (tr*) tbody 表 の 本 体 (ヘッダ フッタ を 除 く) (tr*) tr 表 の 行 (th td)* height プロパティで 行 の 高 さを 指 定 できます th ヘッダセル (inline 要 素 並 び)* colspan プロパティで 横 結 合 する 列 数, rowspan プロパティで 縦 結 合 する 行 数 を 指 定 できます align, valign プロパティで 横 縦 方 向 の 揃 えを 指 定 できます td データセル (inline 要 素 並 び)* th と 同 じ これに 対 して XSL-FO の 表 のオブジェクトは 次 のような 構 成 になっています 要 素 意 味 定 義 fo:table-and-caption 表 とその 表 題 の 全 体 (table-caption?, table) fo:table-caption 表 の 表 題 (%block;) (9) (9) %block;は XSL 仕 様 では block, block-container, table-and-caption, table, list-block を 含 むものと 解 説 されています 常 識 的 には fo:block と fo:block-container です 42 表 要 素 の 処 理

46 15 要 素 意 味 定 義 fo:table 表 自 体 ( 表 題 を 除 く) (fo:table-column*, fo:table-header?, fo:table-footer?, fo:table-body+) table-layout: 表 の 自 動 レイアウト 指 定 (auto/fixed) table-omit-header-at-break:ページ 分 割 時 のヘッダ 行 有 無 table-omit-footer-at-break:ページ 分 割 時 のフッタ 行 有 無 fo:table-column 表 の 縦 列 の 特 性 を 定 義 EMPTY column-number: 列 番 号 (10) column-width: 列 幅 number-columns-repeated: 同 じ 設 定 を 適 用 する 列 数 number-columns-spanned: 結 合 する 列 数 (11) fo:table-header 表 のヘッダ (fo:table-row+ fo:table-cell+) fo:table-footer 表 のフッタ (fo:table-row+ fo:table-cell+) fo:table-body 表 の 本 体 (ヘッダ フッタ を 除 く) (fo:table-row+ fo:table-cell+) fo:table-row 表 の 一 行 (fo:table-cell+) fo:table-cell 表 のセル (%block;)+ number-columns-spanned: 横 結 合 する 列 数 number-rows-spanned : 縦 結 合 する 行 数 table fo:table-and-caption title col thead tfoot tbody fo:table-caption fo:table tr tr tr fo:table-column fo:table-header fo:table-footer fo:table-body th, td th, td th, td fo:table-row fo:table-row fo:table-row fo:table-cell fo:table-cell fo:table-cell SampleDocのテーブル XSL-FOのテーブル SimpleDoc と XSL-FO の 表 構 造 両 者 を 見 比 べてみると ほぼ 同 じ 構 造 をしていることがわかります 表 オブジェクトへの 変 換 は 基 本 的 にはこの 構 造 の 移 し 替 え と 考 えることができます 表 を 処 理 するテンプレート 次 に 表 を 処 理 するテンプレートを 示 します 表 のプロパティ 定 義 部 分 <xsl:attribute-set name="table.data"> <xsl:attribute name="table-layout">fixed <xsl:attribute name="space-before">10pt <xsl:attribute name="space-after">10pt </xsl:attribute-set> <xsl:attribute-set name="table.data.caption"> <xsl:attribute name="font-family">sans-serif <xsl:attribute name="text-align">start (10) from-table-column( ) 関 数 のパラメータとして 使 用 します (11) from-table-column( ) 関 数 で 参 照 します 表 要 素 の 処 理 43

47 15 <xsl:attribute name="space-before">3pt <xsl:attribute name="space-after">3pt <xsl:attribute name="space-after.precedence">2 <xsl:attribute name="font-weight">bold <xsl:attribute name="keep-with-next.within-page">always </xsl:attribute-set> <xsl:attribute-set name="table.data.th"> <xsl:attribute name="background-color">#dddddd <xsl:attribute name="border-style">solid <xsl:attribute name="border-width">1pt <xsl:attribute name="padding-start">0.3em <xsl:attribute name="padding-end">0.2em </xsl:attribute-set> <xsl:attribute-set name="table.data.td"> <xsl:attribute name="border-style">solid <xsl:attribute name="border-width">1pt <xsl:attribute name="padding-start">0.3em <xsl:attribute name="padding-end">0.2em </xsl:attribute-set> 表 を 処 理 するテンプレート <xsl:template match="table"> <fo:table-and-caption> <xsl:if test="title"> <fo:table-caption xsl:use-attribute-sets="table.data.caption"> <fo:block start-indent="0em"> <xsl:apply-templates select="title" mode="make-title" /> </fo:table-caption> </xsl:if> <fo:table xsl:use-attribute-sets="table.data"> <xsl:if <xsl:attribute name="table-layout"> <xsl:value-of /> </xsl:if> <xsl:if <xsl:attribute name="inline-progression-dimension"> <xsl:value-of /> </xsl:if> <xsl:apply-templates /> </fo:table> </fo:table-and-caption> <xsl:template match="table/tltle" mode="make-title"> <xsl:apply-templates /> <xsl:template match="table/tltle"> <xsl:template match="col"> <fo:table-column /> <xsl:template match="thead"> <fo:table-header> <xsl:apply-templates /> </fo:table-header> 44 表 要 素 の 処 理

48 15 <xsl:template match="tfoot"> <fo:table-footer> <xsl:apply-templates /> </fo:table-footer> <xsl:template match="tbody"> <fo:table-body> <xsl:apply-templates /> </fo:table-body> <xsl:template match="tr"> <xsl:element name="fo:table-row"> <xsl:choose> <xsl:when <xsl:attribute name="block-progression-dimension"> <xsl:value-of /> </xsl:when> <xsl:otherwise> <xsl:if <xsl:attribute name="block-progression-dimension"> <xsl:value-of /> </xsl:if> </xsl:otherwise> </xsl:choose> <xsl:apply-templates /> </xsl:element> <xsl:template match="th"> <fo:table-cell xsl:use-attribute-sets="table.data.th"> <xsl:call-template name="cell-span" /> <xsl:if <xsl:attribute name="display-align"> <xsl:value-of /> </xsl:if> <fo:block> <xsl:if <xsl:attribute name="text-align"> <xsl:value-of /> </xsl:if> <xsl:apply-templates /> </fo:table-cell> <xsl:template match="td"> <fo:table-cell xsl:use-attribute-sets="table.data.td"> <xsl:call-template name="cell-span" /> <xsl:if <xsl:attribute name="display-align"> <xsl:value-of /> </xsl:if> <fo:block> <xsl:if 表 要 素 の 処 理 45

49 15 <xsl:attribute name="text-align"> <xsl:value-of /> </xsl:if> <xsl:apply-templates /> </fo:table-cell> <xsl:template name="cell-span"> <xsl:if <xsl:attribute name="number-columns-spanned"> <xsl:value-of /> </xsl:if> <xsl:if <xsl:attribute name="number-rows-spanned"> <xsl:value-of /> </xsl:if> スタイルシートは 長 いようですが 基 本 は SimpleDoc の 要 素 を XSL-FO の 要 素 名 にマッピングしてい るだけです ポイントを 以 下 に 示 します 1. table 要 素 に 指 定 された layout プロパティは 表 の 自 動 レイアウトを 制 御 するものとして fo:table の layout プロパティに 設 定 します (auto か fixed の 値 が 有 効 ) 2. table 要 素 に 指 定 された width プロパティは 表 全 体 の 幅 として fo:table オブジェクトの inlineprogression-dimension プロパティに 設 定 します 3. col 要 素 に 指 定 された number, width プロパティは fo:table-column オブジェクト column-number, column-width プロパティに 設 定 します これにより 列 幅 が 指 定 できるようになります 列 幅 は 固 定 値 ではなく% 値 による 指 定 も 可 能 です table 要 素 の width プロパティに 絶 対 幅 を 指 定 し 列 の 幅 は% 指 定 とするなど 柔 軟 なパラメータ 指 定 が 可 能 になります (12) 4. table 要 素 に 指 定 された rowheight プロパティは fo:table-row オブジェクト block-progressiondimension に 設 定 します スタイルシート 中 では tr 要 素 を 処 理 するテンプレートから 参 照 するた め "(ancestor::*)[2]/@rowheight"という 指 定 方 法 となります 5. tr 要 素 に 指 定 された height プロパティは fo:table-row オブジェクトの block-progression-dimension に 設 定 します これは table 要 素 に 指 定 された rowheight プロパティより 優 先 するようにしてありま す 6. th, td 要 素 に 指 定 された colspan, rowspan プロパティは 各 々 fo:table-cell オブジェクトの numbercolumns-spanned, number-rows-spanned に 設 定 します これでセル 結 合 が 表 現 できます さらに align, valign プロパティは fo:table-cell 中 に 配 置 する fo:block の text-align に fo:table-cell の display-align プ ロパティに 設 定 します これでセル 内 での 揃 えが 処 理 できるようになります (12) 更 に 一 部 の 列 は 絶 対 値 指 定 を 行 い 残 りの 列 は proportional-column-width( ) 関 数 を 指 定 して 幅 を 比 例 配 分 させる ような 方 法 もあります 46 表 要 素 の 処 理

50 15 表 の 整 形 例 以 下 に 表 の 整 形 例 を 示 します 何 も 指 定 しないと 列 幅 は 列 数 で 等 分 されます 記 号 読 み 方 意 味 縦 棒 OR 条 件 を 示 します? 疑 問 符 その 要 素 が0 回 か1 回 出 現 するこ とを 示 します, カンマ カンマで 区 切 られた 順 であること を 示 します * アスタリスク その 要 素 が0 回 以 上 出 現 すること を 示 します + プラス その 要 素 が1 回 以 上 出 現 すること を 示 します ( ) 括 弧 括 弧 内 に 複 数 の 要 素 をグループ 化 します 記 号 なし その 要 素 は1つだけ 記 述 できま す col 要 素 で 列 幅 を 指 定 しました 左 から 10%, 20%, 40%です 見 出 し 行 は 横 方 向 にセンタリング 左 2 列 は valign="center" align="center"で 縦 横 方 向 にセンタリングを 指 定 しました 記 号 読 み 方 意 味 縦 棒 OR 条 件 を 示 します? 疑 問 符, カンマ * アスタリスク + プラス その 要 素 が0 回 か1 回 出 現 することを 示 します カンマで 区 切 られた 順 であることを 示 し ます その 要 素 が0 回 以 上 出 現 することを 示 し ます その 要 素 が1 回 以 上 出 現 することを 示 し ます ( ) 括 弧 括 弧 内 に 複 数 の 要 素 をグループ 化 します 記 号 なし その 要 素 は1つだけ 記 述 できます 表 のセル 中 の 縦 方 向 のアライメント 指 定 には 次 の 点 にご 注 意 ください HTML では valign, CSS2 で は vertical-alignment というプロパティをテーブルのセルに 指 定 しアライメントを 行 わせることができま す しかし XSL でこれに 該 当 するプロパティは vertical-align ではなく display-align になります ここで 示 したスタイルシートでも valign は display-align にマッピングしています XSL では vertical-align はイ ンラインレベルの 要 素 にのみ 適 用 されます 表 要 素 の 処 理 47

51 16 リスト 要 素 の 処 理 リストとは 箇 条 書 きのことです SimpleDoc では 箇 条 のラベル 部 分 の 形 式 が 異 なる 3 つのリスト 要 素 (1) 番 号 付 リスト(ordered list) (2) 番 号 なしリスト(unordered list) (3) 定 義 型 リスト (13) (definition list)が 定 義 されています SimpleDoc のリスト 要 素 (ol, ul, dl)は リストのラベル 部 分 と 本 体 部 分 の 領 域 が 横 に 並 んだ 形 式 に 組 む ただし 定 義 型 リスト 要 素 (dl)は リストのラベル 部 分 と 本 体 部 分 が 縦 に 並 ぶ 形 式 も 処 理 できるよ うにする (14) 番 号 付 リスト 要 素 (ol)は ラベル 部 分 に 編 集 する 番 号 に 様 々な 形 式 が 適 用 できるようにする 番 号 なしリスト 要 素 (ul)は ラベル 部 分 の 文 字 に 様 々な 指 定 ができるようにする リスト 形 式 の 比 較 リスト 要 素 を 横 並 びのラベル 部 と 本 体 部 に 編 集 するには XSL-FO の fo:list-block に 編 集 してやる 必 要 があります ここで SimpleDoc のリストと XSL-FO のリストを 比 較 してみましょう 要 素 意 味 定 義 ol 番 号 付 リスト (li)* ul 番 号 なしリスト (li)* li リスト 項 目 (inline 要 素 並 び)* dl 定 義 型 リスト (dt, dd)* dt 定 義 する 用 語 (inline 要 素 並 び)* dd 用 語 の 定 義 (inline 要 素 並 び)* これに 対 して XSL-FO のリストは 次 の 構 造 をしています fo:list-block fo:list-item 要 素 意 味 定 義 fo:list-item-label リストをフォーマットす るオブジェクト (list-item+) provisional-distance-between-starts:fo:list-item-label の 開 始 位 置 と fo:list-item-body の 開 始 位 置 の 距 離 を 指 定 provisional-label-separation:fo:list-item-label の 終 了 位 置 と fo:listitem-body の 開 始 位 置 の 距 離 を 指 定 リストの 一 項 目 ラベル (list-item-label, list-item-body) とリストの 本 体 を 含 む リストの 一 項 目 のラベル (%block;)+ fo:list-item-body リストの 一 項 目 の 本 体 (%block;)+ 両 者 の 対 応 関 係 を 図 に 示 します (13) 定 義 型 リストとは 用 語 集 のように 項 目 ごとにラベル 文 字 列 を 指 定 する 箇 条 書 きのことです (14) HTML の dl のブラウザ 表 示 と 同 じ 表 示 形 式 です 48 リスト 要 素 の 処 理

52 16 番 号 付 リスト 番 号 なしリスト 定 義 型 リスト XSL-FOのリスト ol ul dl fo:list-block li li dt dd fo:list-item fo:list-item-label fo:list-item-body SimpleDoc と XSL-FO のリスト 注 目 すべき 点 として 以 下 のことが 挙 げられます HTML の ul, ol はブラウザが 自 動 的 にリストのラベルを 生 成 してくれた XSL-FO ではスタイルシ ートでラベル 領 域 に 作 成 しなければならない その 分 自 由 度 が 高 く 出 版 物 で 実 用 に 耐 えるラベル の 形 式 を 作 ることができる dl の 場 合 はスタイルシートで dt の 内 容 をラベル 領 域 に 配 置 すればよい リストのラベル 部 分 の 幅 を 自 動 的 に 計 算 する 機 構 は XSL-FO にはない したがって スタイルシー トで 適 切 な 値 を 指 定 しなければならない それでは 個 々のテンプレートを 解 説 します 番 号 付 リストを 処 理 するテンプレート 番 号 付 リストのテンプレート <xsl:param name="list-startdist-default" select="string('2em')" /> <xsl:param name="list-gap-default" select="string('0.5em')" /> <xsl:attribute-set name="list.item"> <xsl:attribute name="space-before">0.4em <xsl:attribute name="space-after">0.4em <xsl:attribute name="relative-align">baseline </xsl:attribute-set> <xsl:template match="ol"> <!-- ラベルの 先 頭 と 本 体 の 先 頭 と 距 離 ラベルの 終 了 と 本 体 の 先 頭 との 距 離 を 決 定 します --> <xsl:variable name="start-dist-local"> <xsl:choose> <xsl:when <xsl:value-of /> </xsl:when> <xsl:otherwise> <xsl:value-of select="$list-startdist-default" /> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="gap-local"> <xsl:choose> <xsl:when <xsl:value-of /> </xsl:when> <xsl:otherwise> <xsl:value-of select="$list-gap-default" /> </xsl:otherwise> </xsl:choose> </xsl:variable> リスト 要 素 の 処 理 49

53 16 <!-- fo:list-block を 生 成 します --> <fo:list-block provisional-distance-between-starts="{$start-dist-local}" provisional-label-separation="{$gap-local}"> <!-- 下 位 の li を 処 理 させます --> <xsl:apply-templates /> </fo:list-block> <xsl:template match="ol/li"> <fo:list-item xsl:use-attribute-sets="list.item"> <!-- リストのラベルを 生 成 します --> <!-- ラベルの 終 了 位 置 は label-end( ) 関 数 で 計 算 させます --> <!-- ラベルのフォーマットは type プロパティで 指 定 します 既 定 値 は 1. --> <fo:list-item-label end-indent="label-end()"> <fo:block text-align="end"> <xsl:choose> <xsl:when test="../@type"> <xsl:number format="{../@type}" /> </xsl:when> <xsl:otherwise> <xsl:number format="1." /> </xsl:otherwise> </xsl:choose> </fo:list-item-label> <!-- リストの 本 体 部 を 生 成 します --> <!-- ラベルの 開 始 位 置 は body-start( ) 関 数 で 計 算 させます --> <fo:list-item-body start-indent="body-start()" text-align="justify"> <fo:block> <!-- li 以 下 の 内 容 を 下 位 のテンプレートに 処 理 させます --> <xsl:apply-templates /> </fo:list-item-body> </fo:list-item> ラベルと 本 体 部 分 の 位 置 指 定 リストの 組 版 ではラベル 部 分 と 本 体 部 分 の 配 置 が 重 要 になります fo:list-block では provisional-distance-between-starts でラベル 部 分 の 先 頭 と 本 体 部 分 の 先 頭 の 距 離 provisional-label-separation でラベル 部 分 の 終 了 と 本 体 部 分 の 先 頭 の 距 離 を 指 定 します テンプレートではこれらを ol 要 素 の startdist, gap プロパティから 受 け 取 れるようにして あります しかし 実 際 にリストが 組 版 されるのは fo:list-item 以 降 です テンプレートではラベル 部 分 の 終 了 位 置 本 体 部 分 の 開 始 位 置 指 定 に label-end( )と body-start( ) 関 数 を 使 用 しています (15) 2 つの 関 数 は fo:list-block に 指 定 された provisional-distance-between-starts provisional-label-separation の 値 を 内 部 で 参 照 して 位 置 を 計 算 してくれます (16) これらの 関 数 の 指 定 はリスト 処 理 のテンプレートではほとんど おまじない に 近 いものです リスト のレイアウトの 考 え 方 がわかれば 機 械 的 に 適 用 して 問 題 ありません (15) これらは XSL-FO 仕 様 で Property Value Function と 呼 ばれています (16) label-end() = fo:list-block の 内 容 領 域 の 幅 - (provisional-distance-between-starts + ラベルの start-indent - provisionallabel-separation) body-start() = ラベルの start-indent + provisional-distance-between-starts 50 リスト 要 素 の 処 理

54 16 ラベルの 書 式 リストのラベルは 一 連 番 号 から 編 集 します 一 連 番 号 は 既 定 値 では<xsl:number format="1." />で 生 成 し ています xsl:number は 入 力 XML 文 書 中 の 同 じレベル(sibling: 兄 弟 )の li 要 素 をカウントし 現 在 の li 要 素 の 順 序 番 号 を 返 します したがって リストがネストした 場 合 でも 正 しく 処 理 されます 番 号 付 リスト ol <xsl:number format="1."/>の 結 果 li 1. li li li ネストした 番 号 付 リスト ol li li li li xsl:number による 番 号 付 リストのラベル 作 成 ラベルの 書 式 は ol 要 素 の type プロパティで 指 定 します 例 えば type="(01)"と 指 定 すれば (01), (02), (03), というラベルが 生 成 されます 番 号 部 分 には 以 下 の 指 定 子 が 使 えます 番 号 の 書 式 1 1, 2, 3, , 02, 03, a A i ア あ イ 出 力 結 果 a, b, c, d,...x, y, z, aa, ab, ac... A, B, C, D,...X, Y, Z, AA, AB, AC... i, ii, iii, iv, v... ア, イ, ウ, エ... あ, い, う, え... イ, ロ, ハ, ニ... 一 一, 二, 三, 四... 壱 壱, 弐, 参, 四... type プロパティには Unicode でゼロと1を 表 す 文 字 と それ 以 外 の 括 弧 などの 約 物 を 指 定 して 書 式 を 表 します 書 式 を 入 力 XML 文 書 の 側 から 供 給 できるので 文 書 の 作 成 の 自 由 度 が 増 すでしょう 番 号 付 リストの 例 <ol type="a."> <li>リストの 種 類 <ol type=" 一."> <li> 番 号 なしリスト</li> <li> 番 号 付 リスト</li> <li> 定 義 型 リスト</li> </ol> </li> <li> 表 の 要 素 <ol> <li> 行 </li> <li> 列 </li> 入 力 XML データ リスト 要 素 の 処 理 51

55 16 <li>セル</li> </ol> </li> <li>ブロック 要 素 とインライン 要 素 </li> </ol> 組 版 結 果 は 次 のようになります a. リストの 種 類 一. 番 号 なしリスト 二. 番 号 付 リスト 三. 定 義 型 リスト b. 表 の 要 素 1. 行 2. 列 3. セル c. ブロック 要 素 とインライン 要 素 番 号 なしリストを 処 理 するテンプレート 番 号 なしリストのテンプレート <xsl:param name="list-startdist-default" select="string('2em')" /> <xsl:param name="list-gap-default" select="string('0.5em')" /> <xsl:attribute-set name="list.item"> <xsl:attribute name="space-before">0.4em <xsl:attribute name="space-after">0.4em <xsl:attribute name="relative-align">baseline </xsl:attribute-set> <xsl:template match="ul"> <!-- ラベルの 先 頭 と 本 体 の 先 頭 と 距 離 ラベルの 終 了 と 本 体 の 先 頭 との 距 離 を 決 定 します --> <xsl:variable name="start-dist-local"> <xsl:choose> <xsl:when <xsl:value-of /> </xsl:when> <xsl:otherwise> <xsl:value-of select="$list-startdist-default" /> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="gap-local"> <xsl:choose> <xsl:when <xsl:value-of /> </xsl:when> <xsl:otherwise> <xsl:value-of select="$list-gap-default" /> </xsl:otherwise> </xsl:choose> </xsl:variable> <!-- fo:list-block を 生 成 します --> <fo:list-block provisional-distance-between-starts="{$start-dist-local}" provisional-label-separation="{$gap-local}"> <!-- 下 位 の li を 処 理 させます --> <xsl:apply-templates /> </fo:list-block> 52 リスト 要 素 の 処 理

56 16 <xsl:template match="ul/li"> <fo:list-item xsl:use-attribute-sets="list.item"> <!-- リストのラベルを 生 成 します --> <!-- ラベルの 終 了 位 置 は label-end( ) 関 数 で 計 算 させます --> <!-- 行 頭 文 字 は type プロパティで 指 定 します 既 定 値 は --> <fo:list-item-label end-indent="label-end()"> <fo:block text-align="end"> <xsl:choose> <xsl:when test="../@type='disc'"> <xsl:text> </xsl:text> </xsl:when> <xsl:when test="../@type='circle'"> <xsl:text> </xsl:text> </xsl:when> <xsl:when test="../@type='square'"> <xsl:text> </xsl:text> </xsl:when> <xsl:when test="../@type='bsquare'"> <xsl:text> </xsl:text> </xsl:when> <xsl:otherwise> <xsl:text> </xsl:text> </xsl:otherwise> </xsl:choose> </fo:list-item-label> <!-- リストの 本 体 部 を 生 成 します --> <!-- ラベルの 開 始 位 置 は body-start( ) 関 数 で 計 算 させます --> <fo:list-item-body start-indent="body-start()" text-align="justify"> <fo:block> <xsl:apply-templates /> </fo:list-item-body> </fo:list-item> ラベル 文 字 の 指 定 番 号 なしリストと 番 号 付 リストのテンプレートの 違 いは リストのラベル 部 分 の 処 理 のみです 番 号 なしリストではラベルに 一 律 の 文 字 を 配 置 します ラベル 文 字 の 種 類 は ul 要 素 の type プロパティで 指 定 します 既 定 値 は 中 黒 ですが HTML と 同 じ disc, circle, square も 指 定 できます 行 頭 文 字 として 画 像 を 配 置 するタイプのテンプレートも 作 成 してみました ul 要 素 の type プロパティ に img:ファイル 名 の 形 式 で 画 像 ファイルを 指 定 します 行 頭 文 字 として 画 像 を 使 用 するテンプレート <!-- 行 頭 文 字 として 画 像 を 使 用 する 場 合 のテンプレート--> <xsl:template match="ul[substring(@type,1,4)='img:']/li"> <fo:list-item xsl:use-attribute-sets="list.item"> <fo:list-item-label end-indent="label-end()"> <fo:block text-align="end"> <fo:external-graphic content-height="1.2em" content-width="1.2em" src="{substring-after(../@type,substring(../@type,1,4))}" /> </fo:list-item-label> <fo:list-item-body start-indent="body-start()" text-align="justify"> <fo:block> <xsl:apply-templates /> </fo:list-item-body> リスト 要 素 の 処 理 53

57 16 </fo:list-item> 番 号 なしリストの 例 入 力 XML データ <ul type="square"> <li>リストの 種 類 <ul type="disc"> <li> 番 号 なしリスト</li> <li> 番 号 付 リスト</li> <li> 定 義 型 リスト</li> </ul> </li> <li> 表 の 要 素 <ul> <li> 行 </li> <li> 列 </li> <li>セル</li> </ul> </li> <li>ブロック 要 素 とインライン 要 素 </li> </ul> 組 版 結 果 は 次 のようになります リストの 種 類 番 号 なしリスト 番 号 付 リスト 定 義 型 リスト 表 の 要 素 行 列 セル ブロック 要 素 とインライン 要 素 入 力 XML データ <ul class="img-bullet" type="leaf"> <li>リストの 種 類 <ul class="img-bullet" type="star"> <li> 番 号 なしリスト</li> <li> 番 号 付 リスト</li> <li> 定 義 型 リスト</li> </ul> </li> <li> 表 の 要 素 <ul class="img-bullet"> <li> 行 </li> <li> 列 </li> <li>セル</li> </ul> </li> <li>ブロック 要 素 とインライン 要 素 </li> </ul> 結 果 は 次 のようになります リストの 種 類 54 リスト 要 素 の 処 理

58 16 番 号 なしリスト 番 号 付 リスト 定 義 型 リスト 表 の 要 素 行 列 セル ブロック 要 素 とインライン 要 素 リスト 要 素 の 処 理 55

59 17 PDF 生 成 に 関 する 機 能 XSL Formatter では PDF 生 成 に 関 して 以 下 のようなことが 可 能 です 組 版 結 果 の PDF に 文 書 情 報 を 設 定 する PDF のしおりを 作 成 する PDF 文 書 内 部 へのリンク( 目 次 から 本 文 へ 等 )を 設 定 する 外 部 へのリンクを 設 定 する ここで 挙 げた PDF 作 成 時 の 機 能 には XSL-FO V1.0 の 仕 様 にはない 項 目 もありますが アンテナハウ ス 拡 張 仕 様 ( 参 考 資 料 [6])を 使 うことで 可 能 になります PDF 文 書 情 報 XSL-FO V1.0 仕 様 では 組 版 結 果 を PDF に 出 力 する 際 に 文 書 情 報 を 設 定 することはできませんが ア ンテナハウス 拡 張 仕 様 ( 参 考 資 料 [6])によって 文 書 情 報 の 設 定 が 可 能 です axf:document-info を 使 って 定 義 します axf:document-info は fo:root の 直 下 で かつ fo:page-sequence が 出 現 するよりも 前 にあれば 反 映 されます スタイルシートでは 以 下 のように SimpleDoc の/doc/head から title subtitle auther を PDF 文 書 情 報 として 設 定 しています PDF 文 書 情 報 の 出 力 <xsl:template match="doc"> <fo:root xmlns:fo=" <axf:document-info name="title" value="{/doc/head/title}" /> <axf:document-info name="subject" value="{/doc/head/subtitle}" /> <axf:document-info name="author" value="{/doc/head/author}" /> しおりの 作 成 PDF のしおりも 同 様 にアンテナハウス 拡 張 仕 様 ( 参 考 資 料 [6])を 使 います この 場 合 しおりに 出 力 したい fo:block に axf:outline-level や axf:outline-title を 指 定 することで 可 能 になります axf:outline-title が ない 場 合 自 動 的 に fo:block の 内 容 がしおりとなります SD2FO-DOC.XSL では part chapter section subsection subsubsection appendix のタイトルを 処 理 する 時 点 で axf:outline-level を 設 定 してしおりを 出 力 させています テンプレートは <xsl:template name="title.out">(タイトル 出 力 用 のサブテンプレート) です <xsl:template name="title.out"> <xsl:variable name="level" select="count(ancestor-or-self::part ancestor-or-self::chapter ancestor-or-self::section ancestor-or-self::subsection ancestor-or-self::subsubsection ancestor-or-self::appendix )" /> <xsl:choose> <xsl:when test="$level=1"> <fo:block xsl:use-attribute-sets="h1" id="{generate-id()}" axf:outline-level="{$level}"> <xsl:call-template name="title.out.sub" /> <xsl:value-of select="title" /> </xsl:when> <xsl:when test="$level=2"> <fo:block xsl:use-attribute-sets="h2" id="{generate-id()}" axf:outline-level="{$level}"> <xsl:call-template name="title.out.sub" /> 56 PDF 生 成 に 関 する 機 能

60 17 <xsl:value-of select="title" /> </xsl:when> <xsl:when test="$level=3"> <fo:block xsl:use-attribute-sets="h3" id="{generate-id()}" axf:outline-level="{$level}"> <xsl:call-template name="title.out.sub" /> <xsl:value-of select="title" /> </xsl:when> <xsl:when test="$level=4"> <fo:block xsl:use-attribute-sets="h4" id="{generate-id()}" axf:outline-level="{$level}"> <xsl:call-template name="title.out.sub" /> <xsl:value-of select="title" /> </xsl:when> <xsl:when test="$level=5"> <fo:block xsl:use-attribute-sets="h5" id="{generate-id()}" axf:outline-level="{$level}"> <xsl:call-template name="title.out.sub" /> <xsl:value-of select="title" /> </xsl:when> <xsl:otherwise> <fo:block xsl:use-attribute-sets="h5" id="{generate-id()}"> <xsl:call-template name="title.out.sub" /> <xsl:value-of select="title" /> </xsl:otherwise> </xsl:choose> リンクの 設 定 リンクの 設 定 をするには fo:basic-link を 使 います 同 一 文 書 内 へのリンクは internal-destination プロパ ティで 参 照 先 id を 指 定 します このとき 参 照 先 の XSL-FO オブジェクトは 同 じ 値 の id を 持 っている 必 要 があります 外 部 へのリンクの 場 合 external-destination プロパティで 参 照 先 を 指 定 します SimpleDoc では 内 部 / 外 部 共 に a 要 素 を 使 って 表 します 参 照 先 は href プロパティで 指 定 しますが その 値 が"#"で 始 まっている 場 合 は 内 部 そうでなければ 外 部 としてリンクを 設 定 します <xsl:template match="a[@href]"> <fo:basic-link> <xsl:if test="starts-with(@href,'#')"> <xsl:attribute name="internal-destination"> <xsl:value-of select="substring-after(@href,'#')" /> <fo:inline xsl:use-attribute-sets="a"> <xsl:apply-templates /> </fo:inline> </xsl:if> <xsl:if test="starts-with(@href,'#')=false"> <xsl:attribute name="external-destination"> <xsl:value-of select="@href" /> <fo:inline xsl:use-attribute-sets="a"> <xsl:variable name="anchor-texts"> <xsl:apply-templates /> </xsl:variable> <xsl:apply-templates /> <xsl:if test="@href!=$anchor-texts"> <fo:inline> PDF 生 成 に 関 する 機 能 57

61 17 <xsl:text>(</xsl:text> <xsl:value-of /> <xsl:text>)</xsl:text> </fo:inline> </xsl:if> </fo:inline> </xsl:if> </fo:basic-link> 参 照 先 となる name プロパティを 持 った a 要 素 は 以 下 の 様 に id を 持 つインラインオブジェクトとし て 処 理 します <xsl:template match="a[@name]"> <fo:inline id="{@name}"> <xsl:apply-templates /> </fo:inline> また 目 次 や 索 引 から 文 書 内 の 該 当 する 部 分 にリンクを 設 定 することも 可 能 です この 場 合 参 照 に 用 いる id は generate-id( ) 関 数 を 使 って 自 動 的 に id を 作 成 します generate-id( ) 関 数 を 呼 び 出 すと XSLT プ ロセッサがカレントノードに 対 応 する IDXP83DL のような 適 当 な 文 字 列 を id 用 に 作 成 してくれます 目 次 の 場 合 toc.line テンプレートで 項 目 を 出 力 する 部 分 を 以 下 のように 記 述 します <fo:basic-link internal-destination="{generate-id()}"> <xsl:value-of select="title" /> </fo:basic-link> 参 照 先 となる 本 文 中 の title の 出 力 時 にも generate-id( )を 使 って id を 設 定 します generate-id( )によっ て 生 成 される id 値 は 同 じ 要 素 に 対 しては 常 に 同 じであり 異 なる 要 素 に 対 しては 必 ず 異 なります 58 PDF 生 成 に 関 する 機 能

62 18 参 考 資 料 の 参 照 巻 末 の 参 考 資 料 一 覧 に 資 料 番 号 を 自 動 的 に 振 る 本 文 中 の 参 考 資 料 への 参 照 において 対 応 する 資 料 番 号 を 自 動 作 成 する 巻 末 に 参 考 資 料 一 覧 を 作 成 し 本 文 の 中 に 資 料 番 号 で 巻 末 の 参 考 資 料 を 参 照 できるようにします こ の 資 料 番 号 を 自 動 的 に 生 成 して 資 料 一 覧 を 改 訂 しても 本 文 中 の 参 照 番 号 を 編 集 時 に 更 新 しなくてもよ いようにします SimpleDoc.dtd には 資 料 一 覧 全 体 を bib 要 素 で 表 し 各 資 料 を li 要 素 の 内 容 とします li 要 素 には ID 番 号 をつけます 参 考 資 料 一 覧 には 資 料 番 号 を 自 動 的 に 振 ります このためのスタイルシートは 次 の 通 り です <xsl:template match="bib"> <fo:list-block> <xsl:apply-templates select="li" /> </fo:list-block> <xsl:template match="bib/li"> <fo:list-item end-indent="label-end()" <fo:list-item-label> <fo:block> <xsl:text>[</xsl:text> <xsl:value-of select="position()" /> <xsl:text>]</xsl:text> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block> <xsl:value-of select="." /> </fo:list-item-body> </fo:list-item> 本 文 中 の ref 要 素 の ref-id="xxx"(xxx は 参 照 先 li 要 素 の id 値 )で 参 考 資 料 を 参 照 します この 参 照 ラベ ルを 生 成 するスタイルシートは 次 のようになります <xsl:template match="ref"> <xsl:variable name="target"> <xsl:call-template name="get-position"> <xsl:with-param name="id-value" /> </xsl:call-template> </xsl:variable> <fo:basic-link <fo:inline> <xsl:text>( 参 考 資 料 [</xsl:text> <xsl:value-of select="$target" /> <xsl:text>])</xsl:text> </fo:inline> </fo:basic-link> ref の 参 照 先 は bib の 中 での li の 順 番 を 示 すので position( ) 関 数 を 使 い ref-id の 値 が 一 致 する li が bib の 中 で 何 番 目 かを 求 めます 参 考 資 料 の 参 照 59

63 19 索 引 の 作 成 巻 末 に 索 引 を 作 成 する 索 引 の 作 成 方 法 を 順 を 追 って 説 明 します 索 引 用 のテンプレートは index.xsl にまとめられています 詳 細 は index.xsl の 内 容 も 参 照 してください SimpleDoc では 索 引 に 載 せる 項 目 のために index 要 素 が 定 義 されています <!ELEMENT index (#PCDATA)> <!ATTLIST index key CDATA #IMPLIED> key プロパティは index 要 素 をグループ 化 させるために 使 用 します 日 本 語 では 単 語 を 索 引 に 出 力 す る 場 合 その 読 みを 使 ってグループ 化 し あいうえお 順 に 出 力 するのが 一 般 的 でしょう しかし <index> 単 語 </index>ではその 読 みを 得 ることは 不 可 能 です したがって <index key="たんご"> 単 語 </index>のよ うに key プロパティに 読 みを 指 定 します Key の 作 成 索 引 の 項 目 となる index 要 素 を 先 頭 の 文 字 を 使 ってグループ 化 させるために xsl:key を 使 って 名 前 付 きキーを 宣 言 します <xsl:key name="index-key" match="index" /> <xsl:key name="index-value" match="index" use="." /> xsl:key はスタイルシート 内 でトップレベル 要 素 でなければならないので SD2FO-DOC.XSL スタイル シートの 先 頭 に 記 述 されています 一 番 目 の xsl:key は index-key という 名 前 のキーに key プロパティの 先 頭 の 一 文 字 を 値 として 宣 言 しています 英 語 のドキュメントのように もし index 要 素 の 内 容 からグル ープ 化 可 能 であれば use="substring(.,1,1)"として key プロパティを 使 わない 方 法 で 可 能 です 二 番 目 の xsl:key では index-value という 名 前 のキーに index 要 素 の 内 容 を 値 として 宣 言 しています これは 先 頭 の 文 字 でグループ 化 したノードセットの 中 でソートして 出 力 するために 使 います 索 引 ページの 作 成 index.xsl スタイルシートの index.create テンプレートから 索 引 の 作 成 が 開 始 されます 最 初 に 他 のペ ージと 同 様 に fo:page-sequence や fo:flow を 生 成 して 次 に 索 引 ページの 先 頭 にタイトルを 出 力 します 次 に 数 字 およびアルファベットの index 要 素 を 処 理 し その 次 に 日 本 語 の index 要 素 を 処 理 します <xsl:template name="index.create"> <fo:page-sequence master-reference="pagemaster-index"> <!-- ヘッダ 領 域 に 文 書 名 を 設 定 する --> <fo:static-content flow-name="xsl-region-before"> <fo:block font-size="7pt" text-align="center" border-after-width="thin" border-after-style="solid"> <xsl:value-of select="/doc/head/title" /> </fo:static-content> <fo:flow flow-name="xsl-region-body"> <fo:block> <!-- タイトルは 全 段 抜 きとする --> <fo:block span="all" line-height="15mm" background-color="#9bd49d" text-align="center" font-size="20pt" space-after="10mm" axf:outline-level="1" id="index-page"> INDEX 60 索 引 の 作 成

64 19 <fo:block span="all"> <fo:block xsl:use-attribute-sets="index"> <!-- 数 字 とアルファベット --> <xsl:call-template name="index.create.mainalpha" /> <xsl:if = 'ja') or = '') or <!-- かな --> <xsl:call-template name="index.create.mainkana" /> </xsl:if> </fo:flow> </fo:page-sequence> index 要 素 をグループ 化 して 取 り 出 す "index.create.mainalpha" と"index.create.mainKANA"がアルファベットと 日 本 語 (かな)の index を 生 成 するテンプレートです 処 理 内 容 はどちらもほぼ 同 じです "index.create.mainalpha" を 例 に 説 明 し ます 索 引 の 作 成 で 難 しいと 思 われるのは 対 象 となるノードをグループ 化 して 取 り 出 す 処 理 です このた めに 前 述 した xsl:key ともうひとつ index.xsl の 先 頭 にあるデータを 使 用 します <!DOCTYPE DOCUMENT [ <!ENTITY ALPHA "'@ ABCDEFGHIJKLMNOPQRSTUVWXYZ'"> <!ENTITY KANA "'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらり るれろわをん'"> ]> アルファベット 用 かな 文 字 用 のそれぞれの 文 字 をエンティティとして 定 義 し グループ 化 のために 使 います このエンティティから 一 文 字 ずつ 取 り 出 し それをキーとして 持 っているノード 集 合 を 取 り 出 します <xsl:template name="index.create.mainalpha"> <xsl:param name="lettersalpha" select="&alpha;" /> <!-- (1) 0 ~ 9, A ~ Z のうちのどれか1つを 処 理 する --> <xsl:call-template name="index.create.section"> <xsl:with-param name="letter" select="substring($lettersalpha,1,1)" /> </xsl:call-template> <!-- (2) 0 ~ 9, A ~ Z のうちの 次 の1つを 処 理 するための 準 備 --> <xsl:variable name="remainderalpha" select="substring($lettersalpha,2)" /> <!-- (3) 0 ~ 9, A ~ Z のうちの 次 の1つを 処 理 する --> <xsl:if test="$remainderalpha"> <xsl:call-template name="index.create.mainalpha"> <xsl:with-param name="lettersalpha" select="$remainderalpha" /> </xsl:call-template> </xsl:if> (1) の 部 分 で キーとなる 一 文 字 をパラメータとして"index.create.section" テンプレートに 渡 し "index.create.section"テンプレートの 中 でノード 集 合 が 処 理 されます (2)では 次 の 一 文 字 を 取 り 出 し (3)で"$remainderALPHA"を 呼 び 出 す( 再 帰 させる)ことにより 全 ての 文 字 を 処 理 します 索 引 の 作 成 61

65 19 ノード 集 合 の 出 力 "index.create.section"テンプレートでは キーとなる 文 字 を index-key として 持 つノード 集 合 を 出 力 しま す <xsl:template name="index.create.section"> <!-- 処 理 するキャラクタを 受 け 取 る --> <xsl:param name="letter" /> <!-- キーの 値 が letter のノードセットを 変 数 terms にセットしてソートする--> <xsl:variable name="terms" select="key('index-key',$letter)" /> <!-- 受 け 取 ったパラメータと 先 頭 1 文 字 が 同 じ index を 取 得 --> <xsl:if test="$terms"> <!-- キー 文 字 の 出 力 --> <fo:block font-weight="bold" text-align="center" space-before="1em"> <!-- 受 け 取 った1 文 字 をそのまま 出 力 --> <xsl:value-of select="$letter" /> <!-- 同 一 テキストを 重 複 処 理 しないようにする --> <xsl:for-each select="$terms[not(.=preceding::index)]"> <!-- key( 読 み) 順 にソート --> <xsl:sort select="@key" /> <fo:block text-align-last="justify" axf:suppress-duplicate-page-number="true"> <!-- テキストをそのまま 出 力 --> <xsl:value-of select="." /> <fo:leader leader-pattern="dots" leader-length.optimum="3em" /> <!-- 同 一 テキストを 取 得 --> <xsl:variable name="terms2" select="key('index-value',.)" /> <xsl:if test="$terms2"> <fo:inline> <!-- 同 一 テキストが 複 数 箇 所 にあったときそれらのページ 番 号 をすべて 出 力 する --> <xsl:apply-templates select="$terms2" mode="line" /> </fo:inline> </xsl:if> </xsl:for-each> </xsl:if> axf:suppress-duplicate-page-number プロパティ(アンテナハウス 拡 張 仕 様 ( 参 考 資 料 [6]))を 使 うと 同 一 ページ 番 号 が 連 続 した 場 合 に 削 除 することが 可 能 です A Antenna House... 1,1,2,3,3,5,7,7,8 X XSL-FO... 2,10,11,11,13,13 axf:suppress-duplicate-page-number を 使 わなかった 場 合 62 索 引 の 作 成

66 19 A Antenna House... 1,2,3,5,7,8 X XSL-FO... 2,10,11,13 axf:suppress-duplicate-page-number を 使 った 場 合 索 引 の 作 成 63

67 20 その 他 mode を 使 用 する SD2FO-DOC.XSL スタイルシートには 本 書 で 説 明 した 他 に article.xsl というスタイルシートが 含 まれ ています これは XML 文 書 の doc 要 素 に class="article"と 指 定 した 場 合 に 表 紙 / 目 次 / 索 引 無 しの 組 版 を するようになっています 全 てのテンプレートには mode="article"のように mode が 指 定 され SD2FO- DOC.XSL スタイルシートのテンプレートとは 別 の 処 理 を 行 うようになっています このようにテンプ レートに mode プロパティを 使 うことによって 任 意 の 要 素 の 処 理 を 分 けることができます 64 その 他

68 参 考 資 料 付 録 [1] Extensible Stylesheet Language (XSL) Version 1.0, W3C Recommendation 15 October 2001, [2] ( 日 本 語 訳 )TR X 0088:2003 拡 張 可 能 なスタイルシート 言 語 (XSL)1.0, 発 行 年 月 : 平 成 15 年 9 月 1 日, 発 行 者 : 日 本 工 業 標 準 調 査 会 標 準 部 会, 発 行 所 : 日 本 規 格 協 会 [3] XSL Transformations (XSLT) Version 1.0 W3C Recommendation 16 November 1999, [4] ( 日 本 語 訳 )XSL Transformations (XSLT)バージョン 1.0 W3C 勧 告 1999 年 11 月 16 日, [5] SmartDoc, [6] アンテナハウス 拡 張 仕 様 その 他 65

69 索 引 A align プロパティ article.xsl... 9 attribute.xsl... 9 author axf:document-info axf:outline-level axf:outline-title axf:suppress-duplicate-page-number a 要 素... 34, 35, 58 B baseline-shift プロパティ bib 要 素 block-progression-dimension プロパティ BMP 画 像 body-start( ) body 要 素 br 要 素... 34, 37 b 要 素... 6, 34 C circle code 要 素 colspan プロパティ column-count プロパティ column-gap プロパティ column-number プロパティ column-width プロパティ col 要 素 content-height プロパティ content-width プロパティ D date dd 要 素 disc display-align プロパティ div 要 素... 38, 40 dl 要 素 DTD... 1 dt 要 素 E EMF 画 像 em 要 素 EPS 画 像 Extensible Stylesheet Language... 1, 65 external-destination プロパティ F figure 要 素... 38, 39 flow-name プロパティ fo:basic-link fo:block... 6 fo:block-container fo:conditional-page-master-reference fo:external-graphic fo:footnote fo:inline... 6 fo:layout-master-set... 7, 15 fo:leader fo:list-block fo:list-item fo:list-item-body fo:list-item-label fo:marker fo:page-number fo:page-number-citation fo:page-sequence... 7, 15 fo:page-sequence-master fo:region-after fo:region-before fo:repeatable-page-master-alternatives fo:retrieve-marker fo:root... 7 fo:simple-page-master fo:static-content fo:table fo:table-and-caption fo:table-body fo:table-caption fo:table-cell fo:table-column fo:table-footer fo:table-header fo:table-row FO ツリーの 構 造... 7 from-table-column( ) G generate-id( )... 23, 33, 58 GIF 画 像 H head 要 素 href プロパティ I id プロパティ... 22, 33, 59 index.create index.create.mainalpha index.create.mainkana index.xsl... 9, 60 index-key... 60, 62 index-value index 要 素 initial-page-number プロパティ inline-progression-dimension プロパティ internal-destination プロパティ i 要 素 J JPEG 画 像 K keep-together プロパティ key プロパティ L label-end( ) layout プロパティ linefeed-treatment プロパティ li 要 素 M mode プロパティ monospace font... 35

70 N note 要 素... 34, 35 O odd-or-even プロパティ ol 要 素 P param.xsl... 9 PDF... 35, 56 PDF 生 成 PNG 画 像 position( ) program 要 素... 38, 39 Property Value Function proportional-column-width( ) provisional-distance-between-starts プロパティ... 48, 50 provisional-label-separation プロパティ... 48, 50 PureSmartDoc... 1 p 要 素... 6, 38 R ref-id プロパティ... 22, 59 region-name プロパティ rowheight プロパティ rowspan プロパティ S SD2FO-DOC.XSL... 9 SimpleDoc... 1, 5 SmartDoc space-before.conditionality space-before プロパティ span="all" span 要 素... 34, 37 square start-indent プロパティ SVG 画 像 T table 要 素 td 要 素 text( ) th 要 素 TIFF 画 像 title toclevel プロパティ tr 要 素 U ul 要 素 URI V valign プロパティ W white-space-collapse プロパティ white-space-treatment プロパティ white-space プロパティ WMF 画 像 wrap-option プロパティ X XML ドキュメント... 1 XSL Formatter... 1 XSL Transformations xsl:apply-templates... 6 xsl:attribute-set... 9, 10 xsl:call-template... 9, 19 xsl:copy-of xsl:for-each xsl:include... 9 xsl:key... 9, 60 xsl:number... 36, 51 xsl:param... 9 xsl:stylesheet... 6 xsl:template... 6, 7 xsl:template match="xxx"... 9 xsl:template name="yyy"... 9 XSL-FO... 1, 5 XSLT... 1 XSLT プロセッサ... 1 XSL スタイルシート... 1, 2, 5, 8 XSL スタイルシートの 構 造... 6 XSL プロセッサ... 7 あ アンカー アンテナハウス 拡 張 仕 様... 56, 62, 65 い 入 れ 子 の 深 さ インクルード... 9 インライン 要 素... 6 インライン 要 素 の 処 理 う 上 付 き 文 字 か 改 行 拡 張 可 能 なスタイルシート 言 語 空 のブロック 要 素 カレントノード き 奇 数 ページ 書 式 脚 注 強 調 行 の 高 さ く 偶 数 ページ 書 式 さ 索 引 の 作 成 左 右 ページ 書 式 の 切 り 替 え 参 考 資 料 の 参 照 参 照 ラベル し しおり しおりの 作 成 斜 体 す 図 せ 全 段 抜 き そ ソート た 縦 結 合 段 間 の 空 き 量 段 組 段 落 ち 注 釈 つ 爪 爪 の 出 力... 28

71 て 定 義 型 リスト 要 素 テーブル... 3, 4, 47 テキストノード と 等 幅 フォント... 35, 39 に 二 段 組 リスト 要 素 の 処 理 リンク... 4, 34, 35, 56, 57, 58 リンクの 設 定 る ルート 要 素... 7 れ 列 幅 ね ネストレベル の ノード 集 合 の 出 力 は 番 号 付 リストのテンプレート 番 号 付 リストの 例 番 号 付 リスト 要 素 番 号 なしリストのテンプレート 番 号 なしリストの 例 番 号 なしリスト 要 素 番 号 の 書 式 汎 用 インライン 要 素 汎 用 ブロック 要 素... 38, 40 ひ 左 ページフッタ 左 ページヘッダ 表 紙 の 作 成 表 紙 のページ 書 式 表 の 整 形 例 表 要 素 の 処 理 表 を 処 理 するテンプレート ふ 太 字 プログラムコード... 34, 38, 39 ブロック 要 素... 6, 38 PDF 文 書 情 報 へ ページ 書 式 の 設 定 ページ 番 号 の 出 力 ページ 番 号 の 取 得 ページ 番 号 の 設 定 ページフッタ... 25, 26 ページヘッダ... 25, 26 ページヘッダの 出 力 ページマスタ み 右 ページフッタ 右 ページヘッダ 見 出 しの 書 式 条 件 見 出 しの 作 成 も 目 次 の 作 成 目 次 のページ 書 式 よ 横 結 合 読 み ら ラベルの 書 式 ラベル 文 字 の 指 定 ランニングフッタの 作 成 り リーダ... 23

XML XML XML XML XML XML 2000 12 XSL-FO XML XSL Formatter XSL XSL-FO XML XSL Formatter XML 1. XSL Formatter 2. D XML /XML 3. S XSL 4. O F 5. -2-

XML XML XML XML XML XML 2000 12 XSL-FO XML XSL Formatter XSL XSL-FO XML XSL Formatter XML 1. XSL Formatter 2. D XML /XML 3. S XSL 4. O F 5. -2- XML XML XML XML XML XML 2000 12 XSL-FO XML XSL Formatter XSL XSL-FO XML XSL Formatter XML 1. XSL Formatter 2. D XML /XML 3. S XSL 4. O F 5. -2- XSL XML / XML / 1. / XML 2. / XSL 3. XSL XML XSL XSL-FO 4.

More information

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2 目 次 動 作 環 境 特 長 方 法 方 法 起 動 終 了 方 法 方 法 操 作 方 法 使 方 使 方 使 方 詳 細 設 定 使 方 KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2 KINGSOFT Office 2016 特 長 主 特 長 以

More information

01_07_01 データのインポート_エクスポート_1

01_07_01 データのインポート_エクスポート_1 データのインポート/エクスポートについて 概 要 スタッフエクスプレスでは 他 のソフトウェアで 作 成 されたスタッフデータ 得 意 先 データなどを 取 り 込 む(インポートする)ことができます また スタッフエクスプレスに 登 録 済 みのデータを Excel 形 式 CSV 形 式 で 出 力 (エクスポート)す ることができます 注 意 インポートできるデータは 次 の 条 件 を 満

More information

返還同意書作成支援 操作説明書

返還同意書作成支援 操作説明書 返 還 金 同 意 書 等 作 成 支 援 操 作 説 明 書 当 EXCELを 使 用 することにより 以 下 のものを 作 成 できます 返 還 同 意 書 保 険 者 別 返 還 金 額 一 覧 表 返 還 内 訳 表 返 還 集 計 表 1 返 還 金 同 意 書 等 作 成 支 援 (EXCEL 形 式 )を 開 きます 2 タイトル 画 面 が 数 秒 間 表 示 されますので 注 意

More information

地域ポータルサイト「こむねっと ひろしま」

地域ポータルサイト「こむねっと ひろしま」 5. エディタの 使 い 方 5.1. エディタとは? NetCommons の 全 モジュールで 共 通 する 編 集 画 面 です 5.2. 通 常 のエディタの 使 い 方 (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17)(18) (19)(20)(21) (22) (23) (24) (25)

More information

Table of Contents... 3 XML... 3... 3... 4 XSL... 4 CSS XML... 5 CSS... 5 HTML+CSS... 6 CSS XML... 7 CSS... 8 XSLT XML HTML(+CSS)... 9 IE5 XML... 9 IE5

Table of Contents... 3 XML... 3... 3... 4 XSL... 4 CSS XML... 5 CSS... 5 HTML+CSS... 6 CSS XML... 7 CSS... 8 XSLT XML HTML(+CSS)... 9 IE5 XML... 9 IE5 2001 2 Table of Contents... 3 XML... 3... 3... 4 XSL... 4 CSS XML... 5 CSS... 5 HTML+CSS... 6 CSS XML... 7 CSS... 8 XSLT XML HTML(+CSS)... 9 IE5 XML... 9 IE5... 9 XSLT... 10 XSLT... 11 XML HTML... 11 XML

More information

<4D6963726F736F667420576F7264202D20574254816995B68F918DEC90AC89898F4B899E977095D2816A2E646F63>

<4D6963726F736F667420576F7264202D20574254816995B68F918DEC90AC89898F4B899E977095D2816A2E646F63> 文 書 作 成 演 習 ( 応 用 編 ) (Word007,Excel007) 文 書 作 成 演 習 ( 応 用 編 ) のテキストを 参 考 にしながら, 次 の 学 級 だよりを 作 成 してみましょう IPA 教 育 用 画 像 素 材 集 より < 演 習 のための 準 備 > 演 習 用 素 材 のフォルダをデスクトップ 上 に 作 成 します IPA 教 育 用 画 像 素 材 集

More information

治 験 実 施 管 理 システム NMGCP 向 け Excel 形 式 プロトコール 作 成 手 順 書 V4.0.3 対 応 版 第 1 版 株 式 会 社 富 士 通 アドバンストエンジニアリング All Rights Reserved,Copyright 株 式 会 社 富 士 通 アドバン

治 験 実 施 管 理 システム NMGCP 向 け Excel 形 式 プロトコール 作 成 手 順 書 V4.0.3 対 応 版 第 1 版 株 式 会 社 富 士 通 アドバンストエンジニアリング All Rights Reserved,Copyright 株 式 会 社 富 士 通 アドバン 2014 年 1 月 7 日 治 験 依 頼 者 各 位 新 潟 市 民 病 院 治 験 管 理 室 Excel 形 式 の 電 子 プロトコール 提 出 の 御 依 頼 当 院 では 効 率 的 で 正 確 な 治 験 の 実 施 のため 電 子 カルテ 内 に 専 用 の Excel 形 式 による 電 子 プロトコールを 導 入 しております つきましては 治 験 依 頼 の 際 に 下 記

More information

1

1 Excelファイルアクセス 1. 概 要 Excel ファイルアクセスコンポーネントは Microsoft Excel のファイルを 開 いてセルの 値 や 書 式 を 取 得 変 更 したり テーブル 全 体 を 新 しいファイルと して 保 存 したりするために 用 います Excel ファイルアクセスコンポーネントは アプリケーションビルダーのメニューから 以 下 のように 選 びます [コンポーネント

More information

Microsoft Word - word_05.docx

Microsoft Word - word_05.docx 第 1 章 葉 書 き 作 成 と 外 国 語 の 入 力 縦 書 きのはがき 作 成 1. ページレイアウト タブの ページ 設 定 グループから 起 動 ツールボタン をク リックする 2. ページ 設 定 ダイアログボックスの 用 紙 余 白 文 字 数 と 行 数 タブをクリッ クして 指 定 されたとおり 設 定 を 行 う( 用 紙 :はがき 余 白 : 上 下 15 ミリ 左 右 :10

More information

企業のおけるWebガバナンスの構築

企業のおけるWebガバナンスの構築 0 記 事 編 集 マニュアル:index リンクをクリックすると 該 当 のページへ 遷 移 します 1. 記 事 編 集 (wysywigエディタ)について 1-1はじめに 1-2 記 事 編 集 (wysywigエディタの 利 用 上 の 注 意 ) 必 ずお 読 みください 1-3 テンプレート 挿 入 から 編 集 まで 流 れ 2. テンプレートについて 2-1 テンプレートの 種 類

More information

「給与・年金の方」からの確定申告書作成編

「給与・年金の方」からの確定申告書作成編 所 得 が 給 与 のみ 公 的 年 金 のみ 給 与 と 公 的 年 金 のみ の 方 で 入 力 方 法 選 択 画 面 で 給 与 年 金 の 方 を 選 択 された 場 合 の 確 定 申 告 書 作 成 の 操 作 手 順 を 説 明 します ~ この 操 作 の 手 引 きをご 利 用 になる 前 に ~ この 操 作 の 手 引 きでは 確 定 申 告 書 の 作 成 方 法 をご 説

More information

Microsoft Word - 【溶け込み】【修正】第2章~第4章

Microsoft Word - 【溶け込み】【修正】第2章~第4章 第 4 章 金 要 件 と 金 額 1 ( 高 齢 になった 場 合 に 受 け 取 れる 金 ) 要 件 1 受 資 格 期 間 保 険 料 納 付 済 期 間 と 保 険 料 免 除 期 間 を 合 わせて25 以 上 あること (ただし 金 額 には 反 映 されないが 受 資 格 期 間 には 算 入 される 合 算 対 象 期 間 があります) 消 費 税 が 引 き 上 げられる 27

More information

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Ⅱ 国 地 方 公 共 団 体 公 共 公 益 法 人 等 の 消 費 税 Q&A ( 問 1) 免 税 期 間 における 起 債 の 償 還 元 金 に 充 てるための 補 助 金 等 の 使 途 の 特 定 Q 地 方 公 共 団 体 の 特 別 会 計 が 消 費 税 の 納 税 義 務 が 免 除 される 課 税 期 間

More information

XML形式の電子報告書作成に当たっての留意事項

XML形式の電子報告書作成に当たっての留意事項 XML 形 式 の 電 子 報 告 書 作 成 に 当 たっての 留 意 事 項 Excel テンプレート 入 力 方 式 において 社 内 システム 等 から 直 接 XML 形 式 の 電 子 報 告 書 ( 以 下 XML 送 信 ファイル という)を 作 成 する 場 合 以 下 の 点 にご 留 意 ください ( 留 意 事 項 1)ファイル 名 称 拡 張 子 XML 送 信 ファイルのファイル

More information

R4財務対応障害一覧

R4財務対応障害一覧 1 仕 訳 入 力 仕 訳 入 力 時 摘 要 欄 で. + Enter を 押 すと アプリケーションでエラーが 発 生 しまインデックスが 配 列 の 境 界 外 です が 出 る 場 合 がある 問 題 に 対 応 しま 2 仕 訳 入 力 仕 訳 入 力 主 科 目 と 補 助 科 目 を 固 定 にすると2 行 目 以 降 の 補 助 科 目 コピーが 動 作 しない 問 題 に 対 応

More information

03_主要処理画面.xlsx

03_主要処理画面.xlsx 見 積 受 注 入 力 見 積 と 受 注 は 同 じ 画 面 で 入 力 します 基 本 情 報 の 状 況 欄 で 見 積 か 受 注 かを 選 択 して 登 録 します 見 積 から 受 注 にかわったときは 見 積 伝 票 を 修 正 で 開 き 状 況 を 受 注 に 変 更 して 登 録 します 出 荷 する 倉 庫 や 納 期 は 明 細 行 ごとに 指 定 できます 受 注 の 場

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 定 型 カタログ 作 成 ツール CatalogPacker のご 紹 介 平 成 26 年 7 月 8 日 共 同 印 刷 株 式 会 社 トータルソリューションオフィス 藤 森 良 成 定 型 カタログ 作 成 ツール CatalogPacker の 概 要 CatalogPacker は 定 型 カタログを 製 作 を 行 うための Web to Print システムです Webブラウザ 上

More information

スライド 1

スライド 1 公 的 年 金 制 度 の 健 全 性 及 び 信 頼 性 の 確 保 のための 厚 生 年 金 保 険 法 等 の 一 部 を 改 正 する 法 律 について 厚 生 労 働 省 年 金 局 公 的 年 金 制 度 の 健 全 性 及 び 信 頼 性 の 確 保 のための 厚 生 年 金 保 険 法 等 の 一 部 を 改 正 する 法 律 ( 平 成 25 年 法 律 第 63 号 )の 概 要

More information

1級 ワンポイント

1級 ワンポイント 日 本 情 報 処 理 検 定 協 会 主 催 情 報 処 理 技 能 検 定 試 験 ( 表 計 算 ) ワンポイント 1 級 ( Microsoft Excel 2010 対 応 ) 2012 年 4 月 日 本 情 報 処 理 検 定 協 会 練 習 をはじめる 前 に... 3 試 験 前 にすること... 4 受 験 番 号 名 前 の 入 力... 4 試 験 本 番... 4 注 意

More information

「1 所得税及び復興特別所得税の確定申告書データをお持ちの方」からの更正の請求書・修正申告書作成編

「1  所得税及び復興特別所得税の確定申告書データをお持ちの方」からの更正の請求書・修正申告書作成編 既 に 提 出 した 所 得 税 及 び 復 興 特 別 所 得 税 の 確 定 申 告 の 申 告 額 に 誤 り があった 場 合 で 納 める 税 金 が 多 すぎた 場 合 や 還 付 される 税 金 が 少 なす ぎた 場 合 に 提 出 する 更 正 の 請 求 書 や 申 告 をした 税 額 等 が 実 際 より 少 な すぎた 場 合 や 還 付 される 税 金 が 多 すぎた 場

More information

Word 003 スキルブック 06 - オブジェクトの 利 用 0.Word で 作 る 表 : 行 幅 を 最 小 値 より 小 さく 設 定 する 3 表 の 左 右 のサイズを 適 宜 調 整 します Word で 表 を 作 成 するとき, 列 幅, 行 幅 ともに 基 本 的 に 自 由

Word 003 スキルブック 06 - オブジェクトの 利 用 0.Word で 作 る 表 : 行 幅 を 最 小 値 より 小 さく 設 定 する 3 表 の 左 右 のサイズを 適 宜 調 整 します Word で 表 を 作 成 するとき, 列 幅, 行 幅 ともに 基 本 的 に 自 由 Word 003 スキルブック 06 - オブジェクトの 利 用 Word 003 スキルブック 06 - オブジェクトの 利 用 ツールバーに 表 ( 罫 線 )の 作 成 機 能 を 追 加 する( 罫 線 ツールバーを 追 加 する) ツールバー 上 の,アイコンのない 空 白 箇 所 を 右 してメニューを 開 きます 0. 準 備 :ツールバーのカスタマイズ メニュー 内 の 罫 線 の

More information

ワープロソフトウェア

ワープロソフトウェア プレゼンテーションソフト (PowerPoint) プレゼンテーションソフト プレゼンテーションソフト 発 表 会 や 会 議 などで 使 用 する 資 料 を 作 成 表 示 するため のアプリケーションソフト PowerPoint Microsoftによって 提 供 されているプレゼンテーションソフト 比 較 的 簡 単 に 見 映 えのするスライドが 作 れる 2 PowerPointの 起

More information

4 応 募 者 向 けメニュー 画 面 が 表 示 されます 応 募 者 向 けメニュー 画 面 で [ 交 付 内 定 時 の 手 続 を 行 う] [ 交 付 決 定 後 の 手 続 を 行 う]をクリックします 10

4 応 募 者 向 けメニュー 画 面 が 表 示 されます 応 募 者 向 けメニュー 画 面 で [ 交 付 内 定 時 の 手 続 を 行 う] [ 交 付 決 定 後 の 手 続 を 行 う]をクリックします 10 2 科 学 研 究 費 助 成 事 業 のトップページ 画 面 が 表 示 されます [ 研 究 者 ログイン]をクリック します 掲 載 している 画 面 は 例 示 です 随 時 変 更 されます 3 科 研 費 電 子 申 請 システムの 応 募 者 ログイン 画 面 が 表 示 されます e-rad の ID パ ス ワード を 入 力 し [ログイン]をクリックします 9 4 応 募 者

More information

研究者情報データベース

研究者情報データベース 研 究 者 情 報 管 理 システム 研 究 者 向 けデータ 一 括 登 録 機 能 操 作 マニュアル 2013 年 6 月 4 日 目 次 1. はじめに... 1 1.1 本 マニュアルの 注 意 事 項... 1 2. 操 作 手 順... 2 2.1 データ 登 録 手 順... 2 2.2 データ 読 み 込 みエラー 時 の 対 応 手 順... 13 3. 登 録 データ 一 覧...

More information

情報処理技能検定試験 表計算2級 手順書

情報処理技能検定試験 表計算2級 手順書 日 本 情 報 処 理 検 定 協 会 主 催 情 報 処 理 技 能 検 定 試 験 ( 表 計 算 ) ワンポイント 2 級 (Microsoft Excel 2010 対 応 ) 2012 年 4 月 日 本 情 報 処 理 検 定 協 会 練 習 をはじめる 前 に 3 試 験 前 にすること 4 受 験 番 号 名 前 の 入 力 4 試 験 本 番 4 注 意 すること 4 試 験 後

More information

卒業論文フォーマットの設定方法

卒業論文フォーマットの設定方法 目 次 つき 文 書 ( 卒 業 論 文 など)の 書 式 設 定 三 池 克 明 本 テキストは Microsoft Word 2010 にて 卒 業 論 文 など 目 次 やページ 番 号 が 必 要 な 文 書 を 執 筆 するにあたり,1 書 式 等 の 設 定 方 法,2ページ 番 号 の 自 動 割 り 振 り,3 章 節 項 の 番 号 の 割 り 当 て,4 目 次 の 自 動 生

More information

(Microsoft PowerPoint -

(Microsoft PowerPoint - 図 面 作 成 は 各 ユーザ 様 の 各 規 定 によって 異 なってきますが その 中 でも 共 通 して 使 用 されると 思 われる 幾 つかの 機 能 作 成 方 法 についてご 紹 介 します オリジナル 図 面 シートの 作 成 について 図 面 シートの 作 成 新 規 のドラフトファイルを 開 き メインメニューの ファイル-シートの 設 定 ダイアログボックスの サイズ タブから

More information

083-089_ZEI-0329_特集(朝倉)_プ2.indd

083-089_ZEI-0329_特集(朝倉)_プ2.indd PART2 別 表 はココを 確 認 しよう! 法 人 税 申 告 書 の 提 出 前 チェック 外 国 税 額 控 除 103,681,500 税 理 士 法 人 トーマツ 税 理 士 朝 倉 歩 3,500,000 25,800,000 20,000,000 23,888,655 3,500,000 Check4 93,681,500 Check1 10,000,000 A 国 事 業 所 得

More information

Microsoft Word - 203MSWord2013

Microsoft Word - 203MSWord2013 3.1 Word 2013 の 起 動 第 3 章 ワープロ 1.Word 2013 の 起 動 (1)マウスの 左 ボタンでスタートボタンをクリックします (2)[すべてのプログラム] [Microsoft Office 2013] [Word 2013]の 順 にマウスをクリックすると Word 2013 の 初 期 画 面 ( 図 3-1)が 開 かれます クイックアクセスツールバー タイトルバー

More information

Microsoft Office Excel2007(NO.2エクセル初級後編)

Microsoft Office Excel2007(NO.2エクセル初級後編) 目 次 序 章... 1 エクセル 2007 初 級 ( 後 編 ) の 目 的... 1 エクセル 2007 初 級 ( 後 編 )について... 2 表 の 編 集 ( 後 編 その1)... 2 シートの 操 作... 2 基 本 の 計 算 式 ( 後 編 )... 3 印 刷 の 基 本... 3 グラフ 作 成 の 基 本... 3 第 1 章 表 の 編 集 ( 後 編 その 1)...

More information

1.2. ご 利 用 環 境 1.2.1. 推 奨 ブラウザ Internet Explorer 10 11 Google Chrome(バージョン 32 時 点 で 動 作 確 認 済 み) Mozilla Firefox(バージョン 26 時 点 で 動 作 確 認 済 み) Safari 7

1.2. ご 利 用 環 境 1.2.1. 推 奨 ブラウザ Internet Explorer 10 11 Google Chrome(バージョン 32 時 点 で 動 作 確 認 済 み) Mozilla Firefox(バージョン 26 時 点 で 動 作 確 認 済 み) Safari 7 1. アーカイブデータベースを 検 索 / 閲 覧 する 1.1. データの 検 索 方 法 東 京 アーカイブ では 以 下 に 分 類 されるカテゴリの 画 像 データ 資 料 データを 閲 覧 できます 江 戸 城 浮 世 絵 双 六 和 漢 書 江 戸 東 京 の 災 害 記 録 絵 葉 書 写 真 帖 近 代 の 地 図 東 京 府 東 京 市 関 係 資 料 番 付 建 築 図 面 書

More information

WEB版「新・相続対策マスター」(ご利用の手引き)

WEB版「新・相続対策マスター」(ご利用の手引き) WEB 版 新 相 続 対 策 マスター ご 利 用 の 手 引 き 株 式 会 社 シャフト MG-16-0412 はじめに WEB 版 新 相 続 対 策 マスター( 以 下 本 シミュレーション)をご 利 用 にあたり 下 記 についてあらかじめ 承 諾 をいただいた 上 で 本 シミュレーションを 利 用 いただくものとします 本 シミュレーションの 計 算 結 果 はあくまでも 概 算 です

More information

為 が 行 われるおそれがある 場 合 に 都 道 府 県 公 安 委 員 会 がその 指 定 暴 力 団 等 を 特 定 抗 争 指 定 暴 力 団 等 として 指 定 し その 所 属 する 指 定 暴 力 団 員 が 警 戒 区 域 内 において 暴 力 団 の 事 務 所 を 新 たに 設

為 が 行 われるおそれがある 場 合 に 都 道 府 県 公 安 委 員 会 がその 指 定 暴 力 団 等 を 特 定 抗 争 指 定 暴 力 団 等 として 指 定 し その 所 属 する 指 定 暴 力 団 員 が 警 戒 区 域 内 において 暴 力 団 の 事 務 所 を 新 たに 設 暴 力 団 員 による 不 当 な 行 為 の 防 止 等 に 関 する 法 律 の 一 部 を 改 正 する 法 律 暴 力 団 員 による 不 当 な 行 為 の 防 止 等 に 関 する 法 律 例 規 整 備 * 暴 力 団 員 による 不 当 な 行 為 の 防 止 等 に 関 する 法 律 の 一 部 を 改 正 する 法 律 例 規 整 備 公 布 年 月 日 番 号 平 成 24 年

More information

2 県 公 立 高 校 の 合 格 者 は このように 決 まる (1) 選 抜 の 仕 組 み 選 抜 の 資 料 選 抜 の 資 料 は 主 に 下 記 の3つがあり 全 高 校 で 使 用 する 共 通 の ものと 高 校 ごとに 決 めるものとがあります 1 学 力 検 査 ( 国 語 数

2 県 公 立 高 校 の 合 格 者 は このように 決 まる (1) 選 抜 の 仕 組 み 選 抜 の 資 料 選 抜 の 資 料 は 主 に 下 記 の3つがあり 全 高 校 で 使 用 する 共 通 の ものと 高 校 ごとに 決 めるものとがあります 1 学 力 検 査 ( 国 語 数 2 県 公 立 高 校 の 合 格 者 は このように 決 まる (1) 選 抜 の 仕 組 み 選 抜 の 資 料 選 抜 の 資 料 は 主 に 下 記 の3つがあり 全 高 校 で 使 用 する 共 通 の ものと 高 校 ごとに 決 めるものとがあります 1 学 力 検 査 ( 国 語 数 学 社 会 理 科 英 語 の5 教 科 ) すべての 高 校 で 資 料 とする 2 調 査 書 (

More information

<4D6963726F736F667420576F7264202D20819C486F70658F6F93588ED297708AC7979D89E696CA837D836A83858341838B8169342E33566572816A2E646F63>

<4D6963726F736F667420576F7264202D20819C486F70658F6F93588ED297708AC7979D89E696CA837D836A83858341838B8169342E33566572816A2E646F63> 商 品 管 理 商 品 管 理 を 行 うためのメニューです 4.1 商 品 管 理 のサイドメニュー 商 品 管 理 には 以 下 のサイドメニューがあります 商 品 一 覧 登 録 済 みの 商 品 の 一 覧 を 表 示 します 既 に 登 録 済 みの 商 品 の 検 索 検 索 した 商 品 を 編 集 する 際 に 使 用 します 新 規 作 成 商 品 を 新 規 登 録 する 画 面

More information

< 現 在 の 我 が 国 D&O 保 険 の 基 本 的 な 設 計 (イメージ)> < 一 般 的 な 補 償 の 範 囲 の 概 要 > 請 求 の 形 態 会 社 の 役 員 会 社 による 請 求 に 対 する 損 免 責 事 由 の 場 合 に 害 賠 償 請 求 は 補 償 されず(

< 現 在 の 我 が 国 D&O 保 険 の 基 本 的 な 設 計 (イメージ)> < 一 般 的 な 補 償 の 範 囲 の 概 要 > 請 求 の 形 態 会 社 の 役 員 会 社 による 請 求 に 対 する 損 免 責 事 由 の 場 合 に 害 賠 償 請 求 は 補 償 されず( 別 紙 2 会 社 役 員 賠 償 責 任 保 険 (D&O 保 険 )の 実 務 上 の 検 討 ポイント 第 1 会 社 役 員 賠 償 責 任 保 険 (D&O 保 険 )の 概 要 会 社 役 員 賠 償 責 任 保 険 ( 以 下 D&O 保 険 ) とは 保 険 契 約 者 である 会 社 と 保 険 者 である 保 険 会 社 の 契 約 により 被 保 険 者 とされている 役 員

More information

弁護士報酬規定(抜粋)

弁護士報酬規定(抜粋) はなみずき 法 律 事 務 所 弁 護 士 報 酬 規 定 ( 抜 粋 ) 2008 年 10 月 改 訂 2014 年 4 月 * 以 下 の 弁 護 士 報 酬 は いずれも 税 込 です ただし D E L の2の 表 に 基 づき 算 出 さ れた 金 額 については 消 費 税 を 上 乗 せした 額 を 弁 護 士 報 酬 とします 目 次 A 法 律 相 談 料 B 顧 問 料 C 手

More information

確 定 申 告 書 作 成 システム 操 作 手 順 書 ~ 個 人 利 用 者 向 け 操 作 説 明 書 ~ 平 成 27 年 1 月 JA 長 野 県 営 農 センター ( 株 ) 長 野 県 協 同 電 算 目 次 1.システムの 起 動... 1 ... 1 ... 2 2.ログインとログアウト... 2 ... 3 ...

More information

日 付 部 分 を 入 力 する 今 回 は 3 月 のカレンダーを 作 ります 3 月 は 水 曜 日 からはじまりますので 1 水 曜 日 第 1 週 目 にあたるセル D2 に 1 その 隣 の E2 に 2 と 入 力 しましょう 2 1 2 と 入 力 したセル D2:E2 をドラッグして

日 付 部 分 を 入 力 する 今 回 は 3 月 のカレンダーを 作 ります 3 月 は 水 曜 日 からはじまりますので 1 水 曜 日 第 1 週 目 にあたるセル D2 に 1 その 隣 の E2 に 2 と 入 力 しましょう 2 1 2 と 入 力 したセル D2:E2 をドラッグして デジカメ 写 真 を 使 ったカレンダー 作 り 今 回 このテキストでは Word2003 Excel2003 の 画 像 を 使 って 説 明 していますが 中 の 手 順 の 説 明 は どのバージョンをお 使 いの 方 でも 対 応 ができるようにしています 新 しいバージョンで 簡 単 にできる 作 業 もありますが ご 了 承 ください Excel でカレンダー 部 分 を 作 る Excel

More information

TIPS - 棚 割 りを 開 始 するまで Liteを 起 動 し 企 業 情 報 の 追 加 を 行 い 棚 割 を 行 う 企 業 の 追 加 をして 下 さい 企 業 情 報 の 追 加 時 に エラーメッセージが 表 示 された 場 合 別 途 TIPS トラブルが 発 生 した 場 合

TIPS - 棚 割 りを 開 始 するまで Liteを 起 動 し 企 業 情 報 の 追 加 を 行 い 棚 割 を 行 う 企 業 の 追 加 をして 下 さい 企 業 情 報 の 追 加 時 に エラーメッセージが 表 示 された 場 合 別 途 TIPS トラブルが 発 生 した 場 合 TIPS 目 次 TIPS 項 目 棚 割 りを 開 始 するまで 商 品 画 像 の 追 加 方 法 商 品 情 報 の 一 括 更 新 登 録 方 法 棚 割 情 報 の 連 携 方 法 小 売 様 棚 割 ソフトとの 棚 割 情 報 連 携 について 他 棚 割 ソフトとの 棚 割 情 報 連 携 について 棚 割 情 報 のExcel 取 込 について 棚 板 設 定 の 詳 細 商 品 設

More information

一般競争入札について

一般競争入札について ( 一 般 競 争 入 札 ) 総 合 評 価 落 札 方 式 ガイドライン 平 成 21 年 4 月 ( 独 ) 工 業 所 有 権 情 報 研 修 館 1.はじめに 現 在 公 共 調 達 の 透 明 性 公 正 性 をより 一 層 めることが 喫 緊 の 課 題 とな っており 独 立 行 政 法 人 も 含 めた 政 府 全 体 で 随 意 契 約 の 見 直 しに 取 り 組 んで おります

More information

平成27年度大学改革推進等補助金(大学改革推進事業)交付申請書等作成・提出要領

平成27年度大学改革推進等補助金(大学改革推進事業)交付申請書等作成・提出要領 平 成 7 年 度 大 学 改 革 推 進 等 補 助 金 ( 大 学 改 革 推 進 事 業 ) 交 付 申 請 書 等 作 成 提 出 要 領 交 付 申 請 等 に 当 たっては 大 学 改 革 推 進 等 補 助 金 ( 大 学 改 革 推 進 事 業 ) 取 扱 要 領 ( 以 下 取 扱 要 領 という ) も 参 照 の 上 以 下 の 関 係 書 類 を 作 成 し 各 大 学 短

More information