Bedingte variable wählen, die in XSLT
Ich möchte eine variable um den Wert eines Elements, wenn der Wert numerisch ist, aber wenn nicht, dann möchte ich die variable den Wert hat, den 0
.
In anderen Worten, ist es eine einfache Entsprechung der folgenden, die in XSLT?
var foobar = is_numeric(element value) ? element value : 0
Oder wie würden Sie schreiben?
<xsl:variable name="foobar" select=" ? " />
InformationsquelleAutor Svish | 2013-10-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
In XPath 2.0-ja, Sie können verwenden "
castable as
"InformationsquelleAutor Ian Roberts
XPath 1.0:
Referenz für diese clevere
number($value) = number($value)
numerischen test: Dimitre Novatchev Antwort zu "Xpath testen, ob die Nummer" Frage.InformationsquelleAutor kjhughes
Den Sie verwenden könnten:
oder
(x, y)
tun, in deinem ersten Beispiel?y) bildet eine Sequenz von
x
undy
aber alsELEMENT[. castable as xs:double]
ergibt die leere Sequenz, wenn der InhaltELEMENT
ist nicht ein Doppel der Wert ist entweder eine Sequenz von(ELEMENT, 0)
oder einfach die Reihenfolge(0)
. Und das Prädikat[1]
wählt dannELEMENT
oder0
.so insbesondere dann, wenn es mehr als eine
ELEMENT
Kind in den aktuellen Kontext dann mein Ansatz wird immer wieder0
(weil eine Sequenz von mehr als einem Artikel ist nichtcastable as xs:double
), in der Erwägung, dass Michael ' s Ansatz wird wieder die ersteELEMENT
Kind, die umgewandelt werden kannxs:double
(in der(x, y)[1]
Fall) oder die Summe aller solcherELEMENT
s (in dersum()
Fall), oder0
wenn keiner von Ihnen sind richtig gewirkt.Cool, danke für die Erklärungen. Ich bin für @IanRoberts da zum Ausdruck bringt, dass den meisten klar, was ich eigentlich will. Scheint weniger hackish, hehe.
InformationsquelleAutor Michael Kay