変換したい XML には 7.3248378E7 のようなものが含まれていますが、これは XSL-FO プロセッサによってネイティブにサポートされていません (PDF ファイルでは NaN になります)。この数値形式を変換する良い方法 (汚いハックの反対) はありますか?
どうもありがとう。
この投稿を見つけました: XSLT 1.0 スタイルシートを提供する科学表記法から 10 進数に変換するための XSL 変換。
スタイルシートをインクルード/インポートした後、convertSciToNumStringテンプレートを呼び出して変換します。
<xsl:call-template name="convertSciToNumString">
<xsl:with-param name="myval" select="'7.3248378E7'"/>
</xsl:call-template>
プロデュース:73248378
これは数値として評価でき、NaN の問題を回避する必要があります。
<xsl:variable name="num">
<xsl:call-template name="convertSciToNumString">
<xsl:with-param name="myval" select="'7.3248378E7'"/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$num"/> + 1 = <xsl:value-of select="$num + 1" />
プロデュース:73248378 + 1 = 73248379
今日、私は科学的な変換で同様の問題を解決しなければなりませんでした。最後に、独自のXSLT変換テンプレートを作成する必要がありました。これは、他の回答でここに記載されているMichaelCaseの元の「convertSciToNumString」にいくつかのバグがあるためです。
Here is an article about this implementation and conversion tests. http://www.orm-designer.com/article/xslt-convert-scientific-notation-to-decimal-number
項目は、xs:decimal ではなく、xs:float または xs:double と指定されていますか? それでもうまくいかない場合は、「ダーティハック」アプローチを使用する必要があると思います。XSLT ページの「要件 29」を参照してください。