Unterseite: Dezimalsummen in XPath

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Tutorials > Unterseiten und Sichtbarkeit >

Unterseite: Dezimalsummen in XPath

Um das Design fertig zu stellen, wollen wir eine Beschriftung hinzufügen, in der die Gesamtsumme der angezeigten Bestellungen angezeigt wird. Gehen Sie dazu folgendermaßen vor:

 

1.Ziehen Sie ein Steuerelement "Beschriftung" aus dem Fenster "Steuerelemente" unter die Tabelle Orders (siehe Abbildung unten).
2.Klicken Sie im Fenster "Stile & Eigenschaften" auf das XPath-Symbol der Steuerelementeigenschaft Text.
3.Geben Sie im Dialogfeld "XPath/XQuery-Ausdruck bearbeiten", das nun angezeigt wird, den XPath Ausdruck zur Berechnung der Gesamtsummen ein (Sie finden den Ausdruck weiter unten) und klicken Sie auf OK.

MTDSPVOrdersTotal

 

Der XPath-Ausdruck zur Berechnung der Gesamtsumme

Wir müssen die Gesamtsumme für zwei Fälle berechnen: (i) für die Bestellungen des ausgewählten Kunden und (ii) für alle Bestellungen. Verwenden Sie dazu den folgenden XPath-Ausdruck:

 

if ($XML1/Root/CustomerCode!='All')

then concat('Total: 'xs:decimal(sum ($ORDERS//Order[CustomerCode=$XML1/Root/CustomerCode]/OrderAmount)))

else concat('Total: 'xs:decimal(sum ($ORDERS//OrderAmount)))

 

Dieser XPath-Ausdruck funktioniert folgendermaßen:

 

1.Mit der if-Klausel des Ausdrucks wird überprüft, ob das Element $XML1/Root/CustomerCode den String All enthält.
2.Wenn das Element $XML1/Root/CustomerCode den String All nicht enthält, so werden die OrderAmount-Elemente aller Order-Elemente, deren CustomerCode-Elementinhalt gleich dem Inhalt des Elements $XML1/Root/CustomerCode ist, ausgewählt. Dabei handelt es sich um die Anzahl der Order-Elemente des vom Endbenutzer ausgewählten Kunden. Wie Sie wissen, wurde der Kundencode CustomerCode in der Seitenquelle $XML1 gespeichert (siehe Toplevel-Seite: Aktionsgruppe, Gehe zu Unterseite).
3.Wenn das Element $XML1/Root/CustomerCode den String All enthält, so werden alle OrderAmount-Elemente, ausgewählt.

 

Die ausgewählten OrderAmount-Elemente werden mit Hilfe der sum()-Funktion von XPath summiert. Da in der sum()-Funktion der Typ xs:double verwendet wird und eine Zahl vom Typ xs:double zurückgegeben wird, hat die Summenzahl mehr als die zwei in einer Währung benötigten Dezimalstellen. Wir runden daher den Typ xs:double mit Hilfe der Typkonvertierung xs:decimal auf eine zweistellige Zahl.

 


© 2019 Altova GmbH