XMLBluePrintでXPathを使う方法
XMLBluePrintには、データの内容を確かめながらXPathの記述を確認する機能があります。
今回は、XMLのサンプルとして、PMDAに登録されている医薬品の情報を使ってみましょう。PMDAのXMLはあらかじめ定義されているスキーマに従っているので、どの医薬品の情報でも同じように扱うことができます。
※PMDA:独立行政法人医薬品医療機器総合機構
- ダウンロードしてきたXMLファイルをXMLBluePrintで開きます。
- 「表示」>「XPath」を選択します。
- 左側にXPath用パネルが開きます。
- XPathとして、
//ApprovalBrandName
「//」と入力すると、XML内で定義されているタグ一覧が見えるのでそこから選択すれば、タイポもなくなります。 - ここでXPathパネルの上のボタン、メニューを見てみます。
- 左の3つは、どの情報をパネル内に表示させるかです。今表示されているものは赤枠で囲まれています。
「1x」は、該当するものが1つある、ということです。
ちなみに左から3番目のボタンをクリックしてオフにすると、次のようになります。 - もう少し違うXPathを入れてみましょう。文字列を検索してみます。
//TrademarkName[contains(text(), 'Tranexamic')]
- 次は、「ApprovalBrandName」のように<Lang>がその下にある場合です。つまり次のような場合。
- ここはXPathのパス(Path)が活きることになります。つまり、XMLのタグの再送を示せばいいわけです。
ということで、//ApprovalBrandName/Lang[contains(text(), 'トラネキサム')]
XPathの記述が正しいかを見るのであればこれで十分ですが
ここまで、医薬品のXMLファイルを使ったのですが、XPathのテストには向いていない気がしました。というのも、ほぼどのタグも1回しか出てこないので。
なので、以前にも使った法令で試すことにしました。今回は下記からサンプルの法令データをダウンロードしました。
「サンプル法令1」は次のようなものです。
複数の情報が返ってきてほしいので、XPathを次のようにしました。
//TableColumn |
結果は、「16x」ということで16個のデータが返ってきました。
最初からこちらを使えばよかった。