aqubi+shin1

Recent site activity

xsl‎ > ‎

XPath簡易リファレンス

基本は
基準点::ノードテスト[述語]
で表される。 但し,基準点は省略が可能で、
<xsl:value-of select="child::book" /> は <xsl:value-of select="book" /> と同意義になる。

通常、基準点はコンテキスト(現在)ノードの子要素を対象にする事がほとんどであるので、省略形の方を用いるものが多い。


基準点

基準点 概要 例(→省略形)
child コンテキストノードの全ての子を選択。 child::feeds/child::feed (→ feeds/feed )
attribute コンテキストノードの属性を選択。属性ノードの順序は決められていない。 feed/attribute::name (→ feed/@name )
self コンテキスト(現在)ノード自身を選択。 self::node() (→ . )
parent コンテキスト(現在)ノードの親要素を選択。 parent::node()/parent::node()/attribute::name (→ ../../@name )
descendent コンテキスト(現在)ノードの子孫であるノードを全て選択。 descendent::node()
ancestor コンテキスト(現在)ノードの祖先であるノードを全て選択。 ancestor::node()
preceding-sibling コンテキスト(現在)ノードの兄であるノードを全て選択。 preceding-sibiling::meeting (コンテキストノードがmeeting要素である前提で、それより前にあるmeeting要素を探す)
following-sibling コンテキスト(現在)ノードの弟であるノードを全て選択。 following-sibiling::meeting (コンテキストノードがmeeting要素である前提で、それより後にあるmeeting要素を探す)
preceding コンテキスト(現在)ノードより文書順で前にあるノードを全て選択。 preceding::author (先行する全てのauthor要素を取得)
following コンテキスト(現在)ノードより文書順で後にあるノードを全て選択。 following::author
descendent-or-self コンテキスト(現在)ノードの全ての子孫である全てのノードと、コンテキストノード自身を選択。 self::node()/descendent-or-self::node()/child::feed (→.//feed )
ancestor-or-self コンテキスト(現在)ノードの全ての祖先である全てのノードと、コンテキストノード自身を選択。
namespace コンテキスト(現在)ノードの名前空間属性を選択

ノードテスト

ノードテスト 概要
comment() コメントノードのみ選択
node() 全てのノードを選択
text() テキストノードのみ選択
processing-instruction() あるターゲットを持つ処理命令だけを選択 ( descendant::processing-instruction('java') )

述語

基準点とノードテストで特定されたノード集合に対して、さらにフィルタをかけます。
基本的にには[〜]で囲まれた 式 から構成され、式は true or false を返します。
例えば、child::feed[position()=8] の場合は、8番目のfeed要素が 式にて true が返されるために 8番目のfeed要素が 戻り値にて返ります。

[〜]の式は、xPathの組込み関数などを使用し構成します。
以下は、使用する特殊記号と関数になります。

特殊記号

特殊記号 概要
/ 直下の要素 feed/name <feed>要素直下の<name>要素
// 全ての子孫 event//name <event>要素直下の全<name>要素
. 現在の要素 ./name コンテキストノード直下の<name>要素
* すべての子要素 feed/* <feed>要素直下の全要素
@ 属性名の接頭辞 feed/@id <feed>要素直下のid属性
: 名前空間セパレータ <name xml:lang="ja">

関数

ノードセット関数 概要 戻り値
count(node-set) ノードセットの数を返す number count(feed[@author='aqubi'])
author属性が'aqubi'である<feed>要素の数を返します
document(node-set) 指定されたノードの値が示す外部XML文書へのアクセス手段を提供する node-set cokument(@href)//feed
href属性の値がfeed.xmlならば、feed.xml内の全<feed>要素にマッチ
id(node-set) ノードを一意に識別するIDから要素を抽出する node-set id(generate-id(feed))//child::name
<geed>要素は以下の<name>要素にマッチ
key(strName,varValue) <xsl:key>要素で定義されたキーstrNameを値varValueで検索し、合致したノードを返す node-set <xsl:key>を参照
last() マッチしたノードセットのノード数を返す number feed/author[last()]
local-name(node-set?)
マッチしたノードセットのローカル部分のみを返す
String
local-name()
name(node-set?)
指定されたノードセットの名前全体を返す
String
name()
namespace-uri(node-set?)
指定されたノードセットの名前空間URIを返す
String
namespace-url()
position()
親要素から見たとき何番目の子ノードであるかを返す
number
child::name[position()=3]
3番目の<name>要素を返す


文字列関数 概要 戻り値
concat(string, string...)
指定文字列を連結する
string concat('aqu', 'bi')
'aqubi'を返す
contains(string1, string2)
string1がstring2を含んでいる場合trueを返す boolean contains(string(feeds/feed), 'Happy')
feed要素の文字列が Happyを含んでいればtrueを返す
normalize-space(string?)
文字列の前後からスペースをとった文字列を返す string normalize-space('   aqubi   ')
'aqubi'が返る。
start-with(string1, string2)
string1がstring2の文字列で始まっていたらtrueを返す
boolean

string(node-set?)
指定オブジェクトを文字列に変換する
string
string-length(string?)
文字の長さを返る
number

substring(string, start-number, length)
stringのstart-number文字目からlength文字分を抜き出し
string

substring-after(string1, string2)
string1をstring2で区切った時、その後半部にあたる部分を返す
string

substring-before(string1, string2)
string1をstring2で区切った時、その前半部にあたる部分を返す
string

translate(string1, string2, string3)
string1をstring2からstring3の変換規則に従って、変換した文字を返す
string
translate(string(feed), 'xml', 'XML')


bool関数 概要 戻り値
boolean(node-set) nodeをbooleanに変換する
boolean
false()
falseを返す
boolean
lang(string)
コンテキストノードのxml:lang属性が指定された言語と等しければ、もしくは指定された文字列を含んでいれば、trueを返す
boolean

not(boolean)
引数がtrueならばfalse, falseならばtrueを返す
boolean

true()
trueを返す
boolean


数値型関数 概要 戻り値
ceiling(number) 指定された数値より小さくない最小の整数を返す
number ceiling(-3.5)
-3を返します
floor(number)
指定された数値より大きくない最大の数値を返す
number floor(-3.5)
-4を返します
number(node-set)
引数のオブジェクトを数値に変換する
number
round(number)
指定された数値を四捨五入した値を返す
number
sum(node-set)
指定された数値の合計を返す
number



XSLT関数 概要 戻り値
current() コンテキスト(現在)ノードを返す
node-set
element-available(string)
指定された名前が現在のXSLTプロセッサで使用可能であるかどうかを返す
boolean
format-number(number, string1, string2?)
数値numを指定された書式 string1, string2 に変換して返す
string format-number(29.62,'0.0')
29.6を返す
format-number(5800, '#,###')
5,800を返す

function-available(string)
指定された関数が使用できるかどうかを返す
string
generate-id(node-set?)
ノードを一意に識別するidを返す
string
system-property(string)
指定された文字列のシステムプロパティを返す
引数には以下の文字を設定します。
xsl:version ... XSLTのバージョン
xsl:vendor ... Parserを提供しているベンダ名
xsl:vendor-url ... ベンダのURL
ms:xml:version ... Parserのバージョン
string
 
unparsed-entity-uri(string)
  string