XMLファイルからノードを取得したいのですが、ノードには「latest_」などのプレフィックスが付いていますが、これは変更される可能性があり、XSLTが可能な限り流動的であることを切望しています。使用したいXPathは次のとおりです。
/data/stats/*_cost
これはlatest_cost
、newest_cost
、anything_cost
と一致する必要があります。これを行う方法はありますか?
乾杯:-)
これは、名前空間の「_cost」に等しい名前の最後の5文字を持つ要素を選択する正しいXPath 1.0式です。
/data/stats/*[substring(name(), string-length(name()) - 4) = '_cost']
contains
を使用することもできます
例えば
/data/stats[contains(.,'_cost')]
XPath 1.0では、/data/stats/*[substring-after(name(), '_cost') = '']
パターンを使用できます。要素の名前が__cost
_サフィックスで終わるかどうかを確認します。
XPath 2.0にはfn:ends-with(str, str)
があり、対応する式は*[ends-with(name(), '_cost')]
になります。
上記は私にはうまくいきませんでした。次のように「少し」修正する必要がありました。
/data/stats/*[contains(name(),'_cost')]