我有以下Xpath表达式:
//*[not(input)][ends-with(@*, 'Copyright')]
我希望它能给我所有元素(输入除外),并带有以“版权”结尾的任何属性值。
我在Selenium 2 Java
API中执行它,webDriver.findElements(By.xpath(expression))
并得到以下错误:
该表达方式不是合法的表达方式
但是这些表达式可以正常工作:
//*[not(input)][starts-with(@*, 'Copyright')]
//*[ends-with(@*, 'Copyright')]
有任何想法吗?
我有以下Xpath表达式:
//*[not(input)][ends-with(@*, 'Copyright')]
我希望它能给我所有元素(输入除外),并带有以“版权”结尾的任何属性值。
这里有一些问题 :
ends-with()
仅是标准的XPath 2.0函数,因此您可能正在使用XPath 1.0引擎,并且由于它不知道称为的函数,因此它会正确引发错误ends-with()
。
即使您使用的是XPath 2.0处理器,ends-with(@*, 'Copyright')
在一般情况下该表达式也会导致错误,因为该ends-with()
函数被定义为最多接受单个字符串(xs:string?
)作为其两个操作数-但是@*
会产生一个以上字符串的序列在元素具有多个属性的情况下。
//*[not(input)]
并不是说“选择所有未命名的元素input
。真正的含义是:”选择没有子元素“ input”的所有元素。
解决方案 :
使用此XPath 2.0表达式: //*[not(self::input)][@*[ends-with(.,'Copyright')]]
对于XPath 1.0,请使用以下表达式:
....
//*[not(self::input)]
[@*[substring(., string-length() -8) = 'Copyright']]
这是使用XSLT对最后一个XPath表达式进行的简短完整的验证:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/*">
<xsl:copy-of select=
"//*[not(self::input)]
[@*[substring(., string-length() -8)
= 'Copyright'
]
]"/>
</xsl:template>
</xsl:stylesheet>
当此转换应用于以下XML文档时:
<html>
<input/>
<a x="Copyright not"/>
<a y="This is a Copyright"/>
</html>
产生想要的正确结果 :
<a y="This is a Copyright"/>
如果XML文档位于默认名称空间中 :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:x="http://www.w3.org/1999/xhtml"
>
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/*">
<xsl:copy-of select=
"//*[not(self::x:input)]
[@*[substring(., string-length() -8)
= 'Copyright'
]
]"/>
</xsl:template>
</xsl:stylesheet>
当应用于此XML文档时 :
<html xmlns="http://www.w3.org/1999/xhtml">
<input z="This is a Copyright"/>
<a x="Copyright not"/>
<a y="This is a Copyright"/>
</html>
所需的正确结果产生了:
<a xmlns="http://www.w3.org/1999/xhtml" y="This is a Copyright"/>
我尝试获取标题中包含一些单词的链接,但不包含一些单词,我使用以下代码,但它表示这不是有效的XPath表达式。 请在此处找到我的代码: 任何帮助将不胜感激!
这是我正在开发的wordpress插件的代码。 我是插件开发新手,不知道为什么会出现这样的错误:
本文向大家介绍解决IDEA Gradle构建报错'Cause: zip END header not found',包括了解决IDEA Gradle构建报错'Cause: zip END header not found'的使用技巧和注意事项,需要的朋友参考一下 1 问题描述 某天使用 Gradle 构建项目时, IDEA 报错如下: 2 原因 原因是下载的 Gradle ,也就是 zip 压缩包
(假设哈希已经完成)我正在尝试通过比较输入的密码和MongoDB集合中的哈希来执行用户身份验证功能。这是my model.js中的方法(复制自bcrypt指南): 和我的Controller.js: 并且当我获取check方法时,节点控制台会提示我的model.js中的cb不是函数的错误。我试过几种变通办法,但到目前为止没有一种奏效。有什么办法可以调试这个吗?
我试图提取所有这些标签,其类名符合正则表达式模式frag-0-0,frag-1-0等,从这个输入链接描述在这里 我正在尝试以下代码 这是我的回溯: 回溯(最近一次调用):文件“/home/ubuntu/workspace/vroniplag/vroni.py”,第116行,在op('Aaf')文件“/home/ubuntu/workspace/vroniplag/vroni.py”中,第101行,
我寻找答案,发现缺少引号或括号会导致这个错误。我检查了几次,并添加了丢失的引号,但第91行在底部,所以我无法找出它,除非它是“< code>else:”我从上到下看了看,但我不确定哪个会导致错误。请借给我你的眼睛找到问题。谢谢你