Сравните значения с десятичной - PullRequest
0 голосов
/ 16 апреля 2019

Мне нужно сравнить значения, возвращаемые в моем XML. Если значение равно 0,00, тогда делайте «это», иначе «делайте это». Я получаю сообщение об ошибке при тестировании своего кода.

ошибка: Невозможно сгенерировать документ XML с использованием предоставленного ввода XML / XSL. Об ошибках сообщалось при компиляции таблицы стилей

Сайт использует для тестирования: https://www.freeformatter.com/xsl-transformer.html

Вот XML:

<cst>
  <cli>
    <cli_contact_person_name>a customer service representative</cli_contact_person_name>
    <cli_phone_number>312-422-3236</cli_phone_number>
    <cli_contact_phone_ext>312-422-3236</cli_contact_phone_ext>
    <cli_email_address>aha-orders@pbd.com</cli_email_address>
  </cli>
    <inv>
      <cli_contact_person_name>a customer service representative</cli_contact_person_name>
      <cli_phone_number>312-422-3236</cli_phone_number>
      <cli_contact_phone_ext>312-422-3236</cli_contact_phone_ext>
      <cli_email_address>aha-orders@pbd.com</cli_email_address>
      <AHABU>AHA</AHABU>
      <cst_key>D387A106-0E7C-4201-A9DD-1B0615191D18</cst_key>
      <inv_key>31F2FD83-0A06-49CC-A424-84054EF15D8F</inv_key>
      <inv_code_cp>131961</inv_code_cp>
      <inv_trx_date>01/05/2010</inv_trx_date>
      <inv_total>150.00</inv_total>
      <inv_pyd_date>01/05/2010</inv_pyd_date>
      <inv_paid>125.00</inv_paid>
      <inv_balance>25.00</inv_balance>
    </inv>
  </invs>
</cst>

Вот код XSL:

<!--Paid-->
    <div class="orderhistory-subcontainer2 orderhistory-hide-1">
        <xsl:choose>
            <xsl:when test="inv_balance=0.00">
                <xsl:value-of select="inv_pyd_date" />
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="" />
            </xsl:otherwise>
        </xsl:choose>
    <!--<xsl:value-of select="inv_pyd_date" />-->
    </div>

Также попробовал это:

<!--Paid-->
<div class="orderhistory-subcontainer2 orderhistory-hide-1">
    <xsl:choose>
        <xsl:when test = "format-number(inv_balance, '0.00') = number(0.00)">
            <xsl:value-of select="inv_pyd_date" />
        </xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="" />
        </xsl:otherwise>
    </xsl:choose>
<!--<xsl:value-of select="inv_pyd_date" />-->

Проблема в том, что мой синтаксис, я думаю здесь:

или, по крайней мере, я думал, что это была оригинальная проблема. Не уверен, в чем проблема сейчас

Обновление: пробовал это также stll не работает с той же ошибкой:

 <xsl:when test = "format-number(inv_balance, '#.00') = number(0.00)">

Обновление: Я нашел ошибку:

<xsl:value-of select="" />

1 Ответ

1 голос
/ 16 апреля 2019

Простое решение:

 <xsl:when test="inv_balance=0">

Это преобразует строку «0.00» в число и сравнивает ее с числом 0:

если хотя бы один объект для сравнения является числом, то каждый объект для сравнения преобразуется в число, как если бы он применял числовую функцию.
https://www.w3.org/TR/1999/REC-xpath-19991116/#booleans

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