stats name library language group-by xquery marklogic

group-by - name - r repository



¿Cómo usar Group By en Marklogic? (4)

Quiero usar Group By en xquery. ¿Puede alguien decirme cómo utilizar Group By en Marklogic?


Alternativamente, puede llamar a XSLT usando xdmp:xslt-invoke xdmp:xslt-eval o xdmp:xslt-eval . El procesador XSLT de MarkLogic es compatible con XSLT 2.0, que incluye soporte completo para <xsl:for-each-group> .


xquery version "1.0-ml"; let $xml:= <Students> <Student Country="England" Name="Dan" Age="20" Class="C"/> <Student Country="England" Name="Maria" Age="20" Class="B" /> <Student Country="Australia" Name="Mark" Age="22" Class="A" /> </Students> let $xsl:= <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions"> <xsl:template match="Students"> <result> <xsl:for-each-group select="Student" group-by="@Country"> <country> <xsl:attribute name="name"><xsl:value-of select="fn:current-grouping-key()"/></xsl:attribute> <xsl:for-each select="fn:current-group()/@Name"> <name><xsl:value-of select="."/></name> </xsl:for-each> </country> </xsl:for-each-group> </result> </xsl:template> </xsl:stylesheet> return xdmp:xslt-eval($xsl,$xml)



MarkLogic cubre partes de XQuery 3.0 (con su dialecto de 1.0 ml), pero desafortunadamente falta el grupo FLWOR por soporte.

Sin embargo, aún puede crear grupos mediante la sintaxis similar que logrará los mismos resultados. Aquí hay un ejemplo de XQuery:

for $d in distinct-values(doc("order.xml")//item/@dept) let $items := doc("order.xml")//item[@dept = $d] order by $d return <department code="{$d}">{ for $i in $items order by $i/@num return $i }</department>

HTH