有一項任務用於輸出使用XSLT從數據庫中獲取的某些數據。應用程序當前的語言環境是ru_RU,因此小數點分隔符是逗號。它看起來像使用XSLT將字符串轉換爲數字
<data>
<row>
<date value="28.04.2010"/>
<clicks value="281"/>
<depth value="1,7"/>
<row>
<row>
<date value="29.04.2010"/>
<clicks value="15"/>
<depth value="3"/>
<row>
<data>
它需要格式化「深度」十進制數值:1,70和3,00。當我嘗試變換值伊辛:
<xsl:value-of select="format-number(number(depth/@value)), '##.##'"/>
我得到NaN的因爲鑄造屬性值數時,XSLT處理器不考慮逗號作爲小數點分隔符。
它有助於在某種程度上,當我手動「翻譯」,從「十進制逗號」格式源字符串爲「小數點」一個
<xsl:value-of select="format-number(number(translate(depth/@value, ',', '.'))), '##.##'"/>
,但它看起來相當醜陋。
是否有更正確和集中的方式告訴處理器逗號是小數點分隔符?
不介意,它不起作用。 – baol 2010-04-29 15:35:08
另外,如果您的語言環境設置正確,並且解析器支持本地化,您可能需要擺脫「數字」調用,但AFAI瞭解它不是本地化的。 – baol 2010-04-29 16:20:51
處理器是PHP 5.3中的XSLTProcessor,我還沒有發現任何關於它的本地化的提及。 應用程序語言環境設置正確: <?php setlocale(LC_ALL,'ru_RU.koi8r'); echo 0.26; >> 0,26 – 2010-04-30 07:35:44