- blogs:
- cles::blog
« 旧岩崎邸庭園の洋館内を撮影できるチャンス :: コレド室町2で四国料理 »
2014/06/06

XSLT によるルックアップテーブルの実現

XSL で簡単なルックアップテーブルを実現しようとしたら、思ったより苦戦してしまったので忘れないうちにやり方をメモ。
今回やりたかったのは、下記のような2つの XML (item.xml, lookup.xml) があった場合に、これらをまとめて一つの XML に出力するというもの。
item.xml
<root>
<item id="a" />
<item id="b" />
<item id="c" />
<item id="d" />
</root>
lookup.xml
<record_set>
<record id="a">1111</record>
<record id="b">2222</record>
<record id="c">3333</record>
<record id="d">4444</record>
<record_set>
result.xml
<root>
<item id="a" name="1111"/>
<item id="b" name="2222"/>
<item id="c" name="3333"/>
<item id="d" name="4444"/>
</root>
以下、作業メモ。
† ルックアップテーブルを xsl ファイルに内臓しようとしたら・・・
今回はルックアップテーブルが小さいので、ポータビリティのために xsl 内にルックアップテーブルを内臓しようとしたのですが、そのせいで思ったより苦戦する羽目になってしまいました。xsl から、そのファイル自体を参照するためには document('') を使うことができますが、うまくルックアップを行うためにはきちんと xmlns を宣言しておく必要があるようです。
lookup.xsl
<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:lookup="example.lookup" exclude-result-prefixes="lookup" >
<xsl:output media-type="text/xml; charset=UTF-8" encoding="UTF-8"/>
<xsl:template match="/">
<root>
<xsl:apply-templates />
</root>
</xsl:template>
<xsl:template match="item">
<item>
<xsl:copy-of select="@*" />
<xsl:attribute name="name">
<xsl:value-of select="document('')/*/lookup:record_set/record[@id=current()/@id]/text()"/>
</xsl:attribute>
</item>
</xsl:template>
<lookup:record_set>
<record id="a">1111</record>
<record id="b">2222</record>
<record id="c">3333</record>
<record id="d">4444</record>
</lookup:record_set>
</xsl:stylesheet>
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/6770
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
« 旧岩崎邸庭園の洋館内を撮影できるチャンス :: コレド室町2で四国料理 »
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(112043)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110675)
3 . 年次の人間ドックへ(110301)
4 . 2023 年分の確定申告完了!(1つめ)(109844)
5 . 三菱鉛筆がラミーを買収(109745)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110675)
3 . 年次の人間ドックへ(110301)
4 . 2023 年分の確定申告完了!(1つめ)(109844)
5 . 三菱鉛筆がラミーを買収(109745)
cles::blogについて
Referrers