XML+XSL(xpath)
 
XSLの書き方(XPath) - if , choose -
 

1 selectやmatchの引数にはxpath表現で階層を判断する

 (1) エレメントの選択(基本)
  ・ elem/childelem 
  ・ * は,すべての子エレメントを選択 
  ・ */para は,para という名前の孫エレメントをすべて選択
  ・ . はコンテキストノードを選択する。
  ・ .//para は,para という名前の子孫エレメントを選択 
  ・ .. はコンテキストノードの親を選択
   
 (2) 何番目かのエレメントの選択
  ・ para[1] は最初のparaという名前の子エレメントを選択 
  ・ /doc/chapter[5]/section[2] は、5番目のchapterの2番目のsectionエレメントを選択

 (3) 途中の階層を飛ばして選択  
  ・ chapter//para は,chapterエレメントの para という名前の子孫エレメントを選択
  ・ //para はドキュメントルートのparaという名前の子孫エレメントをすべて選択
  ・ //olist/item は,itemという名前のエレメントのうち、olist という名前のエレメントを親に持つものをすべて選択
  
 (4) 関数での選択
  ・ para[last()] は,最後のparaという名前の子エレメントを選択
   
 (5) テキストノードの選択 
  ・ text() はすべての子テキストノードを選択 

 (6) 属性(アトリビュート)の選択
  ・ @name はname という名前のアトリビュートを選択 
  ・ @* はすべてのアトリビュートを選択 
  ・ ../@lang は親エレメントの lang という名前のアトリビュートを選択 

 (7) 条件判断(属性)
  ・ para[@type="warning"] はparaエレメントのうち、warningという値のtype という名前のアトリビュートを持つものをすべて選択
  ・ para[@type="warning"][5] は,paraエレメントのうち、@type="warning"の5番目のエレメントを選択
  ・ para[5][@type="warning"] は,5番目の paraエレメントが @type="warning"であれば,それを選択
  ・ employee[@secretary and @assistant] は,employeeエレメントのうち,secretaryとassistantのアトリビュートの両方を持つものをすべて選択
  ・ para[para2[@type="warning"]] は,para エレメントにいる状態で,para2 子エレメントの@type="warning"属性を持つものを選択

 (8) 条件判断(要素)
  ・ chapter[title="Introduction"] は,chapterエレメントのうち,title="Introduction" という子エレメントを1つ以上持つものを選択
    ・ chapter[title] はchapterエレメントのうち、title という名前の子エレメントを1つ以上持つものを選択


2 ノード集合関数
関数名 戻り値 説明
last() 数値 コンテキストサイズを取得 para[last()]
position() 数値 コンテキスト位置を設定,取得 para[position()=5]
count(node-set) 数値 ノード数を取得 count(para)
id(object) node-set ユニーク ID によりエレメントを選択する id("foo")
local-name(node-set?) string 引数に指定したノード集合内のノードのうち、ドキュメント順で展開された名前の最初のノードのローカルパートを返す
namespace-uri(node-set?) string 引数に指定したノード集合内のノードのうち、ドキュメント順で最初のノードの展開された名前のネームスペース URI を返す
name(node-set?) string 引数に指定したノード集合内のノードのうち、ドキュメント順で最初のノードの展開された名前を表現する QName を持つ文字列を返す

3 文字列関数

関数名 戻り値 説明
string(object?) string 文字列に変換する  
concat(string, string, string*) string 文字列を連結する  
starts-with(string, string) boolean 番目の引数に指定した文字列が2番目の引数に指定した文字列で始まっている場合に真を返し、それ以外は偽を返す  
contains(string, string) boolean 1番目の引数に指定した文字列が2番目の引数に指定した文字列を含んでいる場合に真を返し、それ以外は偽を返す。  
substring-before(string, string) string 2番目の引数に指定した文字列が1番目の引数に指定した文字列内で最初に見つかった場合に、その文字列よりも前にある文字列 (サブストリング) を返す substring-before("1999/04/01","/") は 1999 を返す
substring-after(string, string) string 2番目の引数に指定した文字列が1番目の引数に指定した文字列内で最初に見つかった場合に、その文字列よりも後にある文字列 (サブストリング) を返す substring-after("1999/04/01","/") は 04/01 を返し、 substring-after("1999/04/01","19") は 99/04/01 を返す
substring(string, number, number?) string 1番目の引数に指定した文字列のうち、2番目の引数に指定した位置から始まる文字列 (サブストリング) を、3番目の引数で指定した長さだけ返す substring("12345",2,3) は "234" を返す,substring("12345",2) は "2345" を返す
string-length(string?) 数値 文字列内の文字数を返す  
normalize-space(string?) string 引数に指定した文字列の空白文字を正規化して返す。つまり前後の空白文字を取り除き、連続する空白文字を1つの空白文字に置き換える  
translate(string, string, string) string 1番目の引数に指定した文字列内に2番目の引数に指定した文字列内の文字があった場合、その文字を3番目の引数に指定した文字列内の対応する位置の文字で置き換えて返す translate("bar","abc","ABC") は BAr を返す

4 数値関数

関数名 戻り値 説明
number(object?) 数値 数値に変換する  
sum(node-set) 数値 引数に指定したノード集合内の各ノードの文字列値を数値に変換し、それを合計した値を返す  
floor(number) 数値 引数に指定した数値よりも大きくない範囲で、最も大きい (最も正の無限大に近い) 整数を返す。  
ceiling(number) 数値 引数に指定した数値よりも小さくない範囲で、最も小さい (最も負の無限大に近い) 整数を返す。  
round(number) 数値 引数に指定した値に最も近い整数を返す。  

inserted by FC2 system