XPath基礎編 - 2.基本文法
フォローするXPathの文法の基礎を学ぶことは、XPathを使ってXMLドキュメントからデータを選択することができるようになる重要なステップです。
-
XMLとXPathの関係 XPathは、XML文書の特定のノード(要素、属性、テキストなど)を選択するための文法です。XMLとは、ツリー構造を持つデータ形式であり、要素、属性、テキストなどのノードで構成されています。XPathは、XMLのツリー構造の中で、目的のノードを選択するための方法を提供します。
-
XPath式の構成 XPath式は、ノードの位置、関係、属性、値などから構成されます。XPath式には、パス表現、述語、演算子、関数などがあります。これらを組み合わせることで、XMLドキュメントの中から目的のデータを選択することができます。
-
XPathのノードの種類と軸 XPathには、要素、属性、テキスト、コメント、処理命令などのさまざまなノードがあります。XPathには、ノードを相対的または絶対的に指定する方法があります。また、XPathは、現在のノード、親ノード、子ノードなど、異なる軸を使用してノードを指定することができます。
例えば、以下のXMLドキュメントを考えてみましょう。
<books>
<book id="1001">
<title>Harry Potter and the Philosopher's Stone</title>
<author>J.K. Rowling</author>
<year>1997</year>
</book>
<book id="1002">
<title>Harry Potter and the Chamber of Secrets</title>
<author>J.K. Rowling</author>
<year>1998</year>
</book>
</books>
このドキュメントから、XPathを使って次のようなデータを選択することができます。
- すべての書籍のタイトル:
/books/book/title
- 1001番の書籍のタイトル:
/books/book[@id='1001']/title
- J.K. Rowlingが著者のすべての書籍のタイトル:
/books/book[author='J.K. Rowling']/title
- 1997年より前に発行された書籍のタイトル:
/books/book[year<'1997']/title
軸 preceding-sibling::とfollowing-sibling::
preceding-sibling::およびfollowing-sibling::はXPathの軸の一種で、指定されたノードの前および後ろにある兄弟ノードを選択するために使用されます。両方の軸は、親ノードから指定されたノードまでの兄弟ノードを返します。
例えば、以下のHTMLがあるとします。
<div>
<p>これは1番目の段落です。</p>
<p>これは2番目の段落です。</p>
<p>これは3番目の段落です。</p>
<p>これは4番目の段落です。</p>
<p>これは5番目の段落です。</p>
</div>
このHTMLで、preceding-sibling::軸を使用して、要素「3番目の段落」の直前にある要素「2番目の段落」を選択するには、次のXPathを使用します。
//p[text()="これは3番目の段落です。"]/preceding-sibling::p[1]
このXPathは、要素「3番目の段落」を「//p[text()="これは3番目の段落です。"]」で選択し、その前にある要素「2番目の段落」を「preceding-sibling::p[1]」で選択しています。
同様に、following-sibling::軸を使用して、要素「3番目の段落」の直後にある要素「4番目の段落」を選択するには、次のXPathを使用します。
//p[text()="これは3番目の段落です。"]/following-sibling::p[1]
このXPathは、要素「3番目の段落」を「//p[text()="これは3番目の段落です。"]」で選択し、その後にある要素「4番目の段落」を「following-sibling::p[1]」で選択しています。
このように、preceding-sibling::およびfollowing-sibling::軸を使用することで、指定されたノードの前および後ろにある兄弟ノードを選択することができます。
続きを読む