2016-03-28 6 views
1

sich das folgende xml:Wie erzeuge ich einen Knotensatz aus den Ergebnissen einer Funktion, die einen anderen Typ ergibt?

<days> 
    <day><temperature>40 F</temperature></day> 
    <day><temperature>45 F</temperature></day> 
    <day><temperature>50 F</temperature></day> 
</days> 

Ich mag würde eine Durchschnittstemperatur berechnen, indem die Temperaturen Summieren und dann durch den Zählwert dividiert wird. Wie Sie einen Wert für die Zählung ist einfach:

count(/days/day/temperature) 

Wenn die Zahlen keine Einheiten hatten, auch die Summe bekommen wäre einfach:

sum(/days/day/temperature) 

Doch dies zusammenzufassen, zuerst muss ich das entfernen Einheiten. Einfach genug, benutzen Sie einfach übersetzt die unerwünschten Einheit loszuwerden, zum Beispiel

/days/day/temperature/translate(.,' F', '') 

Dies funktioniert. Da aber anstelle eines Knotensatzes eine Liste mit Zahlen zurückgegeben wird, kann das Ergebnis nicht in der Summenfunktion verwendet werden. Wie bekomme ich einen übersetzten Knotensatz, damit ich diese Summe berechnen kann?

Antwort

1

Sie können sum(/days/day/temperature/number(translate(., ' F', ''))) verwenden, um die Summe zu berechnen. Es hat nichts mit Knoten-Sets zu tun, aber diese sind Teil des XSLT/XPath 1.0-Datenmodells, in XSLT/XPath 2.0 oder XQuery müssen Sie einfach sicherstellen, dass Sie sum auf einer Sequenz von Zahlenwerten aufrufen.

+0

Danke. Sieht so aus, als ob der Mangel an einer Nummernbesetzung genau das war, was mich zurückhielt. –

Verwandte Themen