#ソフトウェア

XSLT3.0への道(23) 配列型(オマケ)

前にも述べましたがXSLT 3.0の「高階関数」の機能はオープンソースのSaxon HEでは使えません.と思っていたら最新のoXygenで外部プラグインとして、最新の9.7.0.15が使用できるとのメールがありました.早速ダウンロードして見ると次のように組み込むことが…

XSLT3.0への道(22) 配列型

次々と技術が進化するのでとてもキャッチアップできませんが、2月7日はXSLT 3.0にとって特別な日になったようです. XSL Transformations (XSLT) Version 3.0 W3C Candidate Recommendation 7 February 2017 https://www.w3.org/TR/2017/CR-xslt-30-20170207…

HTMLから覗き見るCSS組版とXSL-FO組版

DITAのHTMLへの変換をやっていてしみじみわかるのですが、HTMLへの変換をカスタマイズするのにCSSをちょこちょこっと修正して、それが一発で生成したHTMLに反映されるのはある意味「快感」です.何かとても自分がすべてをコントロールしているように思えてく…

DITA-OT標準のリテラル文字列を変更/追加する

ずっとXL-FO⇒PDF一本でしたが最近はHTMLもやっています.HTMLというとDITA-OTについてくるプラグインはまだまだそっけないですが、oXygenについてくるWeb Helpはそこそこの見栄えもあって完成度も高く、使用しておられるお客様も多いようです. さて、Web He…

XSLT3.0への道(21) マップ

プログラミングで良く使用するデータ構造に、キーと値の関連性を保持するものがあります.多くのプログラミング言語ではmapという名前でこの機能をサポートしています.XSLT 3.0でもmapという「データ型」がサポートされるようになりました.今回はこれを簡…

DITA 1.3の見果てぬ夢(3)

2014年の11月に行われたDITA Festa 2014で、DITAコンソーシアムジャパンのIA部会のプレゼンがありました.そこでは(その時はまだ来るべき)DITA 1.3の様々な特徴が紹介されました.そのひとつに「分冊間参照(異なる分冊同士のリンク)がDITA 1.3では出来る…

DITA 1.3の見果てぬ夢(2)

次の問題はDITA 1.3で導入されたキースコープです.DITA 1.2ではキーが使用できるようになり、@keysでキーを定義し、@keyrefでテキストコンテンツを参照したり、@conkeyrefでキーを使って間接的にコンテンツを参照できました.しかし問題は@keysの定義はグロ…

DITA 1.3の見果てぬ夢(1)

DITA 1.3がOASIS標準となったのは2015年12月17日でした.それからもう1年弱が経とうとしています.私見ですが、DITA 1.3とそのインプリメント状況にはいまだにわからないことがよくあります.私の考えが間違っているのかもしれませんが、この1年近くいろいろ…

Dita Festa2016

今年もDITAコンソーシアムのDITA Festa 2016が12月7日(水)- 12月9日(金)に開催されます.以下に予告の基調講演、技術講演、ユーザー事例の予告が発表されています. Dita Festa2016 予告 http://dita-jp.org/?page_id=1910#post-1910 とても貴重な報告になり…

辞書でピンインを求める

直接DITAと関係はないのですが、中国語簡体字の文字列比較の話を書きましたので、実際そこで書いた 1. 文字列が与えられる. 2. これを単語に分けて辞書を引き、正確なピンインを求める. 3. 単語の各文字単位に「ピンイン(拼音)/画数/部首/GB0のコード」…

中国語簡体字のコレーション

dita-usersにEliot Kimberさんが辞書ベースで単語のピンインを求めてソーティングに使用できる中国語簡体字のコレーターを開発したとのポストがありました. New DITA Community Project: org.dita-community.i18n https://groups.yahoo.com/neo/groups/dita…

tableを本文領域いっぱいに広げる table/@pgwide="1"

久しぶりに自分でオーサリングして、自分でスタイルシートをインプリメントしてという仕事をやっていたのですが、自分が作ったプラグインにもかかわらず、table/@pgwide="1"としても幅の小さなものは本文領域幅いっぱいに広まってくれません.何故かスタイル…

DITA-OTのカスタマイズ(2)

DITA-OTの拡張ポイントの定義には大きな問題があると書きましたが、それは次のようなものと考えています. 「DITA-OTの動作を自分(プラグイン)の「都合」で変えるのだから、他のプラグインに絶対迷惑をかけてはならない!」 これと同じような例がプラグイ…

DITA-OTのカスタマイズ

DITA-OTには前処理の工程(preprocessと呼ばれる)があって、入力となるmapやtopicをパースし、conrefやフィルタリングなど様々な処理をやってくれます.ここでのDITA-OTの処理をカスタマイズできるのが「拡張ポイント」(Extension point)と呼ばれるもので…

意外と大変なmap参照

同じPDFを作るのにも版下用に作成するのと閲覧用に作成するのは結構要件が異なります.特にいわゆる取扱説明書のように製品に冊子として添付する用途のPDFを作る場合、極力紙を節約するためにページ数をコントロールしたい要望があります.例えばchapterから…

HTMLでXPathを使う.

ウェブスクレイピングという技術があるそうです.ウェブサイトから情報を抽出する技術のこと.TeraTailにVBAからMSXMLを使用してHTMLをパースし、XPathで必要な情報を取得したいという趣旨の投稿があありました.そもそもMSXMLでは入力がXHTMLでない限り(つ…

subjectSchemeで@outputclassを検証する(3)

すみません.このsubjectSchemeの書き方は私があまりに難しく考えすぎていたようです.次のようにすると問題なくoXygenで動いてくれます. <subjectScheme> <subjectHead> <subjectHeadMeta> <navtitle> Constraint @outputclass for fig…</navtitle></subjectheadmeta></subjecthead></subjectscheme>

XSLTからPDFのページ数を取得する.

5月頃からXSL-FO、そして7月からXSLTの質問がStackOverflowにポストされたらダイジェストのメールが来るようにしました.XSL-FOの方はまだまばらですが、XSLTの量はすさまじいものがあります.7月1日から30日で324通のポストがありました.とても全部なんて…

subjectSchemeで@outputclassを検証する(2)

ではどのような場合に不具合が出るのでしょうか?例えば@outputclassは様々な用途に使用されます.でも悩みの種は@outputclassは検証されない点です.subjectSchemaにより検証されれば、スキーマ/DTDを直すことなしに目的の結果を得ることができます.これは…

subjectScehmeで@outputclassを検証する

もしあなたがDTDやスキーマを特殊化しなければきっと@outputclassを使用するでしょう、@outputclassはいわば何でもありの属性です. 3.12.9 Other common attributes http://docs.oasis-open.org/dita/dita/v1.3/os/part3-all-inclusive/langRef/attributes/…

topicの@xml:lang

xml:langという属性はXSL-FOからすると結構重要な属性です.例えば、とかく漢字は日本語を書いていると日本語フォントが選択されて当然と考えられるかもしれませんが、中国、台湾でも漢字はあたりまえに使われますし、ほとんど使われなくなってきているとは…

統一コンテンツ戦略

DITAの和書というには非常に少ないので、たぶんDITAを検討されたり実践されたりしている方はご覧になっている本に、「DITA101 執筆者と管理者のためのDITAの基礎」(2011年刊 DITAコンソーシアム訳)があります.私も非常に参考にさせていただいています. …

は一個ではありません...

こんなことを書くと「あったりまえじゃん!」と言われそうですが、それでもXSLT 1.0のスタイルシートを見ていると意外とそのまま動いてしまっている例があります.それはXPath式でのロケーションステップに対する述語(predicate)の"[1]"という記述です. …

属性の特殊化

九州地方地震で被災された方をお見舞いします.遅ればせながら災害募金をさせていただきました. さて、掲題の属性の特殊化ですがずっと長い間理解が行き届いておらず、恥ずかしながらとんでもない遠回りをしていました.それは、GitHubで公開しているah-dit…

特殊化しない選択: data要素の使い方

DITAにはdata要素というたぶんフツーに使っていると「なんだこりゃ?」という要素があります.仕様は以下にあるのですが読んでも読んでもいまいちわかりません. 3.7.2 <data> http://docs.oasis-open.org/dita/dita/v1.3/os/part3-all-inclusive/langRef/base/dat</data>…

DITA 1.3詳解ワークショップ(2)

DITA 1.3詳解ワークショップのEliot Kimberさんの解説を聞いていて感じたことを追加します. DITA 1.3ではCross-deliverable linking、つまりbookmap間の参照(通常分冊間参照と呼んでいる)が出来るようになったという話です.これは具体的にはどのように行…

DITA 1.3詳解ワークショップ

3月16日(水)にDCJ(DITA Consortium Japan)の会員向けに、Eliot Kimberさんをお招きしてのDITA 1.3の詳解ワークショップが開催されました.わたしも同僚と一緒に参加する機会がありましたので感想を報告します. まずDITAの歴史は非常に古くから検討され…

属性追加の欲望(2)

既存のOASIS標準の要素に属性を追加する例がdita-usersで議論されていました. Rethinking "Custom" Attribute Specialization https://groups.yahoo.com/neo/groups/dita-users/conversations/topics/39272 ここで紹介されている方法は 1. @baseを特殊化し…

属性追加の欲望(1)

どうしてもOASIS標準の要素に自分たちで使用したい属性を付けたい場合があります.端的な例としてxrefがあるのではないでしょうか?例えばxrefがtopicを指す場合、 - topic/titleを""で囲んで表示(title-only) - topic/titleを""で囲み次いでページ番号を…

fo:block-containerとxsl:next-matchでランドスケープのテーブルを実現する.

DITA 1.3になって新たに加わった属性の一つとしてtable/@orient="land"があります. 3.2.3.1 <table> http://docs.oasis-open.org/dita/dita/v1.3/os/part3-all-inclusive/langRef/base/table.html#table 通常tableはブロックの進行方向に向けて行がだんだん配置さ</table>…