2010-08-01から1ヶ月間の記事一覧

XSLT 2.0で便利になった機能(23) コンテキストに関する関数

コンテキストに関する情報を扱う関数について紹介します. ■ current() current()はXSLT1.0ではnodeでの使用があたりまえでした.例えば <xsl:template match="doc"> <xsl:apply-templates select="chapter[@xml:lang=current()/@xml:lang]"/> </xsl:template> のように使えば、doc/@xml:langと同じ値を@xml:langに持ったchapterが処理されます.わざわざ次のように書かなくと…

同窓会

数年ぶりに大学の同窓会があり、母校に行ってきました.もう相当行ったことがなかったので、その変容振りにびっくり.なんと構内にキャッシュディスペンサーやコンビニまであるそうです.自分が卒論でいた研究室棟、学科は変わってしまったようですが、建物…

閑話休題: XMLサマースクール

今日のxsl-listメーリングリストを見ていたら9月の5~10日の間開かれるそうです. (Michael Kayの発言) http://www.biglist.com/lists/lists.mulberrytech.com/xsl-list/archives/201008/msg00263.html と言ってもイギリスの話ですが... 会場はオックスフ…

XSLT 2.0で便利になった機能(22) Nodeをサーチする関数 (その2)

(続き) ■ key() id(),idref()がDTDや、特別な属性名を必要とするのに対して、key()関数はそのような制約がありません.key()はXSL1.0からあり、<xsl:key>でキーを定義し、key()でキー値を指定してノードを取得する方法をとります.XSLT2.0では、<xsl:key>にコレーションを指</xsl:key></xsl:key>…

XSLT 2.0で便利になった機能(22) Nodeをサーチする関数 (その1)

ノードをサーチする機能を持った関数について紹介します. ■ id() id()は、xs:stringをパラメータとして、それをID値とする要素を返します.XSLT2.0ではこれに、ドキュメントノードを表すnode()がパラメータとして追加されました.復習になりますが、id()関…

XSLT 2.0で便利になった機能(21) Nodeのプロパティ関係の関数

ノードのプロパティ関係の新しい関数を紹介します.今回はあまりおもしろくありません. ■ data() data()は、item()*をパラメータとしこれをatom化されたsequenceを返します.この関数はどうみても、schema-awareなXSLTプロセッサで意味があるものでしょう.…

閑話休題: Sequenceをパラメータとして使う (3)

(続き) <xsl:template match="w:jc" as="attribute()*"> <xsl:choose> <xsl:when test="@w:val eq 'left'"> <xsl:attribute name="text-align" select="'start'"/> </xsl:when> <xsl:when test="@w:val eq 'center'"> <xsl:attribute name="text-align" select="'center'"/> </xsl:when> </xsl:choose></xsl:template>

閑話休題: Sequenceをパラメータとして使う (2)

(続き) fo:blockとfo:inlineにWordMLから変換した属性をつけるのがポイントです.それにattribute()*のsequenceのパラメータを使用します.スタイルシートはちょっと長いですが次のようになります.

閑話休題: Sequenceをパラメータとして使う (1)

sequenceの使い方ですが、今までの例は静的な使い方でした.前回sequenceに関する関数を一通り紹介したので、テンプレートのパラメータとして動的に使う方法を試してみたいと思います. 入力ファイルは、Word2003で搭載されたWordMLというXML形式です.それ…

日本海

お盆は妻の実家の福島に行ってきました.残念ながらちょうど台風が来ていて行き帰りはずっと雨でした.私のところからは、中央道→東北道が近いのですが、都内を通るのがいやなので、上信越道→北陸道→磐越道と迂回するのがいつものルートです.山国に育ったた…

サーバーマシンダウン

さて明日からお盆休み、もう退社時間も間近というときにお客さんからのメールが届いてしまいました. 「~を変えたら、動かなくなってしまいました!」と緊急メールです.Windowsでは動くけどLinuxでは動かないとのこと.早速テストデータを送ってもらい、自…

XSLT 2.0で便利になった機能(20) sequence関係の関数

今回はsequence関係の関数です.XSLT2.0から取り入れられたsequenceの概念ですが、それを操作したり、情報を取得するための様々な関数が用意されています.これらを一通り紹介します.次回は、sequenceの使い方のアイディアを書きたいと思います. ■ count()…

白毛米

八月になり、田んぼの稲も出穂したところが多くなりました.そのなかで一段穂が高く見える水田があります.行ってみるとやはり特別な水稲でした.白毛米といいます.長野県の私の地域だけで栽培されている古代から受け継がれた特別な品種です.写真で見てい…

朝顔

暑い日が続きます.私の住んでいる長野県も連日30℃を越す猛暑です.そんななか長野県知事選挙が行われています.明日は投票日なのですが、私は応援する画家の岩崎ちひろの息子さんのお願いにと知り合いの所をまわりました.と、隣村で車で走っていて気がつい…

百日紅

私の家のはまだまだ咲かないのに、このお宅の百日紅は見事に咲いていました.紅か白が多いように思えるのですが、この花はピンクも混じっていますです.私はジャスミン茶が大好きなのですが、中国の工芸茶のなかに、この紅の百日紅の花を入れた、とてもかわ…

XSLT 2.0で便利になった機能(19) QName関係の関数

今回はQName関係の関数です.スタイルシートをお書きの皆さんでしたら、スタイルシートの先頭に、 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> と書いて、ネームスペースxslを宣言し、テンプレートでは <xsl:template name="xxx"> というように書いていると思います.要素の名前「xsl:template」は「:」の前のprefix(名前空間接</xsl:template></xsl:stylesheet>…

閑話休題: document()関数

document()関数はXSLT2.0ではdoc()関数にとって代わられ、過去との互換性を維持するためだけにあるようです.XSLT1.0でもdoument()関数はよく使ったのですが、いまいちその性格が飲み込めていませんでした.失敗もありました. まず私のdocument()関数の使い…