2012-08-09 100 views
3

我使用我的xslt解析xml,並將結果作爲xml進行解析。xsl中的撇號:format-number

我需要的數字格式與撇號作爲分隔符的tousand,萬等等......

例如:1234567 = 1'234'567

現在的問題是如何獲得這些撇號在那裏?

<xsl:value-of select="format-number(/path/to/number, '###'###'###'###')" /> 

這不起作用,因爲撇號本身已經定界了格式的開始。

有一個簡單的解決方案,即(也許逃脫撇號像在C#?

回答

1

我們這個解決方案提出了一些研究之後:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:decimal-format name='ch' grouping-separator="'" /> 
    <xsl:template match="/"> 
    <xsl:value-of select='format-number(/the/path/of/the/number, "###&apos;###&apos;###", "ch")'/> 
    ... 
2

的答案取決於你使用1.0或2.0。

在2.0中,你可以通過逃避字符串分隔符它加倍(例如「它」的黑暗'),並且可以通過使用諸如&quot; XML實體逃脫屬性定界符所以你可以這樣寫:

<xsl:value-of select="format-number(/path/to/number, '###''###''###''###')" /> 

在1.0中,你能逃脫屬性通過使用XML實體分隔符,但是沒有辦法轉義字符串分隔符。所以,你可以切換您的分隔符,並使用

<xsl:value-of select='format-number(/path/to/number, "###&apos;###&apos;###&apos;###")' /> 

另一種方式 - 可能更容易 - 是把字符串變量:

<xsl:variable name="picture">###'###'###'###</xsl:variable> 
<xsl:value-of select="format-number(/path/to/number, $picture)" /> 
+0

謝謝,但沒有任何工作......但我發佈瞭解決方案,我們發現 – domueni 2012-08-10 06:22:40

+1

說「沒有任何工作」,這意味着我的解決方案沒有工作是非常無建設性的。如果它們不起作用,那麼要麼你錯誤地實現了它們,要麼你正在使用一個錯誤的處理器。讀這些的人會想知道哪一個。說你做了什麼,你得到了什麼錯誤。 – 2012-08-10 19:42:45

+0

好的,我重新嘗試了這個網站上的所有解決方案:http://xslttest.appspot.com/。仍然沒有解決方案。我收到錯誤「Error:format-number picture:被動字符不能出現在子圖片中的活動字符之間」。 – domueni 2012-08-13 06:30:54