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

topic/titleの処理 (1)

何をいまさらtopic/titleと思われるかもしれません.でも最近いろいろなスタイルシートを見ていて、意外と理解されていないのではないのかと気が付きました.topicがmapからtopicrefで参照されていたとすると、これからPDFを作ろうということでXSL-FOを生成…

フォントファミリーの指定方法

FOへのスタイルシートを作るとき意外と落とし穴になるのがフォントファミリーだなと実感しました.先週からフォントファミリーで頭がおかしくなりそうな状態だからです. XSL-FOのスタイルシートを作る場合、大抵元はInDesignとかFrameMakerとかでやっていて…

スキーマの特殊化とURN

DITA-OT DayでEliot KimberさんがRELAX NGでの特殊化の例を示しておられたので、自分も試してみようと思いました. DTDでは本家のOASISならばtopicの公開識別子は "-//OASIS//DTD DITA Topic//EN" ですが、特殊化した場合はOASISのものとは異なったものであ…

DITA-OT Day

去る11月18日~19日にドイツのミュンヘンのHoliday-Inn Munich Centreで開催された、DITA Europe 2014に続いて、11月20日に同じ会場でoXygenのSyncroSoftの主催による初めてのDITA-OT Dayが開催されました.私もDITA Europe 2014の展示に参加させてもらった…

エアバスA330でコーディング

出張でヨーロッパへ行くことになりました.フィンランドのヘリシンキ経由でミュンヘンです.私のところからは成田よりセントレアの方が近いのでそちらからフィンランド航空にのることになりました、ヘルシンキから乗り継ぎなのですが、着くまで14時間超(!?…

日本語ファイル名は使ってもよいのか?

昔、DITA Open Toolkitがまだ1.4とかだったときはmapやtopicに日本語ファイル名を使用するのはとても無理だったように記憶しています.でもこの頃はDITAを使用するお客様も増えてきて、中には日本語ファイル名を使用する場合も多々あるようです. 私もずっと…

DITA 1.3とRELAX NG(5)

DITA 1.3はOASISでの検討も進んでいて、その経過を次のURLからダウンロードして見ることができます. OASIS Darwin Information Typing Architecture (DITA) TC Public Documents https://www.oasis-open.org/committees/documents.php?wg_abbrev=dita https…

DITA-OTのバージョンを比較する

USの同僚から「お前のDITA-OTのプラグイン、DITA-OT1.8.5でやるとこけるで~!」と連絡がありました.私はずっと1.8.4を使っていたので気が付きませんでしたが、確かに1.8.5でやると一発でこけます.原因を調べてみると、1.8.5からはlq/@hrefの処理をDITA-OT…

fo:page-sequenceの調停(2)

ページシーケンスの調停に使用するのはオープンソースで公開されているカナダのG.Ken Holmanさんのpsmi.xslというスタイルシートです. Page Sequence Master Interleave (PSMI) http://www.cranesoftwrights.com/resources/psmi/ HollmanさんはXSLとXSLTで…

fo:page-sequenceの調停(1)

XSL-FOで一連の同じページレイアウトを行う単位をfo:page-sequenceと呼びます.XSL-FOの構造を見るとわかりますが、fo:page-sequenceはまさにコンテンツ部分を表現しています.最低限の簡単なXSL-FOの構造は次のようになるからです. fo:root | +-- fo:layou…

DITA 1.3とRELAX NG(4)

DITA-OTが標準で使用しているのはJavaのXercesというパーサーです.XercesはXNI(Xerces Native Interface)のいうインターフェースを提供しており、RELAX NGを使用する場合、 ① RELAX NGで書かれたスキーマから属性と既定値を関連付けるマップを作成する ② …

DITA 1.3とRELAX NG(3)

DITAとRELAX NGについてもう少し勉強しましたので、書いてみたいと思います. DITAのスキーマにRELAX NGを導入することは突然降って沸いたのではなく、すでに2010年頃からoXygenのSyncrosoftのメンバーとEliot Kmberさんにらによって進められてきたものです…

Redmineを殺すには?

やたら物騒な題目ですが、要するにRedmineを使おうとせっかく方針を決めてもまったくダメなプロジェクトと言うものは存在するという話です.そしてRedmineを使ってプロジェクトを成功裏に導く反対の姿は必ず存在するということなのです. 例えば、私の関係す…

GitHubのブランチとマージ

ほんの数年前まで恥ずかしながらおよそバージョン管理システムとは縁のない仕事の仕方をしていました.会社でSubversionを使うことになっていたのですが、単に修正したスタイルシートを放り込むのがせいぜいで、すべては結果にしか過ぎませんでした.もしい…

DITA 1.3とRELAX NG(2)

DITA 1.3からのRELAX NGのサポートということで、少し気が付いたことがあるので書いてみたいと思います.それはいわゆるMicrosoftアーキテクチャを使用しているXMLエディタやCMSのことです.(私の独断と偏見と、下手をすると「妄想」も入っているかもしれま…

DITA 1.3とRELAX NG

DITA 1.3は2015年の第1四半期を目標に開発が進められているようです.先だってDITA 1.3の概要を紹介するWebinarが開催されましたが、そのプレゼンテーションが以下で紹介されています. Recording of DITA 1.3 Webinar now available https://groups.yahoo.c…

テンプレートと変数(3)

テンプレートの例ですが、変数の方はありきたりでしたのでちょっと極端なものを書いてみました. 次のテンプレートは、戻り値がitem()*で、いろいろな型のインスタンスを返します. <xsl:template name="generateSeq" as="item()*"> <xsl:sequence select="'ABC'"/> <xsl:sequence select="1"/> <xsl:sequence select="3.141567"/> <xsl:sequence select="true()"/> <xsl:element name="element"> </xsl:element></xsl:sequence></xsl:sequence></xsl:sequence></xsl:sequence></xsl:template>

テンプレートと変数(2)

XSLT2.0ではテンプレートと変数の構造は次のように定義されています. 6.1 Defining Templates http://www.w3.org/TR/xslt20/#defining-templates <xsl:template match? = pattern name? = qname priority? = number mode? = tokens as? = sequence-type> </xsl:template>

generate-id()は使うべきではない!?

入力XMLにユニークなidがあれば良いのですが、丁度良いものがなくて出力XMLにidが必要な場合、よくgenerate-id関数を使用します.今までなんの疑問もなく使用してきたのですが、致命的な弱点に出会ってしまいました. 例えばスタイルシートに非常に微妙な修…

テンプレートと変数(1)

XSLT1.0が勧告になり、やがてMicrosoftがMSXML3を出し始めた頃は、結構スゴイということ話題になりました.使い始めたのですが、ともかく動かすこと優先でした.サンプルを見てトライアンドエラーでやっていて、恥ずかしながらXSLT1.0勧告を根本から理解して…

ScalaでRTFをパースする.

会社でたまたまRTFからテキストを抽出しなければならない問題に遭遇しました.RTFというのは私は専門家ではないのですが、実は付き合いだけは長くて、10年前くらいにWordのバイナリーとつき合わせて必死に解析した覚えがあります. WEBを見るとRTF⇒テキスト…

XSLTのキホン

最近XSLTの学習を始めた方がおられました.既存のXSLT2.0のスタイルシートを元にそれを改造するということをやっておられたそうです.そこでたまたまWEBで私のブログを見て参考にしていただいたようなのですが、以下のようにお叱りをいただきました. ① 「思…

topic以外の要素のid属性

以前topicのid属性はそのファイル内でユニークであれば良いということを書きました.それではDITAではtopic以外の要素のidはどうなっているのでしょうか?実はパーサーでは検証できない複雑な条件があります. まずtopic以外の要素のid属性はDTDではIDではな…

ツリーのノードの巡回 (2)

Namspaceノードは、XSLTの使用するツリーモデルのXDM ()によれば次のように解説されています. http://www.w3.org/TR/xpath-datamodel/#NamespaceNode 6.4 Namespace Nodes Each Namespace Node represents the binding of a namespace URI to a namespace…

ツリーのノードの巡回

最近XSLTのレクチャーをやる機会がありましした.XSLTはXMLファイルを入力としてそれをツリー構造(ソースツリー)として扱い、変換を行って同じくツリー構造を生成します.(結果ツリー)このソースツリーは言ってみればノードの集合体なのですが、これを巡…

XSLT 2.0 and XPath 2.0 Programmer&#039;s ReferenceのE-book

実は恥ずかしながら電子書籍というものを買ったことがありませんでした.ところが以前に買ったXSLT 2.0 and XPath 2.0 Programmer's Referenceですが、元々大型の本で1300ページもあるため、ついに背表紙の部分から壊れてしまいました.古本でもう一冊買おう…

XSLTのデバッグ

もう前の2014年の3月の投稿ですが、XSL-Listに次のように題された話題が載っています. Managing debug logging in complex transforms: what do people do? http://oxygenxml.com/archives/xsl-list/201403/msg00173.html 話の発端はEliot Kimberさんです.…

XSLT2.0で便利になった機能(55) replace

replaceというのはXPath 2.0から使用できるようになった実に強力な関数です. 7.6.3 fn:replace http://www.w3.org/TR/xpath-functions/#func-replace 何が強力かというとそれは正規表現が使えてしまうからです.関数の定義は fn:replace( $input as xs:stri…

xsl-fo and professional publishing

XSL Listに興味深い議論が載っていました. http://xsl-list.markmail.org/search/?q=#query:+page:1+mid:75nkjbb7lg7jkivb+state:results >I wonder whether xml + xsl + xsl-fo is a current practise in >professional publishing for technical books at…

学年でビリだったギャルが...

ちょっと脱線です.出張で横浜に行って時間つぶしに三省堂でたまたま平積みのこの本を立ち読みしました. 「学年でビリだったギャルが、1年で偏差値を40あげて日本でトップの私立大学、慶應大学に現役で合格した話」 http://www.amazon.co.jp/%E5%AD%A6%E5%B…