0
votes

somme des valeurs XML basées sur plusieurs regroupements

Désolé, je suis plutôt nouveau au traitement XML ... J'ai ce qui suit:

for all divisions
  for all subdivisions
    print divisionName, subdivisionName, sum(values)


0 commentaires

4 Réponses :


1
votes

Vous pouvez utiliser cette simple xquery. Les énoncés code> déclarations code> sont uniquement destinés à définir le mode de sortie droit.

D1 SD1 1
 D1 SD2 3
 D2 SD3 4


0 commentaires

1
votes

pense que je pensais que ceci (supprime également WhitSpace):

for $divisionName in distinct-values(//divisionName)
    for $subdivisionName in distinct-values(//subdivisionName)
        return concat($divisionName,$subdivisionName,sum(//division[divisionName = $divisionName]//subdivision[subdivisionName = $subdivisionName]//value),'
')        


0 commentaires

0
votes
<xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="divisions">
        <xsl:for-each select="division">
            <xsl:for-each select="subdivisions/subdivision">
                <xsl:value-of select="ancestor::subdivisions/preceding-sibling::divisionName"/><xsl:text> </xsl:text>
                <xsl:value-of select="subdivisionName"/><xsl:text> </xsl:text>
                <xsl:value-of select="sum(values/value)"/>
                <xsl:text>&#x0a;</xsl:text>
            </xsl:for-each>
        </xsl:for-each>
    </xsl:template>
You may try in xslt

0 commentaires

0
votes

Il n'est pas clair si vous devez regrouper (car il y a dupliquer division éléments et / ou dupliquer Subdivision éléments à l'intérieur d'un division ) , si vous n'avez pas de duplicates, vous pouvez utiliser (xquery 3.1) xxx

https://xquereryfiddle.liberty-development.net/bfukv8j

Si vous devez regrouper, alors XQuery en tant que clause par exemple xxx

https: //xqueryfiddle.liberty-développement. NET / BFUKV8J / 2

Tant pour la performance, vous devrez peut-être vérifier auprès du processeur XQuery de votre choix, dans une base de données XQuery, elle dépend de toute façon sur l'organisation et les index de la base de données que je pense. < / p>

XSLT 3 a le traitement en continu, mais lorsque vos éléments ont des touches de regroupement des éléments enfants, vous devez copier des éléments: xxx

https://xsltfiddle.liberty-development.net/gwvjqej


0 commentaires