Как я могу игнорировать специальный символ в узле? - PullRequest
0 голосов
/ 20 июня 2019

У меня есть следующий xml, где я просто хочу получить сумму, исключающую специальный символ "+".

<LegalMonetaryTotal>
<LineExtensionAmount currencyID="EUR">+1848.20</LineExtensionAmount>
<TaxExclusiveAmount currencyID="EUR">+1848.20</TaxExclusiveAmount>
<TaxInclusiveAmount currencyID="EUR">+2236.32</TaxInclusiveAmount>
<PayableAmount currencyID="EUR">+2236.32</PayableAmount>

Я уже пробовал некоторые коды, такие как длина строки и т. Д. Или добавление # перед моим кодом, но я не получаю результаты, которые хочу получить.

<xsl:template match="/">
   <xsl:for-each select="/x:Invoice/cac:LegalMonetaryTotal">
      <xsl:if test="cbc:TaxExclusiveAmount"><xsl:value-of select="format-number(cbc:TaxExclusiveAmount,'##0.00')"/></xsl:if>
   </xsl:for-each>
</xsl:template>

Это показывает результат + 1848,20

Я хочу получить только 1848,20. Может кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 20 июня 2019

Если в начале всегда будет знак «+», то вы можете сделать это ...

<xsl:value-of select="format-number(substring(cbc:TaxExclusiveAmount, 2),'##0.00')"/>

В качестве альтернативы, если его там нет, вы можете сделать это

<xsl:value-of select="format-number(translate(cbc:TaxExclusiveAmount, '+', ''),'##0.00')"/>

Обратите внимание: если в вашем существующем xsl:for-each нет другого кода, вы можете упростить его до

<xsl:for-each select="/LegalMonetaryTotal/TaxExclusiveAmount">
  <xsl:value-of select="format-number(translate(., '+', ''),'##0.00')"/>
</xsl:for-each>
...