2008-11-06 15 views
5

Ich habe den folgenden Codeblock in meinem xslt;Wie kann ich String-Operationen in XSLT ausführen?

 <xsl:when test="StatusData/Status/Temperature > 27"> 
     <td bgcolor="#ffaaaa">    
      <xsl:value-of select="StatusData/Status/Temperature" />    
     </td> 
     </xsl:when> 

Aber wie Sie sich vorstellen können, wenn der Wert 34,5 anstelle von 34,5 wird als Zeichenkette erkannt, die integer ist ein Vergleich nicht möglich. Ich dachte, ersetzen, mit. wäre eine Lösung, die einen Ersatz benötigt. Meine Frage ist, wie kann ich dies tun oder Es wäre toll, mehr über String-Operationen in XSLT zu wissen ...

Antwort

8

Es gibt eine translate() Funktion in XPath:

test="translate(StatusData/Status/Temperature, ",", ".") > 27" 

Zusätzlich sollten Sie nutzen machen der Nummer-Funktion, die es Argument in eine Zahl konvertiert (oder NaN, wenn das fehlschlägt):

test="number(translate(StatusData/Status/Temperature, ",", ".")) > 27.0" 

die documentation for translate() und die documentation for number() bei w3.org See.

0

Vielen Dank.

es aber mit einer einfachen Modifikation funktioniert:

test="number(translate(StatusData/Status/Temperature, ',', '.')) > 27.0" 

durch die Art und Weise ist es XSLT nicht darüber ist zu lernen XPath :) gut ...

0

In XSL 2 Sie auch verwenden können, die vollwertige replace(), die sogar Regex-Muster unterstützt.

+0

das ist cool danke .. – erdogany