假设您需要完全匹配出现//
在任何后续之后和之前的字符串部分/
(即,您也想匹配子域),那么以下解决方案有效:
.//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 的(好)答案。此解决方案仅作为一种可能的替代方案提供,它也可以帮助您进一步了解自己的需求。