我有这样的xpath表达式:
link[@rel='alternate' and @type='text/html' or not(@rel)]/@href | link/text()
实际上我不明白符号|
答案 0 :(得分:2)
符号|是一个工会。它抓住所有与左手侧或右手侧匹配的元素。
xpath所说的是:
还抓住(因为结合):
有点奇怪的XPath,但就是这样。
答案 1 :(得分:0)
实际上我不明白 符号|
根据 W3 XPath 2.0 Spec :
中的定义•工会和|经营者 当量。他们采取两个节点 序列作为操作数并返回a 包含所有节点的序列 发生在任一操作数中。
当然,“union”(英文单词)运算符仅在XPath 2.0和XPath 1.0中添加,我们只有它的早期同义词,由|
字符表示。
因此,在:
的特定情况下link[@rel='alternate' and @type='text/html' or not(@rel)]/@href | link/text()
上面的XPath表达式选择两个集合的联合:
由link[@rel='alternate' and @type='text/html' or not(@rel)]/@href
所有节点,由link/text()
Union是集合理论(和数学)中的标准操作,虽然符号'U'用于表示那里的联合。
引用Wikipedia 的定义:
两组A和B的联合是 在A或中的点的集合 在B(或两者中):
一个简单的例子:
A = {1,2,3,4,5,6}
B = {1,5,6,7,8}
A U B = {1,2,3,4,5,6,7,8}
答案 2 :(得分:-1)
XPath中的管道(|)组合了表达式。因此,这将返回链接元素(与谓词匹配)的href属性和任何链接的文本内容
所以给出像
这样的片段 <link>test</link>
<link href="http://www.google.com">Google</link>
<link rel="zzzz" href="http://www.stackoverflow.com">Stack Overflow</link>
你会得到:
test
http://www.google.com
Google
Stack Overflow