如何解决元素选择器 XPath 中的通配符
我有以下 XPath
SELECT Devices.*,DeviceData.*
from Devices
INNER JOIN DeviceData on Devices.site = DeviceData.site
WHERE Devices.Site = X
30 是动态变化的,所以需要这个通配符
例如
//*[@href="/slug1/30/slug2/slug3/slug4" and normalize-space(text())="Push"]
但这似乎不起作用。
解决方法
如果您想匹配 XPath 本身中的任何元素,*
会很好,但您希望匹配文本中的任何子字符串。在 XPath 1.0 中,您可以使用 starts-with()
和 XPath 1.0 equivalent of ends-with()
。
由于您可以使用 XPath 2.0,因此请使用 matches()
来匹配正则表达式。
对于通配符位置的一个或多个字符,使用.+
:
//*[matches(@href,"/slug1/.+/slug2/slug3/slug4") and normalize-space(text())="Push"]
仅对于数字,使用 \d+
等
不确定您使用的是哪种编程语言,我相信它是 xslt。
根据我的理解,您可以对输入标签使用通配符,但不能对标签的值使用通配符。
我建议在 xslt 中使用 contains 功能,方法是滑动使用字符串功能和验证的值
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。