2011-01-19 456 views
0

格式數字函數似乎無法處理格式化的歐洲數字。有什麼我可以做的功能「數字」的參數,以便它的工作?歐洲程序員對此做了什麼?XSL和歐洲格式貨幣(當提供的數字值具有逗號時爲小數)

例如; 下面的代碼適用於使用小數創建十進制格式,並且在格式編號的「number」參數提供句點「。」時定義AND分組分隔符。作爲最初的小數點分隔符。

<!-- define number format to use --> 
    <xsl:decimal-format 
     name="european" 
     decimal-separator=',' 
     grouping-separator='.' /> 
    <!-- format the number --> 
    <xsl:value-of select="format-number(1234.56, 
             '#.##0,00;(#.##0,00)', 
             'european')"/> 

然而,如果所提供的數字參數是已經部分歐元格式化,一些像1234,56 ...其中逗號「」是在最初數,而不是一個句號「」,則格式數字函數將返回「NaN」。

有沒有人有辦法解決這個問題?或者,你是否將原來提供的1234,56號碼轉換爲1234.56號碼,以便它能正常工作?

有誰知道如何解決這個問題?

回答

1

對於任何數值數據,您應該使用XSLT/XPath可識別的數字格式(即,XSLT/XPath 1.0的/的雙重格式或模式規範使用XSLT/XPath 2.0定義的其中一種格式),並且只能格式化爲根據需要輸出表示。如果您以不同的格式輸入數據,那麼確實需要先將字符串函數轉換爲XSLT/XPath接受的格式。 number(translate('1234,56', ',', '.'))作爲XPath 1.0中最簡單的方法或在XPath 2.0中使用relace。

+0

謝謝..有用! – John 2011-01-19 18:43:21

0

的設計意圖是,XML應該代表的數值,如「國際標準」格式的日期和數字,並演示應該再視個人用戶的喜好進行本地化。所以格式編號被設計爲將「國際格式」編號作爲輸入,併產生「本地編號」作爲輸出。如果您的XML設計不符合該慣例,則必須「手動」轉換它,例如使用XSLT 1.0中的translate()或XSLT 2.0中的正則表達式。

+0

所以,你說的是,字段值應該從1234,56轉換爲1234.56,因爲它成爲xml的一部分...因爲這是格式數函數期望它的方式嗎?果然,儘管上面的翻譯功能確實有效,但我們最終改變了它,以便xml值爲1234.56而不是1234,56。 – John 2011-01-19 18:48:29

相關問題