juls_pro_37: XSLT 1.0 convert, translate, remove

Hallo,

wie kann ich den Wert "AllowanceOrCharge_Header.VatPercentage" von 5,5.00 in 5.50 umwandeln?

Hätte gern eine Bedingung: Wenn "AllowanceOrCharge_Header.VatPercentage" ein "," und ".00" beinhaltet, dann soll das "," in "." umgewandelt werden und ".0" entfernt werden. Oder denke ich zu kompliziert?

XML:

    <AllowanceOrCharge_Header>
      <Qualifier>C</Qualifier>
      <Code>FC</Code>
      <Text>FRET</Text>
      <Amount>45.0000</Amount>
      <VatPercentage>5,5.00</VatPercentage>
    </AllowanceOrCharge_Header>

XSLT:

 <xsl:template match="VatPercentage[contains(., ',')]">
    <VatPercentage><xsl:value-of select="translate(., ',', '.')"/></VatPercentage>
  </xsl:template>

Korrekt: XML:

    <AllowanceOrCharge_Header>
      <Qualifier>C</Qualifier>
      <Code>FC</Code>
      <Text>FRET</Text>
      <Amount>45.0000</Amount>
      <VatPercentage>5.50</VatPercentage>
    </AllowanceOrCharge_Header>

akzeptierte Antworten

  1. Hallo Julian,

    wie kann ich den Wert "AllowanceOrCharge_Header.VatPercentage" von 5,5.00 in 5.50 umwandeln?

    Hätte gern eine Bedingung: Wenn "AllowanceOrCharge_Header.VatPercentage" ein "," und ".00" beinhaltet, dann soll das "," in "." umgewandelt werden und ".0" entfernt werden. Oder denke ich zu kompliziert? ... XSLT:

     <xsl:template match="VatPercentage[contains(., ',')]">
        <VatPercentage><xsl:value-of select="translate(., ',', '.')"/></VatPercentage>
      </xsl:template>
    

    Probiere es so:

    <xsl:template match="VatPercentage[contains(., ',') and contains(., '.00')]">
      <VatPercentage>
        <xsl:value-of select="format-number(translate(translate(., '.', ''), ',', '.'), '#.00')"/>
      </VatPercentage>
    </xsl:template>
    

    Grüße,
    Thomas

    1. DANKE Thomas, genau das war es!!! vielen vielen dank!