1. ホーム
  2. Web プログラミング
  3. XML/RSS
  4. XMLの基礎知識

XPath入門 - XSLチュートリアル - 3

2022-01-18 13:12:14
XPathとは
  XPath (extensible path) は、XSL 変換 [XSLT] と XPointer [XPointer] の共有機能に、共通の構文とセマンティクスを提供した結果です。XPath は、URI や XML 属性値内での XPath の使用を容易にするために、簡潔で非 XML な構文を使用しています。XPath は、XML ドキュメントの表面的な構文ではなく、抽象的な論理構造に対して動作します。XPath の名前は、URL において、XML ドキュメントの階層構造を移動するパスマーカーとして使用されていることから派生しています。 {XPath
XPathはアドレス指定だけでなく、マッチング(ノードがパターンに一致するかどうかを調べること)にも使える自然なサブセットを持つように設計されており、この目的でのXPathの使用はXSLTで説明されている。  {この目的のための XPath の使用は、XSLT で説明されています。
  XPathはXML文書をノードの木としてモデル化し、要素ノード、属性ノード、本文ノードなど、さまざまな種類のノードが存在します。XPathでは、ノードの種類ごとに文字列の値を計算する方法を定義しています。また、ノードの種類によっては、名前を持つものもあります。XPath は XML 名前空間 [XML Names] を完全にサポートしています。このように、ノードの名前はローカルパートと、場合によっては空の名前空間 URI からなるペアとしてモデル化されます; これを拡張と呼びます。 {これは拡張と呼ばれる。
XPath で返される型
  1:ノードの集合(順序、重複のないノードの集合) 
  2:ブール値(真または偽) 
  3:数値(浮動小数点数) 
  4:文字列(UCS文字の並び順) 
アドレスパス
アドレスパスは、Xpathがアドレスを特定するために使用する文であり、以下の基本構文がある。
/はXMLドキュメントのルートノードを選択します。 
/* ルートノードのすべての子ノードを選択します。
* 任意の子ノードにマッチ 
/xはルートノードのすべてのx要素を選択します。 
//book ルートノードのすべての子孫ノードにあるすべての book 要素を選択します。 
//@id id属性を含む子ノードを選択します。 
para[1] は、コンテキストノードの最初のパラ子ノードを選択します。
//vendor[@id='id1_2']/book "attribute id='id1_2'" に一致するすべての book 要素を選択します。 
/bib/vendor/book[year>2002] "element year>'2002'" にマッチするブック要素をすべて選択します。 
text() は、コンテキストノードのすべてのボディノードの子を選択します。
name は、コンテキストノードの name 属性を選択します。
コンテキストノードのすべての属性を選択します。
*/para は,コンテキストノードのすべてのパラ孫を選択します. [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...]   [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...]
substring-before(string、string)関数は、最初の文字列引数が2番目の文字列引数の前に現れる部分文字列を返し、最初の文字列引数が2番目の文字列引数を含まなければ空文字列を返します。例えば、substring-before("1999/04/01","/")は1999を返します。
substring-before(string、string)関数は、最初の文字列引数が2番目の文字列引数の前に現れる部分文字列、または最初の文字列引数が2番目の文字列引数を含まなければ空文字列を返します。例えば、substring-before("1999/04/01","/")は1999を返します。
substring( string , number , number?) 関数は、文字列の最初の引数が、2番目の引数で指定された位置から始まり、3番目の引数の長さで終わる部分文字列を返します。例えば、substring("12345",2,3)は、"234 "を返します。第3引数がない場合は、第2引数で指定された位置から始まり、終了するまでの部分文字列を返します。例えば、substring("12345",2)は、"2345 "を返します。
string-length( string?) は文字列に含まれる文字数を返します。
normalize-space(string?)関数は、空白文字の正規化文字列を返す。これは、先頭と末尾の空白文字を削除し、連続した空白文字を1つの空白文字に置き換える関数である。
translate(string, string, string)関数は,第1引数の文字列を,第2引数の文字列に現れる文字を第3引数の対応する位置の文字に置き換えたものを返します.たとえば,translate("bar", "abc", "ABC")は,文字列BArを返します.第2引数の文字が第3引数の対応する位置にない場合(第2引数の文字列が第3引数の文字列より長いため)、第1引数の文字が削除されます。たとえば、translate("--aaa--", "abc-", "ABC")は、"AAA "を返します。第2引数の文字が複数回出現した場合は、最初に出現した文字が置換文字に決定される。第3引数の文字列が第2引数の文字列より長い場合、余分な文字は無視されます。
ブール関数
boolean(オブジェクト)
not(boolean)
true()
false()
ラング(文字列)
数値演算機能
number(object?)関数のパラメータは、以下に従って数値に変換されます。
sum(node-set) パラメータノード集合の各ノードについて,文字列を数値に変換した値の和を返す。
floor(number) 引数より大きくない(正の無限大に最も近い)整数の最大数を返します。
ceiling(number) 関数は、引数より小さくない(負の無限大に最も近い)整数の最小個数を返します。
round(number)関数は、引数に最も近い整数を返します。そのような数が2つある場合は、正の無限大に最も近いものが返されます。引数がNaNの場合は、NaNが返されます。引数が正の無限大の場合は、正の無限大が返されます。引数が負の無限大の場合は、正の無限大が返されます。引数が負の無限大の場合、負の無限大が返される。引数が正のゼロの場合、正のゼロが返される。引数が負のゼロの場合、負のゼロが返される。もし、引数が0より小さく、-0.5以上の場合は、負の0を返します。
仕様書参照
XML 参照 http://www.w3.org/TR/1998/REC-xml-19980210
XMLの名前 http://www.w3.org/TR/REC-xml-names
XSLT http://www.w3.org/TR/xslt を参照してください。
部分参照 XML パス言語(XPath)バージョン 1.0