我有以下代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraphprotocol.org/schema/">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<link rel="alternate" hreflang="en" href="http://www.example.com"/>
<div id="" class="pgLinks">
<a href="/example-text" class="guiArw sprite-pagePrev ">«</a>
<a href="/example-text-2" class="paging taLnk ">1</a>
<span class="paging pageDisplay">2</span>
我需要一个xpath查询来查找此行:
<a href="/example-text-2" class="paging taLnk ">1</a>
如果值为“1”(在我的示例中),那么它会返回包含在其中的网址:
"/example-text-2"
如果值为 NOT “1”,那么我需要在代码顶部返回此标记中包含的网址:
<link rel="alternate" hreflang="en" href="http://www.example.com"/>
返回的网址为:"http://www.example.com"
在这个问题的帮助下,我得到了这个问题:
concat(//link[@hreflang='en']/@href and not(//div[@class='pgLinks']/a[. = '1']/@href), //div[@class='pgLinks']/a[. = '1']/@href)
逻辑有效但我得到的结果是:
A)“false / example-text-2”或B)“True”
我真正想要的只是每次都需要的网址。
答案 0 :(得分:0)
试试这个:
(//link[@hreflang='en'] | //div[@class='pgLinks']/a[.='1'])[last()]/@href
这是做什么的:
(... | ...)
获取link元素和锚元素(如果存在)。[last()]
占用最后一个。请注意,元素将根据它们在文档中出现的顺序进行排序。@href
将返回元素的href属性值。关于包含网址主要部分的评论中的问题,是的,在这种情况下是可能的。如果您认为所需的网址是:
http://www.example.com
http://www.example.com/example-text-2
您会注意到这是链接href和锚点href的串联。无论锚元素是否存在,都是如此。要获得两个所需的URL,xpath可以简单地为:
concat( //link[@hreflang='en']/@href, //div[@class='pgLinks']/a[.='1']/@href )