2017-03-18 7 views
0

ich von generierten Code wie die folgenden in einem Format von res 2^-2 .:convert Nummer richtiges Format

/*!< @VAR_NAME VehSpd @RES 2^-2 @MIN 0 @MAX 182.5 */ 

Ich mag immer Ausgang 0.250 erhalten anstelle von 2^-2 bis sein:

/*!< @VAR_NAME VehSpd @RES 0.250 @MIN 0 @MAX 182.5 */ 

in XSL sie legen das Format der Zeile wie:

<xsl:value-of select="concat($newline, ' /*!&lt;', 
' @VAR_NAME ', $curr_node/@name,@struct-component-name, 
' @RES ', @res, 
' @MIN ', @min-val, 
' @MAX ', @max-val)"/> 

ist weg Format 2^zu konvertieren -2 als 0.250 zu zeigen. Ich versuchte Nummer (@res), aber es gibt mir NaN. eine Idee? Übrigens, ich bin nicht sicher, ob @res ist eine Zahl oder eine Zeichenfolge

+0

in XSL das Format ist wie folgt:

+0

Welche XSLT-Prozessor verwenden Sie? Es kann eine einfache Möglichkeit geben, dies mit einer Erweiterungsfunktion zu tun. –

Antwort

0

Der Wert 2^-2 ist ein String-Wert eines mathematischen Ausdrucks, keine Zahl. Sie müssen die richtige Berechnung durchführen, um die richtige Zahl zu erhalten.

Wenn Sie XSLT/XPath 3.0 verwenden können, steht eine praktische math:pow()-Funktion zur Verfügung. Sie könnten einfach verwenden:

math:pow(number(substring-before(@min-val, "^")), number(substring-after(@min-val, "^"))) 

Andernfalls müssen Sie eine Möglichkeit finden, es zu analysieren und die Arbeit zu tun. Dimitre Novatchev 's FXSL Bibliothek hat Vorlagen zur Verfügung, die hilfreich sein könnten. Die Website bietet eine example mit der Pow-Vorlage. Etwas wie folgt aus:

<xsl:import href="exp.xsl"/> 
<xsl:call-template name="pow"> 
    <xsl:with-param name="pBase" select="2"/> 
    <xsl:with-param name="pPower" select="-2"/> 
</xsl:call-template>