Поделиться через


Значения NaN (XSLT)

Термин NaN, который в переводе означает «не число», представляет собой символ значения, которое невозможно представить в формате числа с плавающей запятой.

Существует два типа NaN.

  • Тихий NaN
    Представляет неизвестные и не инициализированные величины.

  • Сигнальный NaN
    Представляет собой символические значения и значения, слишком большие или имеющие слишком большую точность для данного формата. При попытке выполнения операции над объектом, представляющим собой сигнальный NaN, вызывает исключение из-за недопустимой операции.

Пример кода

Пример демонстрирует сравнение любого значения со значением NaN.

ms256038.collapse_all(ru-ru,VS.120).gifXML-файл (NaNValues.xml)

<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="NaNValues.xsl" ?>
<items>
   <item>100</item>
   <item>ABC</item>
</items>

ms256038.collapse_all(ru-ru,VS.120).gifXSLT-файл (NaNValues.xsl)

<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >

<xsl:template match="items">
 <xsl:for-each select="item">
  <xsl:call-template name="IsNaN"/>
 </xsl:for-each>
</xsl:template>

<xsl:template name="IsNaN">
 <!-- Parameter defined here -->
 <xsl:param name="var" select="."/>
 <xsl:value-of select="$var"/>
 <xsl:if test="string(number($var)) = 'NaN'"> is a string. </xsl:if>
 <xsl:if test="string(number($var)) != 'NaN'"> is a number. </xsl:if>
</xsl:template>
</xsl:stylesheet>

ms256038.collapse_all(ru-ru,VS.120).gifВывод

Результат.

100 is a number. ABC is a string.