カテゴリー別アーカイブ: AH Formatter

Web Interface for Formatter V6.0 を近日リリース

Web Interface はリモートマシンにインストールした AH Formatter を、クライアント側で使うことができるソフトウェアパッケージです。

Web Interface for Formatter V6.0

Web Interface for Formatter

新しく開発した V6.0 は、U.S. のサポートチームがお客様の要望を聞き、製品をカスタマイズしたことから生まれました。

今までの Web Interface for Formatter 5.x は Window 版のみ対応、送信するコマンドは標準の JavaScript (ECMAScript) をベース、サーバとクライアント間のメッセージは、SOAP/HTTP/HTTPS プロトコルを使って通信を行っていました。

あるお客様が、複数のクライアントが使うセントラルサーバーを、Unix のクライアントからも使えるようにしたかったことと、また、ある客様から、以前の Web Interface だと、ファイルと画像を zip して送る必要があり、またデバッグするのが難しく、もっと簡単な操作でできないかという声を聞きました。

そこで、U.S. のサポートチームは、サーバーとクライアントプログラムを JAVA で書き、異なるプラットフォームの相互間のコミュニケーションを可能にするプログラムを試作しました。また AH Formatter のコマンドラインクライアントと同じパラメタを用いたバイナリを提供し、インターフェイスは以前に AH Formatter のコマンドラインクライアントを使っていた方なら誰にでも馴みがあるものにしました。 更に、-xds-parse-media オプションによって、FO と一緒に使うことで、別途データ XML ファイルを用意することなく、参照するメディアファイルを自動的にアップロードすることができるようにしました。

しかし、今まで V5 でできていたことが V6 でできなくなるものがあってはいけないと、日本の開発で評価を開始、以前はできていたフォルダ監視サービスを新たに追加しました。Windows あるいは Unix のサービスとして起動し、指定されたフォルダを監視し、放り込まれたファイルをサーバへ送って変換結果を得ます。そしてこのプログラムを V6 としてリリースすることが決定されたわけです。

お客様の要望に沿うことを第一に考えて最良の製品の提供を心がけていますので、このように英語版が先にリリースとなり、後からドキュメント等翻訳して日本語版をリリースするといった商品も中にはあるわけです。

アンテナハウスはアメリカに販売の拠点とサポートの拠点を持ち、中国に開発の拠点、またアイルランドに開発の拠点があり、日々新しい製品の開発とお客様に最良のサービスの提供を心がけ、お客様をグローバルに支えていく企業です。

アンテナハウス海外サイト
http://www.antennahouse.com/

http://rainbowpdf.com/


「第7回 クラウドコンピューティング EXPO 秋」に出展

PAdESなど長期署名を体験できる

10月26日から幕張メッセで開催されます、「第7回 クラウドコンピューティング EXPO 秋」に出展いたします。
PDFの作成、加工ライブラリを、クラウドコンピューティングを利用したSaaSによるサービスや、特定のシステムまたは、アプリケーションに組み込み販売頂けるライセンスをご紹介いたします。

紹介製品: 長期署名ライブラリ、Server Based Converter、AH Formatter など
会  期: 2016年10月26日(水)~2016年10月28日(金) 10:00~18:00(28日のみ17:00まで)
場  所: 幕張メッセ アンテナハウスブース:4ホール NO:14-10
詳  細: http://www.cloud-japan.jp/aki/
お問い合わせ先: アンテナハウス(株)OEM営業グループ<oem@antenna.co.jp>

『サーバベース・コンバーター V6.0』最新版はもちろん、アンテナハウスの各種ライブラリー、発売したばかりのデスクトップ製品の最新版などを直接ご覧いただけます。ぜひ、お越しください。


AH Formatter 機能のご紹介:オーバープリントの設定

AH Formatter』では、V6.2 改訂2版よりオーバープリントが指定できるようになりました。
axf:overprint / CSS -ah-overprint(オンラインマニュアル)

『AH Formatter』のサンプルFO集には、
本機能が確認できるサンプル「オーバープリントの設定例(axf:overprint)」を掲載しております。

『AH Formatter』は主にバージョンアップのたびに機能強化や新機能の追加を行っています。
“あったら便利な機能” も既に追加されていることがございますので、
お気軽にサポートにお問い合わせください。
未実装の機能であれば、ご要望として承り、今後の開発の参考にさせていただきます。

『AH Formatter』の評価版は次のページよりお申し込みいただけます。ご興味のある方は是非お試しください。
AH Formatter 評価版のお申し込み

弊社ではご検討中のお客様向けに技術相談会を行っております。お気軽にお問い合わせください。
アンテナハウス システム製品技術相談会

 


XSL-FO&AH Formatter 使いこなし技のご紹介

『AH Formatter』のサンプルページでは、
「XSL-FO&AH Formatter 使いこなし技」と称して、
XSL-FO や『AH Formatter』を使いこなすための便利な小技・裏技を紹介しています。

今のところ次の2例のみですが、
今後 XSL-FO/CSS 及び『AH Formatter』ユーザ様のお役に立つよう増やしてまいります。

表の泣き別れを float で回避する例
keep-together.within-page=”always” の指定で改ページされる fo:table-row、fo:list-item のオーバーフローを回避する例

『AH Formatter』の評価版は次のページよりお申し込みいただけます。ご興味のある方は是非お試しください。
AH Formatter 評価版のお申し込み

弊社ではご検討中のお客様向けに技術相談会を行っております。お気軽にお問い合わせください。
アンテナハウス システム製品技術相談会

 


AH Formatter 機能のご紹介:<fo:page-sequence> の入れ子

AH Formatter V6.3』では、<fo:flow> 直下に <fo:page-sequence> を記述して入れ子にできるように拡張されました。
入れ子の <fo:page-sequence>(オンラインマニュアル)

また、<fo:flow> を省略した空の <fo-page-sequence> が許容されようになりました。

『AH Formatter』のサンプルページには、
本機能が確認できるサンプル「fo:page-sequence の入れ子と空の fo:page-sequence の設定例(fo:page-sequence)」を掲載しております。
オンラインマニュアルと併せてご覧ください。

『AH Formatter』の評価版は次のページよりお申し込みいただけます。ご興味のある方は是非お試しください。
AH Formatter 評価版のお申し込み

弊社ではご検討中のお客様向けに技術相談会を行っております。お気軽にお問い合わせください。
アンテナハウス システム製品技術相談会

 


AH Formatter 機能のご紹介:axf:border-wave-form

AH Formatter V6.3』では、border-style=”wave” の形状(波長と線幅)を axf:border-wave-form で指定できるようになりました。
axf:border-wave-form / CSS -ah-border-wave-form(オンラインマニュアル)

AH Formatter 組版例
– axf:border-wave-form を利用した組版例 –

『AH Formatter』のサンプルページには、
本機能が確認できるサンプル「波枠線と形状の指定例(border-style=”wave”)」を掲載しております。
オンラインマニュアルと併せてご覧ください。

『AH Formatter』の評価版は次のページよりお申し込みいただけます。ご興味のある方は是非お試しください。
AH Formatter 評価版のお申し込み

弊社ではご検討中のお客様向けに技術相談会を行っております。お気軽にお問い合わせください。
アンテナハウス システム製品技術相談会


CSS組版はどこまでいけるだろうか?

表題に関して、最近、参考になった話題をひとつ紹介します。併せてCSS組版の未来を少し考えます。

去る8月1日に、DITAユーザーズというメーリングリストに「CSS3 vs XSL-FO for PDF output」[1]という質問が投稿されました。

投稿者は、現在、SDL+AH XSL FormatterでDITAからPDFを作成している[2]とのことですが、次のようなストレートな質問をされました。

「XSL-FOは古くて頑丈です。CSSはひとあたりが良くて単純で、スタイルをWebと共有するのも簡単です。XSL-FOを使い続けることに未来がありますか? それともCSSに全面移行するべきでしょうか?」

XML組版といえば、ここ十数年XSL-FO一辺倒でしたが、CSSで組版できることへのアピールが増えてきました。製品もいくつかあります(弊社でも出しております)。このところ、DITAコミュニティでもCSS組版の話題が散見されるようになってきました。

この質問は、DITAユーザーズというディープなXMLユーザーのコミュニティで寄せられたもので、参加者は例えば書籍の組版をする人たちとは異なっています。しかし、投稿者の疑問はDITAユーザーに限らず、XMLやHTMLを使う人が共有されているものでしょう。

DITAユーザーズでは、直ちにクールな回答がいくつか寄せられました。

その中でもEliot Kimber氏の意見が参考になりました。Kimber氏は3月に来日されたのですが、その際に聞いたところ、「いま一番関心があるのはVivlioStylesのCSS組版」とのことで、大きな期待を寄せていました。そして、5月にサンフランシスコで開催されたCSSワーキング・グループのF2F会議にオブザーバーとして自ら参加したとのことです。氏のメーリングリストの意見を要約すると、次のようになります。

1. VivlioStyles、Prince、Antenna HouseのCSS組版は歩みを進めているが、CSSの印刷向けの機能が標準化されていないので、必然的にベンダー特有になっている。
2.CSS仕様に印刷向けの機能を入れることには、ブラウザベンダーが団結して反対しているので、標準化は難しそうだ。
3.CSSとXSL-FOの機能を比較してみれば、CSSではできないことがいろいろあることがわかるだろう。これは、だれも行ったことはなさそうだ。
4.CSSにはバージョンXというものはなく、モジュール毎に進化している。
5.ページ組版に特化したHTMLを作り、ブラウザのCSSとJavaScriptでそれを組版するのは確かに可能である。しかし、ブラウザとCSSが両方共進化している中で、それを実装してメンテナンスするのは容易ではないだろう。

氏の結論としては、予測可能な将来において、DITAコミュニティがXSL-FOに代えてCSS組版を採用するのは難しい、ということです。

CSSを組版に使うための根本の仕様は「CSS Paged Media Module Level 3」[4]です。これは1999年に「Paged Media Properties for CSS3」として最初のドラフトができてから何回となく改訂されています。最新は2013年3月版ですが、まだワーキングドラフトの段階から進んでいません。次のバージョンもEditor’s Draftとして用意されているところです。

新しいものを試してみたいという人はどこの世界にも一定数はいると思います。個人で試す範囲では、仕様がどうであろうとあまり関係は無いでしょう。しかし、その一線を超えて、実務の世界で積極的に使うにはまずCSS組版の仕様が勧告になることが前提になるでしょう。

現在のCSS組版は、各社それぞれが自己流の土台の上に築いている、というのが実態です。弊社は2006年からCSS組版の開発に取り組み、2009年に初版をリリースしました。CSS組版仕様の進展は、2006年に予想したよりも、残念ながら、遙かに遅かったと言わざるを得ません。その理由の一つに、CSS組版は、CSSの本流ではない、ということがあるのかもしれません。

弊社の立場としましては、CSSの仕様が勧告案(Candidate Recommendation)に進むのを待ちながら、着実に実装を進めていきたいと考えているところです。

[1] CSS3 vs XSL-FO for PDF output
[2] 同:Message 3
[3] 同:Message 7
[4] CSS Paged Media Module Level 3 W3C Working Draft 14 March 2013


XSLTを学ぶ (6) ステップの文法を追求する

第3回([1])と前回([2])でパスには「式の構成部品としてのパス」(ロケーションパス)と「パターンの記述のためのパス」(パターンパス)の2種類あること、そしてロケーションパスは式の一部でありxsl:要素のselect属性で使われること。パターンパスは、match属性で使われることを説明しました。

パスを構成する文法を調べると、ステップがその基本的な単位になっています。パスはステップを’/’で結合して構成します。

そこで、ステップについてもう少し詳しく調べてみます。

1. ロケーションパスのステップは、XPath仕様[3]で決まっています。第3回でステップの文法の入り口として、次の項を紹介しました。

[4] Step ::= AxisSpecifier NodeTest Predicate* | AbbreviatedStep

ステップは軸の指定子(AxisSpecifier)とノードテスト(NodeTest)とオプション(*)の述部(Predicate)、または、省略形(AbbreviatedStep)から構成します。

ステップの省略形は ‘.’(自分自身、self::node()の省略形)、または’..’(親、parent::node()の省略形)です。

[12] AbbreviatedStep ::= ‘.’ | ‘..’

軸の指定子の定義は、次のようになっています。

[5] AxisSpecifier ::= AxisName ‘::’ | AbbreviatedAxisSpecifier
[6] AxisName ::= ‘ancestor’ | ‘ancestor-or-self’ | ‘attribute’ | ‘child’ | ‘descendant’ | ‘descendant-or-self’ | ‘following’ | ‘following-sibling’ | ‘namespace’ | ‘parent’ | ‘preceding’ | ‘preceding-sibling’ | ‘self’

軸の指定子は、軸の名前(AxisName)と’::’または省略形の軸指定子(AbbreviatedAxisSpecifier)で、軸の名前は’ancestor’から’self’まで13種類あります。

[13] AbbreviatedAxisSpecifier ::= ‘@’?

省略形の軸指定子はなにも指定しないか’@’です。なにも指定しないとデフォルトはchild::です。
@はattribute::の省略形です。その他、’//’は/descendant-or-self::node()/の省略形とされています(規則[11]省略)。

NodeTest以下は次のようになっていますが、次回以降もう少し詳しく調べてみます。

[7] NodeTest ::= NameTest | NodeType ‘(‘ ‘)’ | ‘processing-instruction’ ‘(‘ Literal ‘)’
[37] NameTest ::= ‘*’ | NCName ‘:’ ‘*’ | QName  
[38] NodeType ::= ‘comment’ | ‘text’ | ‘processing-instruction’ | ‘node’

NCName、QNameはXML名前空間([4])で規定されています。

[8] Predicate ::= ‘[‘ PredicateExpr ‘]’
[9] PredicateExpr ::= Expr 

述部は式(Expr)を'[‘ ‘]’で囲ったものです。

2. パターンの構成要素であるステップ(ステップパターン)は、XSLT仕様([5])で決まっています。その文法は次の通りです。

[5] StepPattern ::= ChildOrAttributeAxisSpecifier NodeTest Predicate*
[6] ChildOrAttributeAxisSpecifier ::= AbbreviatedAxisSpecifier
| (‘child’ | ‘attribute’) ‘::’

NodeTest、Predicate、AbbreviatedAxisSpecifierはXPathのステップを参照しています。XSLT仕様はXPath仕様を利用して作られていることがよく分かります。

[1] XSLTを学ぶ(3)パスとは
[2] XSLTを学ぶ(5)パターンの記述のためのパス
[3] XML Path Language (XPath) Version 1.0
[4] Namespaces in XML 1.0 (Third Edition)
[5] XSL Transformations (XSLT) Version 1.0
[6] 『スタイルシート開発の基礎』

【広告】★AH Formatter XML関連出版物の紹介

次回:
XSLTを学ぶ(7)ステップの文法を追求する-軸とは

前回:
XSLTを学ぶ(5)パターンの記述のためのパス

初回:
XSLTを学ぶ(1)XMLのツリーモデルとXPath/XSLTのツリーモデルではルートの意味が違う


XSLTを学ぶ (5) パターンの記述のためのパス

前回[1]は、「式の構成部品としてのパス」を調べてみました。これはXPath仕様[2]で規定されているものです。

もう一つは、「パターンの記述のためのパス」があります。こちらはXSLT仕様[3]で規定されています。本書(『スタイルシート開発の基礎』[4])では、パターンについては、3.7.1 パタン(p.33)で触れています。しかし、パスの役割についてはあまり詳しく記述されていませんので、仕様書で少し詳しく調べてみます。

式は主にselectの属性の値として設定します。XSLT V1.0ではselect属性は次の要素に定義されています。

xsl:variable
xsl:param
xsl:apply-templates (ノード集合式のみ)
xsl:value-of (文字列式のみ)
xsl:with-param
xsl:sort (文字列式のみ)
xsl:copy-of
xsl:if(論理式のみ)
xsl:when(論理式のみ)
xsl:for-each(ノード集合式のみ)

パターンは、スタイルシート規則(xsl:template)のmatch属性の値として規定されています。これを含めてmatch属性が使えるのは次の三つの要素です。

xsl:template
xsl:key
xsl:number

XSLTのxsl:templateの説明の項(5 Template Rules)にはパターンについて書いてあります。それを読みますと、select属性の式は、主にソース文書から処理の対象とするノードのリストを作るのに使われるのに対して、パターンはノードに適用するテンプレート規則を識別するのに使うという関係のようです。

パターンの構文は、式の構文のサブセットです。具体的には次のようになっています。

[1] Pattern ::= LocationPathPattern
| Pattern ‘|’ LocationPathPattern

パターンは一つのロケーションパスパターンまたは、それを’/’オペレータでつなげたものです。

[2] LocationPathPattern ::= ‘/’ RelativePathPattern?
| IdKeyPattern ((‘/’ | ‘//’) RelativePathPattern)?
| ‘//’? RelativePathPattern

[3] IdKeyPattern ::= ‘id’ ‘(‘ Literal ‘)’
| ‘key’ ‘(‘ Literal ‘,’ Literal ‘)’

IDkeyPatternは式では出てきませんでしたが、IDまたはkeyとなっています。あとは式としてのロケーションパスの生成規則で出てきたもの(第(3)回[5]を参照)と大よそ対応しているようです。

[4] RelativePathPattern ::= StepPattern
| RelativePathPattern ‘/’ StepPattern
| RelativePathPattern ‘//’ StepPattern
[5] StepPattern ::= ChildOrAttributeAxisSpecifier NodeTest Predicate*
[6] ChildOrAttributeAxisSpecifier ::= AbbreviatedAxisSpecifier
| (‘child’ | ‘attribute’) ‘::’

ChildOrAttributeAxisSpecifierは、child軸とattribute軸のみになっています。

[1] XSLTを学ぶ (4) 式の構成部品としてのパスの使い方
[2] XML Path Language (XPath) Version 1.0
[3] XSL Transformations (XSLT) Version 1.0
[4] 『スタイルシート開発の基礎』
[5] XSLTを学ぶ (3) パスとは

【広告】★AH Formatter XML関連出版物の紹介

次回:
XSLTを学ぶ (6) ステップの文法を追求する

前回:
XSLTを学ぶ (4) 式の構成部品としてのパスの使い方

初回:
XSLTを学ぶ(1)XMLのツリーモデルとXPath/XSLTのツリーモデルではルートの意味が違う


XSLTを学ぶ (4) 式の構成部品としてのパスの使い方

前回[1]はパス(ロケーションパス)の構成法を学びました。続いてパスの使い方を調べてみます。

スタイルシートで重要な役割を果たす要素の一つにxsl:apply-templatesがあります。XSLT[2]の5.4 Applying Template Rulesを見ますと、xsl:apply-templatesの定義は次のようになっています。

<xsl:apply-templates
 select = node-set-expression
 mode = qname>
 <!– Content: (xsl:sort | xsl:with-param)* –>
</xsl:apply-templates>

select属性を省略すると、xsl:apply-templatesはカレントノードのすべての子供を処理します。select属性の値に式を記述することで、処理対象とするノードの集合を限定できます。この式はどのように評価されるのでしょうか?

XSLTの5.1 Processing Modelを読むと、ノードにmatchするテンプレート規則の中から、あるテンプレート規則が選択されると、テンプレート規則はそのノードをカレントノードとして起動されるとあります。

本書[3]には次のような例(2.18の一部)が出ています。

<xsl:template match=”body”>
 <fo:page-sequence master-reference=”main”>
  <fo:flow flow-name=”xsl-region-body”>
   <xsl:apply-templates select=”p”/>
  </fo:flow>
 </fo:page-sequence>
</xsl:template>

<xsl:template match=”p”>
 <fo:block>
  <xsl:apply-templates/>
 </fo:block>
</xsl:template>

最初のブロックのテンプレート規則(xsl:template)は、(要素ノード)bodyにmatchしています。従って、最初のブロックではbodyがカレントノードです。

XPath[4]の式は文脈ノードで評価されます。XSLTの4 Expressionsを見ますと、最も外側の式(ある式の一部でない式)は文脈を次のように取得します。

a. 文脈ノードはカレントノードから
b. 文脈ノードの位置は、カレントノードリストにおけるカレントノードの位置から
c. 文脈ノードの大きさは、カレントノードリストの大きさから

こうして、最初のxsl:apply-templatesのselect属性の値である式p(child::pの省略記法)の文脈ノードはbodyになることが分かります。こうしてselect属性によりbodyの子であるpを選択したノード集合を作ることになります。(bodyの子のpではない要素ノードや、bodyの兄弟p要素ノードは対象になりません)。

[1] XSLTを学ぶ (3) パスとは
[2] XSL Transformations (XSLT) Version 1.0
[3] 『スタイルシート開発の基礎』
[4] XML Path Language (XPath) Version 1.0

【広告】★AH Formatter XML関連出版物の紹介

次回:
XSLTを学ぶ(5)パターンの記述のためのパス

前回:
XSLTを学ぶ (3) パスとは

初回:
XSLTを学ぶ(1)XMLのツリーモデルとXPath/XSLTのツリーモデルではルートの意味が違う


Pages: Prev 1 2 3 4 5 6 7 8 9 10 ... 15 16 17 Next