の前後にある文字列の部分を完全に一致させたいという要件があると仮定すると(つまり、サブドメインも一致させたい)、次の解決策が機能します。//
/
.//a[contains(' site.com othersitesite.com thirdsite.com ',
concat(' ', substring-before(substring-after(
concat(@href, '/'), '//'), '/'), ' '))]
これは、それぞれがスペースで囲まれたすべての可能なターゲット文字列を含む大きな文字列で、スペースで囲まれたターゲット文字列を探しているためです。
具体例を使ってみましょう。次のドキュメントがあるとします。
<r>
<a href="http://google.com"/>
<a href="http://yahoo.com/"/>
<a href="http://bing.com"/>
<a href="http://altavista.com"/>
</r>
そして、 google.com、yahoo.com、およびaltavista.com (現在のノードに対して) のアンカーを一致させたいと考えています。次の式はそれを実現します。
.//a[contains(' google.com yahoo.com altavista.com ',
concat(' ', substring-before(substring-after(
concat(@href, '/'), '//'), '/'), ' '))]
上記の要件を満たしていない可能性があります。その場合は、@ Dimitreの(良い)回答を使用してください。このソリューションは、独自の要件をさらに理解するのにも役立つ可能性のある代替手段として提示されているにすぎません。