假设我们有这个:
<a href="www.something/page/1">something</a>
现在有办法让@href返回如下:“www.something / page / 2”。基本上返回@href值,但substring-after(。,“page /”)递增1.我一直在尝试像
//a/@href[number(substring-after(.,"page/"))+1]
但它不起作用,我认为我不能使用
//a/@href/number(substring-after(.,"page/"))+1
这不是一个分页思考,所以我可以使用分页,我只是选择了一个例子。关键是要找到一种在xpath 1.0中增加值的方法。有什么帮助吗?
答案 0 :(得分:0)
你能做的是
concat(
translate(//a/@href, '0123456789', ''),
translate(//a/@href, translate(//a/@href, '0123456789', ''), '') + 1
)
这样就可以将'href'属性与所有被删除的数字连接起来,其总和为1,'href'除了数字之外的任何数字都被移除。
这可能就足够了,您的网址中的所有数字都出现在您的网址末尾。但通常XPath 1.0擅长选择输入中的节点,但不善于根据节点值的部分构造新值。
答案 1 :(得分:0)
有一种更简单的方法可以实现这一点,只需在页面后面加上子字符串,添加1,然后将它们全部重新组合在一起:
此XPath基于当前节点@href
属性:
concat(substring-before(.,'page/'),
'page/',
substring-after(.,'page/')+1
)
答案 2 :(得分:0)
您的操作顺序有点不好。使用这样的东西:
substring-after(//a/@href, 'page/') + 1
请注意,没有必要将字符串值显式转换为数字。来自the spec:
数字运算符将其操作数转换为数字,就像使用 调用数字函数。
全部放在一起:
concat(
substring-before(//a/@href, 'page/'),
'page/',
substring-after(//a/@href, 'page/') + 1)
结果:
www.something/page/2