1 Вопрос: Получение ошибки при использовании формата числа - NaN

вопрос создан в Thu, May 2, 2019 12:00 AM

Я должен выбрать значение v1, которое соответствует V0 и (необходимо сделать 13-значное число, также удалите десятичную точку) Я получаю NaN. Пожалуйста, руководство.

XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  
 xmlns:xs="http://www.w3.org/2001/XMLSchema" >

<xsl:output method="text" encoding="utf-8" />
<xsl:output omit-xml-declaration="yes" />
<xsl:param name="break" select="'&#xA;'" />
<xsl:template match="A">
          <xsl:value-of select="format-number(B[match = V0]/v1 * 100,'0000000000000')"/>
  </xsl:template>

р>

INPUT:

<A>
<B>
    <match>V0</match>
    <v1>34.56</v1>
</B>
<B>
    <match>V1</match>
    <v1>34.54</v1>
</B>

р>

Ожидается - 0000000003456

Фактический - NaN

    
0
1 ответ                              1                         

Просто измените

<xsl:value-of select="format-number(B[match = V0]/v1 * 100,'0000000000000')"/>

к р>

<xsl:value-of select="format-number(B[match = 'V0']/v1 * 100,'0000000000000')"/>

А остальное последует.

Вывод:

000000003456

Вы забыли поместить значение элемента в одинарные кавычки.

    
1
2019-05-02 18: 00: 13Z
  1. Спасибо, хотел бы знать одну вещь: если само значение не присутствует во входных данных, то оно выдаст вывод в виде NaN. как этого избежать?
    2019-05-03 10: 00: 10Z
  2. Вы можете использовать (XPath-2.0) if-then-else, чтобы даже проверить, может ли значение быть приведено к двойному типу данных. Сначала добавьте это пространство имен к элементу таблицы стилей: xmlns:xs="http://www.w3.org/2001/XMLSchema". Затем используйте это выражение в select="...": if (B[match = 'V0']/v1 castable as xs:double) then format-number(B[match = 'V0']/v1 * 100,'0000000000000') else 'Not present'.
    2019-05-03 14: 14: 48Z
источник размещен Вот