by Wolfgang Kluge
März 31, 2009 22:27
Gerne übersehen wird die Möglichkeit eines 2. Parameters in allen Cumulative Functoiden (Standardwert=0). Dieser gibt an, von welcher Ebene aus die zu kumulierenden Elemente "angeschaut" werden.
Folgendes XML-Dokuement angenommen.
<root>
<nodes>
<sub>
<value>1</value>
<value>1</value>
<value>2</value>
</sub>
<sub>
<value>3</value>
<value>2</value>
<value>2</value>
</sub>
</nodes>
</root>
Will man alle <value>-Werte zusammenzählen, so reicht hier der erste Parameter mit <value> als Eingang für ein Cumulative Sum - Functoid. Zusammengezählt wird anhand der Abfrage /s0:root/nodes/sub/value.
Ist dageben eine Zahl > 0 angegeben, so wird entsprechend viele Ebenen in der Hierarchie von der aktuellen Node nach oben gesprungen und diese Node als neuer "Ursprung" für die Abfrage verwendet. In diesem Fall reicht also eine 1 aus. Die Abfrage wäre hiermit value, wobei die aktuelle Node <sub> ist.
Alle Möglichkeiten sind in folgender Tabelle aufgelistet:
| 2. Parameter |
Aktuelle Node |
Abfrage |
| 0 |
|
/so:root/nodes/sub/value |
| 1 |
root/nodes/sub |
value |
| 2 |
root/nodes |
sub/value |
| 3 |
root |
nodes/sub/value |
| >3 |
|
/so:root/nodes/sub/value |
Zahlen, die größer oder gleich der Anzahl der Ebenen sind, sind damit wieder gleichbedeutend mit 0 bzw. keiner Angabe.
Aus Performancegründen - und damit man immer das bekommt, was man will (es soll ja auch außerhalb der Testdateien funktionieren) - sollte man immer die kleinstmögliche Zahl angeben, die das gewünschte leistet.