XPath

XPathとは、XML中の要素を特定する方法を定めた規格です。XPathとは - IT用語辞典 e-Words

データモデル (Data Model)

ノード 説明  
ルートノード
root node
最上位ノード /
要素ノード
element node
XMLの要素を表すノード  
属性ノード
attribute node
要素内で指定された属性を表すノード @
テキストノード
text node
開始タグと終了タグで挟まれた文字列データ text()
処理命令ノード
processing instruction node
処理命令を表すノード  
コメントノード
comment node
コメントを表すノード  
名前空間ノード
namespace node
名前空間を表すノード  
@IT:XML文書内の位置を正確に指し示すXPath 吉田稔、青木秀起 (2002/06/18)

class属性

特定のclass属性を持つ要素にマッチさせるには、次のような方法があります。

  1. //*[@class="foo"]
  2. //*[contains(@class,"foo")]
  3. //*[contains(concat(" ",@class," "), " foo ")]
  4. //*[contains(concat(" ",normalize-space(@class)," "), " foo ")]

それぞれマッチする正確性が異なり、後の方がより正確になります。

  1. class="foo"にのみマッチ ("foo bar"にはマッチしない)
  2. class属性に"foo"の文字列を含む場合にマッチ ("afoo"にもマッチ)
  3. class属性に前後にタブや改行がない"foo"を含む場合にマッチ
  4. class属性に"foo"を含む場合にマッチ
特定のclass属性を持った任意の要素にマッチするXPath | 3.14

使用例

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<a id="test">
    <b>ABC</b>
    <c>10</c>
    <c>20</c>
</a>
XML文書
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html" encoding="utf-8" />

    <xsl:template match="/">
        <xsl:value-of select="/a/b" /> <!-- XPath -->
    </xsl:template>

</xsl:stylesheet>
XSLTスタイルシート

「ABC」と出力されます。

<xsl:value-of select="..."/>のselect属性の値を書き換えると、下表のように出力が変化します。

XPath 出力
/a/b ABC
/a/b/text() ABC
//a ABC 10 20
//b ABC
/a/@id test
/a/c 10
/a/c[1] 10
/a/c[2] 20
XMLの情報サイトから、まとめて検索