Как я могу делать строковые операции в XSLT? - PullRequest
5 голосов
/ 06 ноября 2008

В моем xslt есть следующий блок кода:

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

Но, как вы можете догадаться, когда значение равно 34,5 вместо 34,5, оно распознается как строка, что делает невозможным целочисленное сравнение. Я думал заменить, с. было бы решением, которое нуждается в замене символа. Мой вопрос, как я могу это сделать или же Было бы здорово узнать больше о строковых операциях в XSLT ...

Ответы [ 3 ]

8 голосов
/ 06 ноября 2008

В XPath есть функция translate():

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

Кроме того, вы должны использовать функцию числа, которая преобразует свой аргумент в число (или NaN, если это не удается):

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

См. Документацию для translate() и документацию для number() на w3.org.

0 голосов
/ 11 января 2009

В XSL 2 вы также можете использовать полноценный replace(), который даже поддерживает шаблоны регулярных выражений.

0 голосов
/ 06 ноября 2008

Большое спасибо.

работает, но с одной простой модификацией:

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

кстати, это не XSLT, а XPath :) хорошо учиться ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...