2017-05-19 89 views
1
cover: $main//*[has-class("aligncenter wp-image-121146 size-large")]//img 
    cover: $main//img[has-class("aligncenter wp-image-121146 size-large")] 

字符串有一个静态部分aligncenter WP-图像 -和动态部分“”我想在这里做的是串接所有posibles“如何使用通配符XPath的

在bash是财产以后这样的:

"aligncenter wp-image-"* 

怎样才能让我在Xpath的?

+0

你需要说XPath的哪个版本。在XPath 2.0(或3.0或3.1)中,可以使用正则表达式的'matches()'函数。在1.0中,你只有'starts-with()'和'contains()'函数。 –

回答

0

我认为这将工作:

'//E[@class="aligncenter" and contains(concat(" ", @class, "wp-image-"), " C ")]' 

这可能是更稳健的,没有尝试过很多and,它看起来像你期望的类是按照这个顺序:

'//E[contains(concat(" ", @class, "aligncenter wp-image-"), " C ")]' 

我没有,虽然测试它,无论哪种方式,这会帮助你:

https://gist.github.com/glenpierce/400d5b569094b902f06789d80757454e

0

没有足够的信息来为这个问题提供精确的XPath解决方案,因为您没有提供示例XML/HTML,并且两个尝试的XPath表达式(如果它们实际上都是)无效。

要回答这个标题,您不能像在XPath 1.0中那样使用wildcalrd,XPath 1.0是实施最广泛的XPath版本。但你可以使用或starts-with()函数。后者似乎更适合于这种特殊情况。例如,下面的XPath返回所有img元素,anyhwere的文档,其中class属性值与子开始 'aligncenter WP-图像 - ' 在:

//img[starts-with(@class, 'aligncenter wp-image-')] 

demo