Как заполнить текущее сообщение об ошибке в `xsl: message` в XSLT 2.0 или 3.0? - PullRequest
1 голос
/ 26 марта 2019

Я пытаюсь напечатать сообщение об ошибке во время выполнения, здесь ввод, я могу использовать любую версию XSLT 2.0 или 3.0:

<transaction>
    <actual_premium>3200000000</actual_premium>
    <actual_premium>3200000000</actual_premium>
</transaction>

XSLT я пытаюсь:

<xsl:template match="/">
    <xsl:variable name="Premium" select="/transaction/actual_premium"/>
    <root>

        <xsl:try>
            <xsl:value-of select="format-number($Premium, '###,###,###')"/>
            <xsl:catch>
                <!-- Here i want to print error message A sequence of more than one item is not allowed as the first argument of fn:format-number() -->
                <xsl:message select="current()"/>
            </xsl:catch>
        </xsl:try> 

    </root>
</xsl:template>

Сообщение об ошибке A sequence of more than one item is not allowed as the first argument of fn:format-number() должно быть заполнено.

1 Ответ

1 голос
/ 26 марта 2019

XSLT 2 не имеет try/catch, что касается XSLT 3, см. https://www.w3.org/TR/xslt-30/#try-catch-examples о том, как использовать $err:code и / или $err:description в пространстве имен xmlns:err="http://www.w3.org/2005/xqt-errors"

 <xsl:try>
    <xsl:value-of select="format-number($Premium, '###,###,###')"/>
    <xsl:catch>
      <xsl:message>
          Error code: <xsl:value-of select="$err:code"/>
          Reason: <xsl:value-of select="$err:description"/>
      </xsl:message>
    </xsl:catch>
  </xsl:try>

и, конечно, полное описание в https://www.w3.org/TR/xslt-30/#try-catch всех переменных, доступных в xsl:catch.

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