secuencias sacar regulares nodos herramienta expresión expresiones evaluar ejemplos debe consultas conjunto como aprender xpath

sacar - ¿Cómo devolver texto de varios elementos en una cadena usando XPath?



xpath expresiones regulares (2)

Me gustaría utilizar XPath para extraer todo el texto de todos los elementos <li> , que están en la lista de listas especiales y devolver una cadena separada por espacios o comas. es posible?

Digamos que el DOM incluye el siguiente HTML:

<ul class="specialList"> <li>one</li> <li>two</li> <li>three</li> <li>four</li> </ul>

Salida deseada

one, two, three, four

O

one two three four


En XPath 1.0 , esto solo es posible si conoce el número de elementos por adelantado usando concat(...) :

concat(//li[1], '', '', //li[2], '', '', //li[3], '', '', //li[4])

Si tiene suerte, puede simplemente devolver todas las cadenas de resultados para //li/text() y establecer los parámetros de salida de su procesador XPath para concatenarlas como desee. Esto depende del procesador, por lo que no hay una solución general y esta no es una opción si desea seguir procesando los resultados dentro de XPath.

En XPath 2.0 , puede usar fn:string-join($sequence, $delemiter) para la entrada de longitud arbitraria:

fn:string-join(//li, '', '')


Aunque esto es posible usando XSLT 1.0

<xsl:for-each select="ul/li"> <xsl:value-of select="."/> <xsl:if test="position() != last()"> <xsl:text>,</xsl:text> </xsl:if> </xsl:for-each>