次のような一連の変数タイプがあります。
abc1A, abc1B, abc3B, ...
xyz1A, xyz2A, xyz3C, ...
data1C, data2A, ...
さまざまな xml 形式で保存されます。
<area name="DataMap">
<int name="number" nullable="true">
<case var="abc2,abc3,abc5">11</case>
<case var="abc4,abc6*">8</case>
<case var="data1,xyz7,xyz8">22</case>
<case var="data3A,xyz{9},xyz{5A,5B,5C}">24</case>
<case var="xyz{6,4A,4B,4C}">20</case>
<case var="other01">15</case>
</int>
</area>
たとえば、xyz5A のようなインスタンスが何にマップされているかを照会したいと考えています。クエリは 24 を返す必要がありますが、xml ノードでの参照が "xyz4A" のように明示的であるか、"xyz4*" のようなワイルドカードを使用しているか、または上記のような中かっこであるかは事前にわかりません。
これはその行の文字列を照会し、ヒットを正常に返します。
xpath '/area[@name="DataMap"]/int[@name="number"]/case[contains(@var,"xyz")][contains(@var,"5A")]'
しかし、正しくない data5A のヒットも返します。
xpath '/area[@name="DataMap"]/int[@name="number"]/case[contains(@var,"data")][contains(@var,"5A")]'
上記の一貫性のない(ただし、有効だと思います)xmlを解析するxpath/その他のクエリ構造はありますか?明示的な文字列の一致と、ワイルドカードおよび中括弧で囲まれた形式に対してのみクエリを実行できるようです。