2010-01-04 9 views
6

Estoy usando el motor xpath en Firefox. Tengo html:xpath: ¿Hay alguna manera de obtener todo el texto de los niños en xpath

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

quiero que todos los que tienen span s texto niño que empieza con "prefijo de uno".

He probado el XPath:

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

pero esto no funciona porque la etiqueta b está interfiriendo. ¿Cómo resuelves esto?

gracias

Respuesta

14

Si sabe que vanos no está anidado en otros tramos se puede intentar esto:

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

descendant-or-self::*/text(), debería devolver todos los nodos de texto que se encuentran en este subárbol. No sé cómo funciona exactamente starts-with() pero supongo que cuando algunos de los nodos en text() subárbol comienza con "uno prefijo" que la condición es verdadera

+2

Esto es equivalente a '// palmo [starts-con (., 'prefijo uno')] 'o, más robusto,' // span [starts-with (normalize-space(), 'prefix one')] ' – Tomalak

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