要素や属性を表すパスは、パスの区切りとして“//”を使用すると複数の階層を省略して指定できます。
深い階層をもつ要素や属性を指定する場合は、以下のXML検索式のようにこの省略記法を使うと便利です。
/[/受注伝票//商品番号 = "S001" ]
このXML検索式は、「ルート要素である受注伝票配下の任意の階層にある商品番号が“S001”であるXMLデータ」を表し、以下のXMLデータ1に一致する条件です。
<?xml version='1.0' encoding='UTF-16' ?> <受注伝票> <伝票番号>AE32521-10</伝票番号> <発行元>A社</発行元> <商品リスト> <商品> <商品名>シャンプー</商品名> <商品番号>S001</商品番号> <個数>12</個数> </商品> <商品> <商品名>リンス</商品名> <商品番号>R002</商品番号> <個数>24</個数> </商品> </商品リスト> </受注伝票>
<?xml version='1.0' encoding='UTF-16' ?> <受注伝票> <伝票番号>AE32521-20</伝票番号> <発行元>A社</発行元> <商品リスト> <商品> <商品名>リンス</商品名> <商品番号>R002</商品番号> <個数>24</個数> </商品> </商品リスト> </受注伝票>
また、組織の人員を表した“同じ名前の要素が複数の階層に現れるXMLデータ”のXMLデータのように、社員の名前を表現する“名前”という要素が組織の階層に合わせてさまざまな階層で現れる場合は、以下のXML検索式のように“//”を使用したパスを用いることで階層を意識しない条件を指定できます。
/[//名前 = " 佐藤" ]
このXML検索式は、「任意の階層にある要素“名前”が“佐藤”であるXMLデータ」を表し、以下のXMLデータ2に一致する条件です。
<?xml version='1.0' encoding='UTF-16' ?> <組織 name='第1開発部'> <社員 役職='部長'> <名前>林</名前> <部下> <社員 役職='課長'> <名前>森田</名前> </社員> <社員 役職='課長'> <名前>大木</名前> </社員> </部下> </社員> </組織>
<?xml version='1.0' encoding='UTF-16' ?> <組織 name='第2開発部'> <社員 役職='部長'> <名前>鈴木</名前> <部下> <社員 役職='課長'> <名前>田中</名前> </社員> <社員 役職='課長'> <名前>佐藤</名前> </社員> </部下> </社員> </組織>