2010-01-04 10 views
6

Ich benutze die Xpath-Engine in Firefox. Ich habe html:XPath: Gibt es eine Möglichkeit, alle Kinder Text in XPath

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

ich alle span s wollen, dass Kinder Text haben, die mit „Präfix ein“ beginnen.

habe ich versucht, den XPath:

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

aber das funktioniert nicht, weil die b Tag stören wird. Wie löst man das?

dank

Antwort

14

Wenn Sie wissen, dass Spannweiten Sie versuchen, diese können nicht in andere Spannweiten verschachtelt:

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

descendant-or-self::*/text(), zurückkehren sollte alle Textknoten, die in diesem Teilbaum sind. Ich weiß nicht, wie starts-with() genau funktioniert, aber ich nehme an, wenn einige text() Knoten in Teilbaum beginnt mit „Präfix ein,“ dass die Bedingung wahr ist

+2

Dies entspricht '// Spanne [starts-with (., 'prefix one')] 'oder, robuster,' // span [beginnt mit (normalize-space(), 'prefix one')] ' – Tomalak

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