Summieren von XML-Daten in zwei Arrays

8

Ich bin sehr neu in XSL und XML und habe, hoffe ich, eine einfache Frage. Ich habe eine XML-Datei, die zwei Arrays von Zahlen enthält, die ich summieren muss. Hier ist ein Teil der XML-Datei

%Vor%

Was ich wirklich will, ist die Summe der Elemente der beiden Intensity-Arrays, die addiert werden. So wäre es etwa so:

FirstArray [0] + SecondArray [0] = sum [0] was wirklich

ist

105.84667205810547 + 1.0229243040084839 = 106.8696 und

ErstesArray [1] + ZweitesArray [1] = Summe [1]

105.83854675292969+ 48.868541717529297 = 154.7071 und so weiter ...

Es gibt ein paar andere Dinge zwischen diesen beiden, die ich jetzt ignorieren muss.

Danke!

    
user918967 02.10.2011, 04:55
quelle

3 Antworten

2

Macht das Folgende, was Sie brauchen?

%Vor%

Ich habe die folgende Ausgabe erhalten, als ich es mit Ihren Beispieldaten ausgeführt habe:

%Vor%     
Luke Woodward 02.10.2011 08:46
quelle
2

Aktualisiert :

Sehen Sie sich sum function an, z. B.:

%Vor%

Diese Vorlage summiert Intensity -Elemente für beide IntensityArray .

Ausgabe:

%Vor%     
Kirill Polishchuk 02.10.2011 05:27
quelle
1

Diese Transformation erzeugt das gewünschte Ergebnis, selbst wenn die beiden Knoten-Sets eine unterschiedliche Anzahl von Knoten haben und / oder einige der Knoten im zweiten Knoten-Satz keinen Wert haben, der auf eine Zahl :

%Vor%

Wenn diese Umwandlung auf das folgende XML-Dokument angewendet wird (das gleiche wie das angegebene XML-Dokument, aber zum ersten Knoten hinzugefügt), setzen Sie ein weiteres Intensity -Element (das letzte) die zwei Knoten-Sets unterscheiden sich in der Größe):

%Vor%

das gewünschte, korrekte Ergebnis wird erzeugt :

%Vor%

Erläuterung :

  1. Es sind zwei Variablen definiert, die jeweils die Knoten enthalten, die ein "Array" enthalten.

  2. Zwei weitere Variablen sind definiert: $vShorterArr , enthält die kürzere Knotenmenge und $vLongerArr enthält die längere Knotenmenge.

  3. Vorlagen werden auf den Knoten longer angewendet.

  4. Jeder Knoten in der längeren Knotenmenge wird mit dem entsprechenden (falls vorhanden) Knoten in der kürzeren Knotenmenge oder sonst mit 0 summiert.

II. XSLT 2.0 Lösung :

%Vor%

III. Verwenden von FXSL :

Es ist viel einfacher, dieses Problem mit der f:zip-with() Funktion / Vorlage von FXSL .

Unten finden Sie eine Lösung, die FXSL 2 verwendet:

%Vor%     
Dimitre Novatchev 02.10.2011 15:32
quelle

Tags und Links