2010-01-04 49 views
6

我在Firefox上使用xpath引擎。我有HTML:xpath:有没有办法在xpath中获取所有孩子的文本

<span> 
    <b>prefix one</b> not bold part 
</span> 
<span> 
    prefix two not bold part 
</span> 

我希望所有的span S作与“前缀一个”启动子文本。

我试过的XPath:

//span[starts-with(child::text(), "prefix one")] 

但由于b标签被干扰,这并不工作。你如何解决这个问题?

感谢

回答

14

如果你知道跨度不嵌套到其他的跨度,你可以试试这个:

//span[ starts-with(descendant-or-self::*/text(),"prefix one") ] 

descendant-or-self::*/text(),应该返回其在该子树的所有文本节点。我不知道该怎么starts-with()确切的作品,但在一些子树text()节点的开头,我想“前缀一个”即条件为真

+2

这等同于'//跨度[开始 - 用(。, 'prefix one')]'或者更健壮的'// span [starts-with(normalize-space(),'prefix one')]' – Tomalak 2010-01-06 13:29:00

-2
<xsl:template match="span"> 
<xsl:if test="contains(.,'prefix one')"> 
<xsl:copy-of select="."/> 
</xsl:if> 
</xsl:template> 
相关问题