2011-01-01から1年間の記事一覧

RibbonXを使う(後日談)

この件、あまり誤解があってもいけないので後日談を書いておきます.このVBA路線、実はうまく行きませんでした.従来マクロを使うときには、WordMLはXMLファイルですから、レジストリを変えてXMLに対してコンテキストメニューを出すようにしていました.例え…

DITAとXMLスキーマ

いつからだったか忘れましたがDITA Open ToolkitにはDTDと一緒にXMLスキーマがついてくるようになりました.でもこのXMLスキーマ実際に使っているのでしょうか? 以前DITAをサポートしているけっこう有名なCMSのエンジニアの方にうかがったことがありますが…

DITA-OTのXSLTプロセッサ

お客さんのところで、私の作ったプラグインが「Fatal Error - Cannot convert zero-length string to an integer」のエラーを出して止まってしまいました.もちろんこのエラーはXSLTプロセッサのSaxonが出しています. お客さんの連絡だと新旧の文書を比較す…

今年も田んぼの生き物調査

さて今年も昨年に引き続き、田んぼの草取り体験と生き物調査で、生活クラブ生協(長野)の方がバスで地元の東春近農協に見えられました.昨年は神奈川の方もいらっしゃったのですが、今年は東北大震災の影響もあって長野だけになったようです. 昨年のURL: h…

FO Plug-inでFormatterを使う (続き)

■ ご注意(続き) (2) ZapfDingbats 雑談になりますが、font-mappings.xmlのZapfDingbatsはそのまま残してあります.このフォントを使う契機は次の一箇所だけです. <alphabet char-set="Symbols"> <character-set> <character>&#x27A4;</character> </character-set></alphabet>

FO Plug-inでFormatterを使う

山ほどFO Plug-inの悪口を書いてしまいました.それでも、それでも、それでも、それでも、それでも、FO Plug-inを使いたい方はいらっしゃるようです.一所懸命トライしているのだがFomratterでうまく動かないという問い合わせをいただきました.確かにWEBを…

pdf5 Plug-inとカタカナ/ひらがな索引

pdf5 Plug-inについて質問をいただきました. > PDF5の索引は、カタカナがひらがなと一緒に表示されません。 > 業務に使うのは、そのままでは難しいんですね。 日本語索引は索引の中でも特殊で、indextermにindex-sort-as要素で「よみがな」を必ず記述します…

タコのDITA-OTのFO Plug-in (3)

また前回の続きで、FO Plug-inの話です. ■ デタラメなfrontmatter、backmatterの実装 実際に試してみるとわかりますが、FO Plug-inのbookmap/frontmatter, backmatterの実装はきわめていい加減です.ひどい事に指定した順序に出力されないのです.例えばfro…

タコのDITA-OTのFO Plug-in (2)

さて前回の続きで、FO Plug-inの話です. ■ おかしなI18N処理 FO Plug-inは、概略次のような処理を行います. 1.DITA共通の初期処理(topicのパージング、conrefの処理などなど) 2.トピックのマージ処理(mapまたはbookmapに基づいてtopicをマージ) 3…

タコのDITA-OTのFO Plug-in

DITA-OTとお付き合いが始まったのは2006年くらいです.当時はまだDITA-OTも1.2と古く、標準のPDF出力はIBMの方が作ったものが搭載されていました.この頃ダークホースとして現れたのがIdiom Technologiesが作ったFO-Pluginです.ちょっと格好の良いデザイン…

DITAのXref

わたしの作ったDITAのPDFプラグインを使っていただいているお客さんの担当者から連絡がありました.今までエラーにならなかったデータがプラグインのスタイルシートでエラーがでてしまうとのことです.もうプラグインは足かけ3年は使ってもらっており、スタ…

8年目のエラー

毎週明日は休みの金曜日というところになって、退社時間が迫ってくるとどういうわけか決まってお客さんから障害報告が来ます.今週はDocBook→XSL-FOのスタイルシートで見たことのないエラーメッセージというものでした.エラーメッセージは 「Recoverable er…

XSLT3.0への道(10) ストリーミング関連の関数

XSLT3.0ではストリーミング機能が導入されますがそれに関連する関数が追加されています.今回はこれを紹介したいと思います.これらの関数には、copy-of、snapshot、outermost、innermost、haschildrenがあります.機能を読んでみましたが、ちょっと今までの…

RibbonXを使う.

この前お話したWord2010でのオーサリングツールの仕事ですが、現在のWord2003ではメニューの種類は約48個あります.これ全部ツールバーにアルファベット順で組み込んでフローティング状態でWordに表示させています.お客さんはそれをマウスクリックしてオー…

エッ! Professional版で&#92;19,800

4月のスタイルシートの仕事も終わり、今度はWordでのオーサリングツール作成の仕事になりました.今までお客様にWord2003でオーサリングをやってもらってWordMLを出力しそこからDocBookのXMLファイルにXSLTで変換していたのです.でもいまやWord2003も二世代…

XSLT3.0への道(9) パターン (その2)

次にPathPatternで変更されている点にRootedPatternの追加があります.RootedPatternは次のように定義されます. [7] RootedPattern ::= ( VarRefRoot | DocCall | IdCall | ElementWithIdCall | KeyCall ) (('/' | '//') RelativePathPattern)? [8] VarRefR…

福島行き

妻の実家が福島県の中通りにあります.東北関東大震災がありましたのでお見舞いにと連休に行ってきました. 私のところから行くには、新潟の磐越道を行く道と、中央道から都内を経由する道があります.東京経由は混んでイヤなのでいつも長野道、上信越道、北…

ブラウザでXSLT2.0が使える! Saxon CE

去る3月27日~28日にXML プラハ 2011(XML Prague 2011)というカンファレンスが開かれました.様々な講演が行われましたが、ここでSaxonの作者Michael Kayは、XSLT in the Browserと題した講演を行い、クライアントサイドのブラウザで動作するXSLT 2.0エン…

XSLT3.0への道(8) パターン (その1)

パターンとはxsl:templateのmatch属性に書く条件のことです.XSLT3.0ではこのパターンがグンと拡張されます.どれくらい変わったかというと定義をみれば歴然とします.次が今のXSLT2.0でのパターンの定義です.きわめてシンプルでした. [1] Pattern ::= Pat…

DITA-OTの憂鬱(その後2)

悪い便りです.せっかくdost.jarを書き換えてテーブルの出力はバッチリと思ったのですが、また障害報告が来てしまいました.PDFでテーブルの出力がボコボコになっているというのです.送られたPDFを見ると確かにテーブルの表示がぜんぜんダメです.原因のtop…

XSLT 2.0で便利になった機能(42) mode属性

特に文書系なのですが、スタイルシートは手が込んでくるとやたらとモードを使って処理を切り回す場合があります.相手は同じ要素なのですが、xsl:templateのmode属性を変えて違った処理をしたいことが多々ある訳です.索引などがよい例かもしれません.私はX…

DITA-OTの憂鬱(その後)

DITA Open ToolkitのデベロッパーはたぶんIBMの人たちです.Javaのソースコードはバグトラッカーで振られた番号と修正者のイニシャルが入って、begin~endでちゃんとコメントされています.WinMergeやEmEditorで確認しながら、DITA-OT 1.5.2のbug fixを1.5.1…

XSLT3.0への道(7) その他の要素

現在まで紹介したXSLT3.0の要素ですがこれらはすでにSaxon9.3に実装されているものです.Saxon9.3の実装状況は次のURLで確認できます. http://www.saxonica.com/documentation/changes/intro/xslt30-93.xml ここではSaxon PEでは使えなかったり、またまだSa…

DITA-OTの憂鬱

4月1日は本当に「エイプリルフールじゃないの~!」と言いたいほど朝からメールで障害報告、仕様変更依頼、問い合わせが飛び込みました.それも複数のお客様からです.おかげで午前中はJavaの修正コーディング、午後はDITA Open tookitの調査という具合で昼…

Delphi XE

ずっと朝起きたら会社に行き、会社から帰ったらバタンキューで寝る毎日が続いていましたが、今日ようやくお客さんへの納品が終わりました.あとはもしバグがあったら対応するだけ.なんとかなりました. ところで話はかわりますがTObjectと聞いてハッとくる…

Saxon6.5とSaxon9.3の共存

二月の終わりから三月はほぼJavaのSwingのコーディングに没頭していました.お客さんのシステムが基本的にWEBベース(Linux)なんですが、クライアントでも同じに動かせるようにと、サーバーと同じスタイルシートを使って最終的に同じPDFなどを出すWindowsで…

XSLT3.0への道(6) xsl:mode

東日本大震災で被災された方に心よりお見舞いを申し上げます. 今回はxsl:modeを紹介します.私は最初ちょっと眺めただけでxsl:modeはストリーミングをサポートするために付け加わったものと思っていましたがそうではないようです.今までmode属性は、例えば…

XSLT3.0への道(5) xsl:iterateの続きの続き

次のスタイルシートは、$prmLimitで指定された金額(10,000)を越えない限度まで入力データを出力します.xsl:breakでそのときの計を出力します.xsl:next-iterationとxsl:breakはxsl:iterateの最後の位置になければなりません.xsl:chooseでいずれかを選択…

XSLT3.0への道(5) xsl:iterateの続き

前回xsl:iterateについて紹介しましたが、最後につけたWordMLの変換の例はxsl:tryを使ったり、saxon:assignを使ったりして、あまりにも「オタク」すぎたのでもう少し簡単な例を載せておきます. [入力XML] <data> <product type="pencil" maker="三菱" price="100" count="5"/> <product type="pencil" maker="コーリン" price="90" count="10"/> </product></product></data>

XSLT3.0への道(4) xsl:iterate

xsl:iterateについて紹介したいと思います.xsl:iterateですから、「繰り返し」→ループかな?と思いました.確かに繰り返しではありますが、tail-recursion(後方再帰呼び出し?)を簡単に作れるようにしたのが本質です.これはドラフトのNoteのところで解説…