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

閑話休題: XSLT2.0でテキストファイルをXML化する

ここではunparsed-text()でスタイルシートからテキストファイルにアクセスできることを実例で紹介したいと思います.目的はもちろんテキストからのXML化です. ■ 最初は「超」簡単な例. テキストファイルを改行(U+000A)で区切り<p>~</p>で囲んで出力します. [入…

小川

私の住んでいるところは天竜川をはさんで東西にアルプスがあり、河岸段丘沿いに湧き水が豊富です.そんな湧き水からきれいな小川が流れ出しています.暑い今日の午後、用事でお訪ねした家の前の小川は冷たい水がさらさらと流れて、脇は一面のかわいらしい白…

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

今回はURI関係の関数です.XSLT1.0ではこの分野の関数はありませんでした.様々な関数が追加されていますがどのようなものがあるでしょうか? ■ base-uri() base-uri()はnode()?をパラメータとして、そのbase-URIを返します.一般的にはnode()が入力XMLファ…

むくげ (無窮花)

むくげ、好きな夏の花です.職場の南側に木立をつくっています.暑い夏の日差しの中、風にそよいでいました.「槿」と書くより「無窮花」の方がロマンを感じさせてくれます.韓国の国花だそうです.お隣の国なのに知りませんでした.

XSLT2.0で便利になった機能(17) 数値関係の関数

数値関係の関数について紹介したいと思います.XSLT1.0では数値を表す型が倍精度浮動小数点型のみだったのに対して、XSLT2.0ではXSL Schemaで定義された様々な数値型が使えるように拡張されています.xs:integer,xs:decimal,xs:float,xs:doubleやそれから派…

落雷

落雷ですっかり家の光のルータをやられてしまいました.気がついたのは出張の前夜、いくらメールを取り出したくてもどうにもなりません.NTTの故障受付センターはつながりっぱなしで、なかなか通じません.メッセージを残しておいたら、連絡を携帯にいただい…

XSLT2.0で便利になった機能(16) is オペレータ

ちょっと前に戻って、ちょっとだけ便利になった話をしたいと思います.テーマは is オペレータです. 新しく導入されたis オペレータは前後にノードのオペランドをもち、そのノードが同一か判定し結果をxs:booleanで返します.ここで「ノードが同一」という…

XSLT2.0で便利になった機能(15) 日付/時刻の関数

XSLT1.0では日付/時刻関係の関数がなく、各ベンダーごとに独自拡張が用意されていたり、MSXMLだったらJScript/VBScriptで、SaxonやXalanだったらJavaでと拡張関数を書いて呼び出しました.これらの集大成がhttp://www.exslt.org/date/index.htmlに詳しく残っ…

古井戸

家を建てたときに、古くからあった井戸を埋めてももったいないと使えるようにしたのですが、十年以上も経つともう天板が腐ってボロボロ状態.今日は大工さんに来てもらって、井戸の修理です.井戸のポンプとパイプを取り天板を替えて塗装すると、なんとか形…

紫陽花

梅雨時の花といえばやはり紫陽花です.紫陽花という名前は、唐の詩人・白居易が別の花につけた名前を平安時代にこの名前を誤って当てはめてしまったことからついたそうです.でも昨日梅雨が明けました、強い夏の日差しのなかで、風にそよぐ姿を見ると「紫陽…

XSLT2.0で便利になった機能(14) 新しくなったstring関係関数のまとめ

XSLT2.0では多くのstring関係の関数が追加されています.新しくなった関数についてまとめてみました.(本来XPath2.0の関数というべきなのかもしれませんが、そこはご容赦を!) ■ codepoints-to-string(),string-to-codepoint() 「XSLT2.0で便利になった機…

閑話休題: MicrosoftはXSLT2.0をやらないのか?

2010年の初め、XSL関係のメーリングリストとして有名な xsl-list@lists.mulberrytech.com に、Abel Braaksma氏から"Definite list of XSLT 2.0 processors? "と題するポストがありました. これは、以下のリストアーカイーブで見ることができます. http://w…

TYS125F

TYS125FでT山に登ったときの写真がPCの片隅に残っていました.あぁ、今思い起こせばいいバイクだったなあ.今のTLMを見るたびにそう思います.でも当時の感触では、腕のある人なら全日本も戦えるポテンシャルを持ったバイクだったんですが、野武士の私にとっ…

XSLT2.0で便利になった機能(13) Unicodeの正規化

ふだんはあまり気にすることがないのですが、例えば同じ文章をXML化するとき、必ずしも同じ結果が得られる保障はありません.まずはエンコーディング、Shift_JIS、UTF-16から、UTF-8など、決まりを作っておかねば、いろいろなXML文書が作れてしまいます.ま…

XSLT2.0で便利になった機能(12) 文字と文字コードの相互変換

先だって文字列の比較について紹介しましたが、XSLT2.0では文字列と整数(ユニコードのcodepoint値)の相互変換もできるようになりました. xs:integer*からxs:stringへは、codepoints-to-string() xs:string?からxs:integer*へは、string-to-codepoints() …

びわの実

梅雨の晴れ間で、夕方にはひぐらしが鳴いています.子供が小さいときに植えたびわの木、寒い土地ということもあり、ずっと葉ばかりの木だったのですが、今年はかわいらしい実をつけてくれました.

芝浦運河

出張で東京に行ってきました.行き先は田町ですが、実は私が最初に就職した会社があったところで、とても懐かしいところです.いつも慶応側にしか降りたことがなかったのですが、今日は芝浦口でした.芝浦口のほうがとてもにぎやかなのですね.初めて芝浦運…

XSLT2.0で便利になった機能(11) 文字列比較

XSLT1.0(XPath 1.0)では、文字列の大小比較はできませんでした.今考えると大変不便な話だったのですが、よくなんの疑問もなく使ったものです.XSLT2.0ではバッチリできるようになっています. 復習してみますとXSLT1.0では文字列の比較といえば、一致判定の <xsl:if test="$x = 'abc'"></xsl:if>…

けしの花

会社の近くの休耕田に一面にけしの花が咲いているところがあります.毎年訪れていたのですが、今年はもう時期を過ぎてしまっていました.それでも後咲きの花できれいです.

XSLT2.0で便利になった機能(10) every,some式を使う

every,some式は、言ってみれば「一発屋」ではないかと思います.例えば非常に簡単ですが、次のような例を考えてみましょう. <xsl:variable name="price" as="xs:integer+" select="(1000,980,900,800,790,700)"/> このときすべてのpriceの要素が1000以下であることをチェックするのには、every式をつかえば <xsl:if test="every $p in $price satisfies $p le 1000"> で済みます.でもこの例ではあまり</xsl:if></xsl:variable>…

閑話休題: sequenceによるデータチェック

以前castable asで整数のデータチェックをやる例を紹介しましたが、sequenceを使えば文字列がチェックできる例を紹介します. 変数$dayに"Sun","Mon","Tue","Wed","Thu","Fri","Sat"のいずれかの文字列が入っているかチェックするとします.まずXSLT1.0では…