xml - regulares - Concatenar valores de nodo mĂșltiple en xpath
xpath online (5)
Aquí viene una solución con XSLT
:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="//element3">
<xsl:value-of select="element4/text()" />.<xsl:value-of select="element5/text()" />
</xsl:template>
</xsl:stylesheet>
Tengo un XML que se parece a esto
<element1>
<element2>
<element3>
<element4>Hello</element4>
<element5>World</element5>
</element3>
<element3>
<element4>Hello2</element4>
<element5>World2</element5>
</element3>
<element3>
<element4>Hello3</element4>
<element5>World3</element5>
</element3>
</element2>
</element1>
Estoy tratando de usar Xpath para obtener un resultado como este:
Hello.World
Hello2.World2
Hello3.World3
Usé la función concat a continuación, pero no obtuve el resultado correcto.
Función Concat:
concat(/element1/element2/element3/element4/text(),".", /element1/element2/element3/element5/text())
Resultado que obtuve:
Hello.World
¿Cómo puedo obtener el resultado correcto? Estoy usando XPath con Camel Spring DSL.
Editar:
Las soluciones en XQuery, XSLT y SPel también son apreciadas.
Editar
Probé la combinación de cadenas y no funcionó:
función de unión de cadena:
string-join((/element1/element2/element3/element4/text(), /element1/element2/element3/element5/text()),".")
Resultado que obtuve:
Hello.Hello2.Hello3.World.World2.World3
Prueba esta expresión ...
string-join(//element3/(concat(element4/text(), ''.'', element5/text())), " ")
Usé el método concat y funciona bien.
concat(//SomeElement/text(),''_'',//OtherElement/text())
for $d in $doc/element2/element3 return fn:string-join(fn:data($d/element()), ".")
.
$ doc almacena el Xml.
<xsl:template match="element3">
<xsl:value-of select="element4,element5" separator="."/>
</xsl:template>