1

私はこの単純な 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>

Meter Number パラメータには、最大 10 個の英数字を使用できます。たとえば、値が 232345 の場合、表示したい (スペースで埋める):' 232345'. Import Active kWh についても同じケースがあります。これは数値フィールド フィックス 12 タイプの数値ですが、値が 56884 の場合は、「000000056884」と表示 (先頭に 0 を埋め込む) したいと考えています。

いつものようにあなたの有用な助けをありがとう!

よろしく。

4

2 に答える 2

3

数値フィールドの場合、format-number()関数を単純に使用できます。たとえば、次のようになります。

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

英数字フィールドの場合は、次を試してください。

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

複数回実行する必要がある場合は、これを関数として書き直すことを検討してください。


注: この場所のステップ/.は何もしません。

于 2015-08-04T09:49:18.273 に答える
0

XSLTにはformat-number機能があるので、format-number(translate(Col[@name = 'Import Active kWh']/.,',','.'), '000000000000')1つの問題を解決するはずです。

于 2015-08-04T09:46:09.050 に答える