| |
XPath関数で部分テキストを出力する | ||
|
XPath関数の中から文字列関数を取り上げ、テキストの一部を抜き出すsubstringと文字列を連結するconcatを紹介します。<xsl:value-of>要素と併用して、出力の内容を加工してみます。
|
2003/9/9
XPathと聞くと、XMLとはまったく独立した規格のように思われるかもしれませんが、その実、これまで何度も登場したXSLTとは切っても切れない関係にあります。例えば、<xsl:for-each>や<xsl:template>、<xsl:value-of>などの要素でノードを特定する際に用いていた表現――「books/book」「//chapter」「book/@isbn」――などは、実はXPath式の1つで「ロケーションパス」と呼ばれるものです。ロケーションパスは、その名のとおり、XML文書内のカレントノードから目的のノードまでの道筋(パス)を示す役割を果たします。
ロケーションパスはXPath式の代表的な表現方式ですが、そのすべてではありません。XPath式は数値や文字列、関数などから構成される、より汎用的な「式」表現なのです。
ここでは、XSLTの表現力を支援する「XPath関数」について紹介しましょう。XPathにはさまざまな組み込み関数が用意されており、データの加工や演算、ノードの絞り込みなどを行う手段を提供します。
(1)特定の文字列を抜き出すXSLT
以下は、books.xml(別稿「外部サブセットを利用して、DTDをXML文書から分離する」を参照)の<title>要素を一覧表示するXSLTスタイルシートです。ただし、<title>要素配下の文字列は15bytesまでを表示することにします。
[simple.xsl] <?xml version="1.0" encoding="Shift_JIS" ?> |
![]() |
| タイトル文字(15bytes)と“...”が出力された |
以下の部分に注目してください。
<li> |
substring(node,m,n)はXPath関数の1つで、第1引数で指定されたノードの値をm〜n文字まで抜き出します。concat(x,y)も同様にXPath関数の1つで、引数で指定された文字列を連結します。
このように、XPath関数は<xsl:value-of>要素などと併せて使用することで、出力の内容を加工できるのです。
(2)XPath関数の文字列関数一覧
XPath関数は、その扱う型に応じてノードセット関数、文字列関数、ブーリアン関数、数値関数に分類されます。concat、substring関数は文字列関数です。文字列関数に分類される関数について、以下の表にまとめておきます。
| XPath文字列関数 | 概要 |
| contains(strVal,strSrc) | 文字列strValに部分文字列strSrcが含まれているかどうか |
| normalize-space(strVal) | 文字列strValの前後から空白を取り除く |
| start-with(strVal,strSrc) | 文字列strValが部分文字列strSrcで始まるかどうか |
| string(nodSet) | ノードセットnodSetで表される値を文字列に変換する |
| string-length(strVal) | 文字列strValの長さを返す |
| substring-after(strVal,strDlm) | 文字列strValを区切り文字strDlmで区切ったとき、後半部の文字列を返す |
| substring-before(strVal,strDlm) | 文字列strValを区切り文字strDlmで区切ったとき、前半部の文字列を返す |
| translate(strVal,strBfr,strAft) | 文字列strValをstrBfrからstrAftへの規則に従って変換する |
containsやstart-withなど戻り値としてtrue/falseを返す関数は、<xsl:if>要素のtest属性などの条件式として使用できます。
| 「XMLテクニック集」 |
ホワイトペーパー(TechTargetジャパン)
- QAフレームワーク:仕様ガイドラインが勧告に昇格 (2005/10/21)
データベースの急速なXML対応に後押しされてか、9月に入って「XQuery」や「XPath」に関係したドラフトが一気に11本も更新された - XML勧告を記述するXMLspecとは何か (2005/10/12)
「XML 1.0勧告」はXMLspec DTDで記述され、XSLTによって生成されている。これはXMLが本当に役立っている具体的な証である - 文字符号化方式にまつわるジレンマ (2005/9/13)
文字符号化方式(UTF-8、シフトJISなど)を自動検出するには、ニワトリと卵の関係にあるジレンマを解消する仕組みが必要となる - XMLキー管理仕様(XKMS 2.0)が勧告に昇格 (2005/8/16)
セキュリティ関連のXML仕様に進展あり。また、日本発の新しいXMLソフトウェアアーキテクチャ「xfy technology」の詳細も紹介する
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 「いつかは壊れるサーバ」そんな故障に 迅速で安価に手軽に対応する方法とは? New! |
| 「特権ユーザー」の事件を防げ! 万能権限を持つユーザーの管理方法とは? New! |
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | TomcatやJBossなどAPサーバ環境に関する 情報を集約! “業務”用APサーバ大百科 New! |
| ◆ | 一気に解説! 最新のクラスタストレージ 「RAIDを超えたストレージ基準」……など New! |
| ◆ | クラウド的ユーザー体験の変化は脅威か? 仮想化技術を使いこなす運用管理術を紹介 New! |

| ◆ | 上司や部下、部署内メンバーとの情報共有 を“ガラッ”と変えるコラボツールとは? New! |
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |

| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |
| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |

| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |
| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |

| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |







