XMLBluePrintでXPathを使う方法
XMLBluePrintには、データの内容を確かめながらXPathの記述を確認する機能があります。
今回は、XMLのサンプルとして、PMDAに登録されている医薬品の情報を使ってみましょう。PMDAのXMLはあらかじめ定義されているスキーマに従っているので、どの医薬品の情報でも同じように扱うことができます。
※PMDA:独立行政法人医薬品医療機器総合機構
- ダウンロードしてきたXMLファイルをXMLBluePrintで開きます。

PMDAからダウンロードしてきた医薬品XML - 「表示」>「XPath」を選択します。

- 左側にXPath用パネルが開きます。

XMLBluePrintのXPathパネル - XPathとして、
と入力すると、その下に<ApprovalBrandName>のデータが表示されます。//ApprovalBrandName
「//」と入力すると、XML内で定義されているタグ一覧が見えるのでそこから選択すれば、タイポもなくなります。
XPathで抽出されたデータ - ここでXPathパネルの上のボタン、メニューを見てみます。

- 左の3つは、どの情報をパネル内に表示させるかです。今表示されているものは赤枠で囲まれています。

「1x」は、該当するものが1つある、ということです。
ちなみに左から3番目のボタンをクリックしてオフにすると、次のようになります。 - もう少し違うXPathを入れてみましょう。文字列を検索してみます。
結果は、、、//TrademarkName[contains(text(), 'Tranexamic')]

- 次は、「ApprovalBrandName」のように<Lang>がその下にある場合です。つまり次のような場合。

- ここはXPathのパス(Path)が活きることになります。つまり、XMLのタグの再送を示せばいいわけです。
ということで、
と書きます。すると正しく見えました。//ApprovalBrandName/Lang[contains(text(), 'トラネキサム')]

ただ、これだとあくまでも<Lang>の情報で、その上位の階層は検索画面で見るしかないので、ご注意を。
XPathの記述が正しいかを見るのであればこれで十分ですが
ここまで、医薬品のXMLファイルを使ったのですが、XPathのテストには向いていない気がしました。というのも、ほぼどのタグも1回しか出てこないので。
なので、以前にも使った法令で試すことにしました。今回は下記からサンプルの法令データをダウンロードしました。

「サンプル法令1」は次のようなものです。

複数の情報が返ってきてほしいので、XPathを次のようにしました。
|
//TableColumn |
結果は、「16x」ということで16個のデータが返ってきました。

最初からこちらを使えばよかった。