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

DITA⇒よくわかりません(その4)

今回はkeyrefで参照先が「キー定義のtopicrefにあるXMLコンテンツへの参照」になる場合です.「コンテンツ参照」なので、対象が参照され参照元にコンテンツを持ってきてくれます. 今までkeydefでは必ず@hrefがあって、画像のURIやtopicを指していました.し…

【閑話休題】 DITA-OTのデバッグ

ちょっとはずれますがDITA Open Toolkitのデバッグの話です.たぶんDITA-OTをローカルで御使用の方はコマンドラインやoXygen、XMetaLなどのXMLエディタから起動してPDFやHTMLなどの目的の出力を得ておられると思います.でもDITA-OTにバグがあったり、DITAの…

DITA⇒よくわかりません!(その3)

すみません.keyrefによるトピックの参照、外部URIの参照はもう少し実際的な例がありました.先にもう少しそれを紹介します. 前回「トピック内からトピックを参照するのにkeyrefを使用して動的に参照先を切り替えるというのは、どのような実践的なuse case…

DITA⇒よくわかりません!(その2)

前回conkeyrefの例を紹介しましたが、すこし補足します.conkeyrefは間接的なトピック、マップ、その他のトピック中の要素へのコンテンツ参照です.前回はトピック中の要素から他のトピック中の要素を参照していました.ですのでキー定義は必ずトピックを指…

DITA⇒よくわかりません!

DITAの仕事をさせていただいておりますが、「DITA知ってますか?」と単刀直入に聞かれたら「まだ駆け出し者で、わからないことだらけです.」と答えざるを得ません.DITAというのは、確かに世界で多くの先進企業に使用されているのでしょうけれども、ある意…

XSLT 2.0で便利になった機能(50) every式をつかう.(その2)

以前every式を使う例を紹介しましたが、今回もう少し効果的なところで使用する例がありましたので紹介します.以下のXMLをご覧ください. <section> <div group="フルーツ" id="idりんご"> <span>りんご</span> </div> <div group="フルーツ" id="idみかん"> <span>みかん</span> </div> <div group="フルーツ" id="idバナナ"> <span>バナナ</span> </div> </section>

XSLT 2.0で便利になった機能(49) node()*とdocument-node() (その2)

先だって <div> <span>りんご</span> <span>みかん</span> <span>バナナ</span> </div> と書いて <xsl:variable name="div_seq" as="node()*"> <xsl:sequence select="/div/span[1]"/> <xsl:sequence select="/div/span[2]"/> <xsl:sequence select="/div/span[3]"/> </xsl:variable> と書くと、node()*に…

XSLT 2.0で便利になった機能(48) node()*とdocument-node()

XSLT2.0でシーケンスが導入されて大変便利になりました.変数をxs:integer*、xs:string+などと定義できるとプログラミングの自由度が格段に向上します.さてそれではnode()*はどうでしょうか?これもまた便利なのですが、document-node()とどう違うのか?た…

XML Schema 1.1とXerces,Saxon

2012年4月5日にXML Schema 1.1はW3Cの勧告になりました.見逃すことができないのが、XSD1.1で新たに加わったAssertionの機能です.この機能を使うとXPath 2.0で制約条件を記述してコンテンツを調べ、満たさない場合はAssertメッセージを出すことができます.…

XSLT 2.0で便利になった機能(47) xsl:value-ofのseparator属性

この前、次のようなデータから <div> <span>りんご</span> <span>みかん</span> <span>バナナ</span> </div> 次のような出力を得るのにposition()関数を使う例を紹介しました. <fo:block>【りんご,みかん,バナナ】</fo:block> もしspan以下に<i>や<b>などの要素がないか、あっても無視できる場合、もっと簡単にできます.それは<xsl:value-of>を使用す</xsl:value-of></b></i>…

position()関数を使う

最近他の方の書いたスタイルシートを見ることがあるのですが意外とposition()関数を使っていないようです.ご存知の方にとってみればなんでもないのですが、便利な使い方があるので紹介します. 例えば次のようなデータ構造があったとします. <div> <span>りんご</span> <span>みかん</span></div>…

JoAnn T. Hackos博士のワークショップ

仕事が超忙しいので、1月にリーダーからDITA Festa 2013に誘われたときはどうしたものか悩みました.でもDITA Festaは数年前に一回行ったきりでしたので今回思い切って参加させてもらうことにしました.今年は2月7日~8日で会場は箱崎のIBM本社でした. まず…

XSLT 2.0で便利になった機能(46) xsl:templateのmatch属性

テンプレートとmatch属性はXSLTスタイルシートの核をなす構成要素です.match属性の中身はパターン(pattern)と呼ばれます.ここには一般的にはパスのパターンを書きます.例えば <xsl:template match="p"> はp要素にマッチした処理を記述します. <xsl:template match="p[string(@outputclass) eq 'normal']"> はouputclass属性が"normal"のp要</xsl:template></xsl:template>…

XSL-FOのデバッグ

XSL-FOのスタイルシートを作っていると、時にしてFOをエディタで開いて中をデバッグしなければならないことがあります. DITAのPDF出力のスタイルシートなんかだったら、あまりXSL-FOを覗くことはないのではと思います.たいてい出力物がページ数が多くて、…

XSLT3.0への道(15) 関数を返す関数

前々回で関数を返す関数というのをつくってみました. <xsl:function name="ahf:getFunc" as="function(*)"> <xsl:param name="prmFuncName" as="xs:QName"/> <xsl:param name="prmArity" as="xs:integer"/> <xsl:sequence select="function-lookup($prmFuncName,$prmArity)"/> </xsl:function> しかしこの関数は、パラメータ与えられた関数名と引数の数を持った関数をfu…

Scalaの本を買いました.

この頃は関数型言語がはやりだということです.昨年せっかくVisual Studio2010にF#がついているからということで「実践F#関数型プログラミング入門」という本を買ったのですが、案の上半分も読まないうちに挫折してしまいました.サンプルコードを実際に試し…

DTDかXML Schemaか?

以前XML Schemaを使用してMathMLをDITAインスタンスにオーサリングする例を試したことがあります.しかしXML Schemaは実際の業務では使用したことがありませんでした.主にCMSがDTDしかサポートしていないというのが理由だったのですが、いまの時代いくらな…