カテゴリー別アーカイブ: XSL-FO・CSS

AH Formatter V6.3 公開!

アンテナハウス株式会社は、XML/HTML 自動組版ソフトのベストセラー『Antenna House Formatter』をバージョンアップした『Antenna House Formatter V6.3』を 2016年2月4日から出荷開始いたしました。

AH Formatter ロゴ

『AH Formatter』は XML で記述されたマニュアル、契約書、報告書・書籍などを XSL-FO または CSS を使ってレイアウト指定して、PDF に出力したり印刷するソフトウェアです。

XSL-FO は W3C が XML に対するレイアウト指定の標準として勧告している世界標準です。国内外で『AH Formatter』は最も優れた XSL-FO 準拠製品との評価を確立しており、現在、自動車、携帯電話、航空機、OA 機器のメーカ等のマニュアル制作システムなど数千社のお客様にお使いいただいています。

詳しくは製品ページをご覧ください。

AH Formatter フロー

続きを読む


組版した結果の文字位置が思い通りにならない―思いもよらない盲点

こんにちは。
AH Formatter』のサポート担当です。

お客様からのお問い合わせで、時々、
「組版した結果の文字位置が思い通りにならない」というのがあります。
詳しい状況をお聞きすると、FO は次のようになっていました。

<fo:block> AH Formatter について </fo:block>
<fo:block> AH Formatter V6.2 は、XSL-FOを使った組版や
CSSを使ったXML/HTMLが使える、組版・印刷ソフトウェアです。 </fo:block>

元々のデータでタイトルや段落中に空白や改行を使って位置を調整していたのでしょうね。
(XSLTスタイルシートでも空白の扱いは難しいですがここでは置いときます)

これをいざ組版してみたらどうなるでしょう。

組版結果

元々あった空白や改行は???

XSL-FO では次のような仕様があるのです。

7.16.7 “linefeed-treatment”
http://www.w3.org/TR/xsl11/#linefeed-treatment
Value: ignore | preserve | treat-as-space | treat-as-zero-width-space | inherit
Initial: treat-as-space
改行コード(U+000A)をどのように扱うかが定義されています。
初期値は “treat-as-space” ですので空白文字として扱われます。

7.16.8 “white-space-treatment”
http://www.w3.org/TR/xsl11/#white-space-treatment
Value: ignore | preserve | ignore-if-before-linefeed | ignore-if-after-linefeed | ignore-if-surrounding-linefeed | inherit
Initial: ignore-if-surrounding-linefeed
これは空白文字(U+0020)の扱いについてです。
初期値は “ignore-if-surrounding-linefeed” です。改行の前後の空白は無視されます。
行の最初と最後の空白は削除されたようになります。

7.16.12 “white-space-collapse”
http://www.w3.org/TR/xsl11/#white-space-collapse
Value: false | true | inherit
Initial: true
これは連続した空白の処理です。
初期値の “true” では、連続した複数の空白文字(U+0020)は一つの空白として扱われます。

まずは、このブロックから見ていきましょう。
<fo:block> AH Formatter について </fo:block>

white-space-collapse=”true” によって「AH Formatter について」の前後にある空白は1つにまとめられます。
次に、white-space-treatment=”ignore-if-surrounding-linefeed” によってその空白も削除されてしまいます。
white-space-collapse=”false” white-space-treatment=”preserve” を指定することで元々あった空白は残ります。

こちらのブロックは改行コードと空白が使われています。
<fo:block> AH Formatter V6.2 は、XSL-FOを使った組版や
CSSを使ったXML/HTMLが使える、組版・印刷ソフトウェアです。 </fo:block>

改行コードを有効にするためには、linefeed-treatment=”preserve” を指定します。

しかしながら、スタイルシートを使った組版はそもそも「コンテンツとレイアウトの分離」というのを
前提に考えることが重要ではないかと思います。
なので、空白文字を使った位置合わせ、というのはあまり望ましくないと感じています。

こうしたお問い合わせは意外と少なくありません。
本日のブログのタイトルは、長年サポートをやっておりますと、
こんな話は基本的なことだろうと思っていたのですが
思い込みは良くないというわたくしへの戒めでございます。

 


CSS を組版に使うときに注意すべきこと(入門編その2)

こんにちは、『AH Formatter』のサポート担当です。
前回、CSS でレイアウトを実現する上で注意すべき点を挙げてみました。[1]
おさらいすると、
・セレクタで対象を決めて、プロパティと値でスタイル付けすること
・セレクタは多重定義できること
・優先順位があること
などです。
優先順位は大雑把に言ってしまえば、
1.Style=””
2.idセレクタ
3.classセレクタ、属性セレクタなど
の順番に低くなります。

詳しい仕様は、
http://www.w3.org/TR/css3-selectors/
に載っています。
日本語の解説サイトもたくさんあります。
私もまだまだ勉強中です。

実際のところ、一番頻繁に使われているのは <div class=”~”> のタイプかと思います。
コンテンツを divタグで囲って classセレクタでレイアウトを指定します。

.hoge{
border-style:solid;
border-color:#fbbdaf;
border-width:10px 10px 10px 10px;
color:#000000;
font-size:90%;
padding:0.1em 0.4em;
}

<div class=”hoge”>
<p>Antenna House</p>
<p>AH Formatter</p>
</div>

出力結果

ネストしたdiv構造で次のようなケースはよくあります。

.default{
background-color: #900;
padding:10pt;
font-size:20pt;
}
.test{
color:red;
border-top-style:dotted;
border-top-width:10pt;
border-top-color:yellow;
}
.test2{
border-style:solid;
border-width:5pt;
}
.test3{
border-bottom-color:blue;
}

<div class=”default”>
<div class=”test test2 test3″>
<p>Antenna House</p>
</div>
</div>

この場合、競合したスタイルは、後から指定されたものが優先になります。
組版結果は次の通り。

出力結果

さらに、前回、同じセレクタに対して何度でも指定することができると書きました。
上記の例で、
.default{
background-color: #00EE40;
}
を追加したらどうなるでしょう。
この場合も後から定義されたものが有効になります。

次に、CSS が外部ファイルに定義されていて、
このふたつの defaultクラスが別々のファイル(”styleA.css” と “styleB.css”)に保存されていたら?

<link rel=”stylesheet” type=”text/css” href=”styleA.css” />
<link rel=”stylesheet” type=”text/css” href=”styleB.css” />

答えは、”styleB.css” の.default{ }が有効になります。
この順番が変わるだけで結果が違ってきてしまいますね。ああ恐ろしい。

実際にサポート業務をしていると、次のようなデータを見ることが多くあります。

<!DOCTYPE html>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”content-type” content=”text/html; charset=utf-8″/>
<title>Test</title>
<link rel=”stylesheet” type=”text/css” href=”style-A.css” />
<link rel=”stylesheet” type=”text/css” href=”style-B.css” />
.
.
.
<link rel=”stylesheet” type=”text/css” href=”style-X.css” />
<link rel=”stylesheet” type=”text/css” href=”style-Y.css” />
<link rel=”stylesheet” type=”text/css” href=”style-Z.css” />

</head>
<body>
<h1>Test</h1>
<div class=”A B C D”>
<div class=”E F G”>
<div class=”H I J K L M N” id=”sample”>
<div class=”O”>
<p>………</p>
<ol class=”M A Z”>
<li>……</li>
<li>……</li>
<li>……</li>
</ol>
</div>
</div>
</div>
</div>
</body>
</html>

こんな状態でレイアウトを変更しようとなった時に、
どこを変更したらいいかをすぐに判断するのは難しいですね。
CSS はレイアウトを分離して共通化して運用できるのでとても便利ですが、
複数の開発者が共有するような場合には工夫しないと破綻してしまいそうです。
設計段階での明示的なルール決めと共に、
シンプルなオーサリングやレイアウト設定が必要になります。

続きのお話はまたいずれ。

[1] CSS を組版に使うときに注意すべきこと(入門編)


弊社プレゼンテーション資料のご紹介(XML London 2015)

2015年6月6日~7日にロンドンで開催された XML カンファランス(XML London 2015)にて、弊社の Tony Graham は、XSL FO チュートリアルセッションで「XSLT and XSL FO Toolbox of Tips and Tricks」(XSLT と XSL-FO の実践のためのコツとヒント)を発表しました。

その内容は、主に多様な言語で記述されている世界人権宣言(UDHR in Unicode)を用いて、スタイルシートや XSL-FO を開発する流れを説明したものです。『AH Formatter』や『Antenna House リグレッションテストシステム(PDF 高速自動比較ツール)』、『focheck』など弊社製品のみでなく、様様なツールを用いて実践的な解決策を示しています。

資料(PDF)は英語になってしまいますが、よろしければご覧ください。
XSLT and XSL FO Toolbox of Tips and Tricks

XML London 2015 の出展レポートは既にブログに掲載しております。あわせてご覧いただければ幸いです。
海外出展レポート XML London 2015 その1その2

 


海外出展レポート XML London 2015 その2

Tony Graham はこのカンファランスの XSL FO チュートリアルセッションで XSLT と XSL-FO の実践のためのコツとヒントについての発表も行いました。

およそ 400言語に翻訳されている世界人権宣言(UDHR)の様々な言語のユニコードテキストを用いて、FO を作成するサンプルなどを紹介しています。

発表資料はこちらからダウンロード可能です。
http://www.antenna.co.jp/AHF/ahf_jirei/pdf/2015/tips-and-tricks.pdf

トニーグラハムの経歴
Tony Graham は1991年よりマークアップに関わり、1996年からは XML に、そして1998年からはXSLT/XSL-FO に従事している。現在 W3C の Print and Page Layout Community Group の議長を務めている。以前は W3C の XSL-FO 仕様を策定する XML Print and Page Layout Working Group (XPPL) の招待エキスパートであり、また同時に XSLT のエキスパートであり、stf スキマトロン テスティング フレームワークの開発者であり、Antenna House focheck XSL-FO 検証ツールの開発者であり、XSpec および Juxy XSLT テストフレームワークのコミッターであり、「Unicode: A Primer」の著者である。
Tony の XML と SGML のキャリアは日本、USA、イギリス、アイルランドで培われ、また扱った言語は英語、中国語、日本語、韓国語で、教育界、自動車産業、出版、ソフトウェア、通信機器業界など様々な分野に関わっている。
2014年11月より、アンテナハウス(株)にシニア・アーキテクトとして勤務。 AH Formatter、 クラウドオーサリングサービス、その他関連製品に携わり、XSL-FO, XSLTのコン サルティングサービスを担当している。

US 営業グループ
アンテナハウス海外サイト
http://www.antennahouse.com/
http://rainbowpdf.com/


海外出展レポート XML London 2015 その1

6月6-7日、 ロンドンで XMLカンファランス (http://xmllondon.com/) が開催されました。弊社からは、アイルランド在住のTony Graham がプレゼンを行いました。

“RELAX NG(リラクシング)” と “Schematron(スキマトロン)” を組み合わせて XSL-FO のマークアップの妥当性をチェックする方法について、述べました。
RELAX NG は、構造的な検証を処理し、Schematron は RELAX NG では表現できない制約条件を処理します。

この機能は oXygen XML エデイタのアドオンとして、Schematron と RELAX NG を使って XSL-FO の詳細な検証を行う” focheck “として開発されました。focheck (オープンソース)は、GitHub よりご利用可能です。Oxygen の追加のアドオンフレームワークとしてインストールすることが可能です。もちろん、oXygen とは独立して focheck の RELAX NG と Schematron を使用することも可能です。

focheck – Validate XSL-FO and Antenna House extensions in oXygen or standalone
https://github.com/AntennaHouse/focheck

AH Formatter は、組版結果をより精度の高いものに仕上げるため、XSL 1.1標準の他に弊社独自の拡張機能を実装しています。この拡張機能の妥当性も RELAX NG と Schematron の組み合わせにより、チェックすることが可能となっています。

アドオンフレームワークの使用方法について、日本語のリードミーもご用意しました。是非お試しください。

明日はXML London で Tony Graham が行ったもう一つのプレゼンについてお伝えします。

US 営業グループ
アンテナハウス海外サイト
http://www.antennahouse.com/
http://rainbowpdf.com/


CSS を組版に使うときに注意すべきこと(入門編)

こんにちは、『AH Formatter』のサポート担当です。
今回はCSSのお話です。
CSS3ではページの概念が追加され、html+cssでもPDF化や印刷時に見栄えのいい結果が得られるようになりました。
『AH Formatter』でCSSを組版されるお客様も徐々に増えてきました。

CSSはパッと見、とても簡単そうです。
書き方はこんな感じです。

セレクタ{
 プロパティ:値;
 プロパティ:値;

セレクタでスタイル付けしたい対象を指定します。
対象を決めて、どんなスタイルにしたいかをプロパティ名と値のセットで指定します。基本はこれだけ。
例えば、

p {
 font-size:10pt;
 color:red;
 }

のようにするだけです。
セレクタというのは、このようにタグを直接指定して使う要素型セレクタもありますが、
他にも様々な種類があります。
classセレクタ、idセレクタ、擬似要素セレクタ、属性セレクタなどです。
一般的にはclassを使うことが多いですが、複合して使うこともできます。
仕組みとしてはとても単純ですが、管理していくことが非常に難しい。
そして、何か問題があったときに原因箇所を探るのがこれまたもっと難しい。
何故かと言えば、

・スタイルの定義を複合的に指定できること
・同じセレクタで何度でも多重に定義できること
・スタイルには子要素まで継承されるものがあること
・スタイルには優先順位があること

などが理由です。

例えば、

<p id=”abc” class=”aaa bbb ccc”>Antenna House</p>

/* CSS */
/* 要素型セレクタ */
p {
color:red;
}

/* idセレクタ(p要素のみ) */
p#abc {
color:blue;
}

/* idセレクタ(要素特定なし) */
#abc {
color:green;
}

/* classセレクタ(p要素のみ) */
p.aaa {
color:yellow;
}

/* classセレクタ(要素特定なし) */
.bbb {
color:pink;
}

/* 全称セレクタ */
* {
color:black;
}

/* classセレクタ */
.bbb {
color:white;
}

こーんな感じでCSSは定義できます。
さて、ここで問題です。この場合何色で表示されるでしょう~か?

正解は、青(blue)です。
上記の場合、要素を特定したidセレクタが優先されます。
この優先度のルールを把握するだけでも大変です。
(さらに最優先される “!important” なんて厄介な奴がおります。)

このCSSで
“bbb”のクラスが2回定義されていること、気がつきましたか?
そう、”同じセレクタで何度でも”です。いいんです、CSSでは。
前の定義を残しつつ、ちょっと追加してレイアウト変更しよう、なんてことも可能ですが、
こうしてるうちにCSSはどんどん膨大なものになっていきます。

それから、この例ではid名やclass名に”abc”や”aaa”なんて適当に書いてますが、
名前付けルールも「自由」です。
なんでもいいんです。これってとても怖いことです。
こんな風に適当に付けてたらそのうち破綻するの、目に見えてますよね。
名前にしろ、多重定義にしろ、自由すぎるにも程があります。

だから、ちゃんとルールを決めてやりましょう、っていう方法論が
たくさん考えられています。
裏を返せば、それだけ皆さん破綻しないために苦労されているってことですね。

複雑化したCSSはトラブルの元、です。
開発もメンテナンスも(そしてサポートも)XSL-FOの数倍の時間を必要とします。
『AH Formatter』では、CSSの組版はシンプルな構造、シンプルなレイアウトをお勧めします。
マニュアルなどの複雑なレイアウトにはXSL-FOでの組版が向いています。

続きのお話はこちらです:CSS を組版に使うときに注意すべきこと(入門編その2)


“focheck” – XSL-FO と AH Formatter 拡張仕様の検証ツールを公開!

XSL-FO と『AH Formatter』拡張仕様の妥当性を検証する “oXygen” のアドオンとして、このたび弊社開発の『focheck』(オープンソース)が GitHub より利用可能になりました。
focheck – Validate XSL-FO and Antenna House extensions in oXygen or standalone

※ 『focheck』は、”oXygen XML Editor” 上で XSL-FO の詳細な妥当性チェックをするために “Relax NG(リラクシング)” と “Schematron(スキマトロン)” をバンドルしています。

※ 『focheck』は開発進行中の製品です。そのためまだすべての XSL-FO プロパティの解析や、XSL-FO 仕様の試験を終えていません。ご要望やお気付きの点がございましたら、なにとぞお知らせくださいますようお願い申し上げます。


[海外営業レポート] ページメディア出力と XSL-FO の未来について(2)

さて昨日の続きです。

Thad は正しかったのです。12年間でアンテナハウスは40か国以上のあらゆる産業界、政府機関で、またXSL-FO が利用されるだろうと想像さえできなかったアプリケーション向けに、数千本ものライセンスを販売しました。

今日 XSL-FO はビジネス文書、ドライバーライセンス、電車のチケット、映画の台本、視聴覚障害者向け印刷物、注文書などなどあらゆる分野での文書の出力に利用されています。

古いシステムからページをよりモダンに改革しようとする企業はますます増えていて、それに伴って XSL-FO の利用がますます増え、少ない割合ですが CSS も使われています。DITA への関心も深まり、2007年にDITA カンファレンスが開催された時に比べたら、DITA  関連の XSL-FO の販売実績は非常な割合で伸びています。
将来的に、ページ出力は情報配布の方法としてはかなり重要な要素であり続けると考えます。XSL-FO はそのような配布手段の最も有力な標準仕様であり、ページ出力に限っては XSL-FO にとって代わるものは現れないだろうと思います。またCSSも成長しうる出力の仕様だと思います。
2025年の予想としては、依然として XSL-FO と CSS は一日に何百万ものページを生産し続けているのではないかと思います。

US 営業グループ
アンテナハウス海外サイト
http://www.antennahouse.com/
http://rainbowpdf.com/


[海外営業レポート] ページメディア出力と XSL-FO の未来について(1)

冬季はカンファランスがあまり開催されないのですが、それでも XML Prague と Vasont Users Group、2つのイベントに参加してきました。

DCLabs の最近の調査によると、PDF 出力とページ組版は回答者の90%以上が主な配布方法であると回答しています。XSL-FO は依然としてページメディア出力の手段であると認識されています。このことは epubs や ebooks を取り巻く活発な活動レベルを考えたとき、非常に意味があることだと思います。

12年前の2003年、アンテナハウスが海外で XSL Formatter を売り出そうとアメリカに事務所を開設した時、欧米ではページ印刷の歴史は Johannes Gutenberg (ヨハネス・グーテンベルク)が1440年に活版印刷技術を発明した時に遡り500年以上にもなります。

2003年当時、続く500年がどうなるかなど考えられなかったですが、せめて20年間はアンテナハウスが XSL-FO とページ出力の方向を貫いていけるかどうかを考えていました。
2003年当時、XSL-FO は2年間ほど W3C の勧告となっていました。そして、DITA は全く出始めたばかりでした。最初の DITA North America Conference は2007年まで開催されませんでした。その頃は、情報伝達の代替えの手段がいくらか動きを見せだしたとはいえ、紙のページの需要は永久に続くだろうと推測していました。

2004年に Thad McIlroy、出版業界のエキスパートが Gilbane レポートで次のように予想をしました。

XSL-FO はかなり注目され採用されるだろう。なせなら、XML (そしてさらに重要な XSLT )はあらゆる分野の産業で広く定着し、どんなビジネスプロセスの展望においてもベンダーによる、手厚いサポートがあるからである。XSLT を扱うことは開発者が FOを実装できるようになるための大きなステップとなり、そのことは、標準を推進していくエネルギーと経験となるだろう

続きは明日投稿します。

US 営業グループ
アンテナハウス海外サイト
http://www.antennahouse.com/
http://rainbowpdf.com/


Pages: Prev 1 2 3 4 5 Next