XPath-format-Anzahl mit Anzahl der Dezimalstellen basiert auf einer Variablen?
Ich habe ein XML-Dokument, wobei die Anzahl der Dezimalstellen einen bestimmten xs:decimal
sollte gemeldet werden, in der gehalten wird, in einem Geschwister-Knoten. Ich bin derzeit kämpfen, um zu finden, eine einfache Möglichkeit zur Ausgabe über die format-number
Funktion.
Kann ich bauen ein Bild-string mit ein paar andere Funktionen, aber dies scheint furchtbar langatmig für das, was sein sollte (zumindest imo) eine relativ einfache und gemeinsame Aufgabe.
z.B. was ich gerade mache, ist so etwas wie dieses:
<xsl:value-of
select="format-number(myNode/DecimalValue,
concat('#0.',
string-join(for $i in 1 to myNode/DecimalPlaces return '0'))"
/>
Gibt es eine bessere Möglichkeit?
- Tut mir Leid, aber warum nicht einfach
round($value*100) div 100
? - Weil das nicht hinzufügen von Nullen. z.B. wenn myNode/Dezimalstellenanzeige = 4, möchte ich die Zahl 100, um die Ausgabe als 100.0000
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehr gute Frage! Das bedeutet in der Regel, ich kenne die Antwort nicht, aber ich hoffe, jemand anderes tut, denn dies ist ein Schmerz für mich zu.
Jedenfalls, ich habe einige suchen und ich denke, die
round-half-to-even
Funktion könnte den trick tun (http://www.xqueryfunctions.com/xq/fn_round-half-to-even.html)Dein code würde so Aussehen:
Nun Los, für ein kleines Tangente:
Für Menschen, die unter Verwendung von XSLT 1.1 oder niedriger und XPath-1, benutzen Sie diese:
Natürlich, dieser code ist schlimmer als das original, aber wenn jemand weiß, wie zu lösen die ursprüngliche Frage für XPath-1 und hat eine bessere Idee als diese, die ich lieben würde, zu hören.
(Mehr und mehr oft wünschte ich, die Welt würde übersprungen haben XML zusammen und zog sofort nach JSON)
Können Sie abstrakte Sie es Weg in eine Vorlage:
Können Sie auch eine Vorlage und verwenden Sie die XSLT-Kontext-node, wenn Sie ihn aufrufen. Hängt auch ein wenig auf Ihre Eingabe-Dokument und muss, wenn dies für Sie durchführbar ist.
round-half-to-even()
und wenn ich wissen würde, die die maximale Genauigkeit. Das sagte, ich sehr einverstanden mit der OP, dass es nur Bananen, dass etwas so einfaches so schwer in XPath/XSLT