2015-08-04 4 views
1

XSLT У меня есть этот простой код: XSLTPad Значение длиной починки -

<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> 

параметр Измеритель Номер может иметь максимум 10 алфавитно-цифровых символов. поэтому, если, например, значение 232345, я хочу отобразить (pad с пробелами): «232345». У меня такой же случай для Import Active kWh, это числовое поле fix 12 type numeric, но если значение 56884, я хочу отобразить (pad с 0 в начале) '000000056884'.

Благодарим за полезную помощь, как обычно!

С уважением.

ответ

2

Для числового поля вы можете просто использовать функцию format-number(), например:

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

Для буквенно-цифрового поля, попробуйте:

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

Если вам нужно сделать, это больше, чем когда-то , подумайте о том, чтобы переписать это как функцию.


Примечание: этот шаг /. место не делает ничего.

+0

Отлично! Большое спасибо! – Raul

0

XSLT имеет format-number Функция format-number(translate(Col[@name = 'Import Active kWh']/.,',','.'), '000000000000') должна решить одну проблему.

+0

Отлично! Большое спасибо! – Raul