2015-08-04 1 views
1

J'ai ce simple code xslt: paramètrePad Valeur de longueur fixe - xslt

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="text" indent="yes"/> 
    <xsl:template match="/racine/Requete"> 
     <xsl:for-each select="Row"> 
      <xsl:value-of select="Col[@name = 'Service Point']/." /> 
      <xsl:text>ME02</xsl:text> 
      <xsl:value-of select="Col[@name = 'Meter Number']/." /> 
      <xsl:value-of select="Col[@name = 'Date']/." /> 
      <xsl:value-of select="translate(Col[@name = 'Import Active kWh']/.,',','.')" /> 
      <xsl:text>30000000000000000000</xsl:text> 
      <xsl:text>&#13;</xsl:text> 
     </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 

Le compteur peut avoir Nombre max 10 caractères alphanumériques. donc si par exemple la valeur est 232345, je veux afficher (pavé avec des espaces): '232345'. J'ai le même cas pour Import Active kWh, il s'agit d'un champ numérique 12 type numeric, mais si la valeur est 56884, je veux afficher (pad avec 0 au début) '000000056884'.

Merci pour votre aide utile, comme d'habitude!

Cordialement.

Répondre

2

Pour le champ numérique, vous pouvez simplement utiliser la fonction format-number(), par exemple:

<xsl:value-of select="format-number($numeric-field, '000000000000')"/> 

Pour le champ alpha-numérique, essayez:

<xsl:value-of select="substring(concat('   ', $alphanumeric-field), 1 + string-length($alphanumeric-field))" /> 

Si vous avez besoin de le faire plus d'une fois , pensez à réécrire ceci en tant que fonction.


Remarque: cette étape de localisation /. ne fait rien.

+0

Super! Merci beaucoup! – Raul

0

XSLT a format-number fonction donc format-number(translate(Col[@name = 'Import Active kWh']/.,',','.'), '000000000000') devrait résoudre un problème.

+0

Parfait! Merci beaucoup! – Raul