3

xslt で xml を解析し、結果を xml として取得します。

tousand、million などの区切り文字としてアポストロフィを使用して数値をフォーマットする必要があります...

例: 1234567 = 1'234'567

問題は、これらのアポストロフィをそこに入れる方法です。

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

アポストロフィ自体がすでにフォーマットの開始を区切っているため、これは機能しません。

それに対する簡単な解決策はありますか(おそらくc#のようにアポストロフィをエスケープしますか?

4

2 に答える 2

2

答えは、1.0 と 2.0 のどちらを使用しているかによって異なります。

2.0 では、文字列区切り文字を 2 倍にすることでエスケープでき (たとえば、'it''s dark')、属性区切り文字は などの XML エンティティを使用してエスケープできます&quot;。したがって、次のように書くことができます。

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

1.0 では、XML エンティティを使用して属性区切り記号をエスケープできますが、文字列区切り記号をエスケープする方法はありません。したがって、区切り文字を切り替えて使用できます

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

もう 1 つの方法 (おそらく簡単) は、文字列を変数に入れることです。

<xsl:variable name="picture">###'###'###'###</xsl:variable>
<xsl:value-of select="format-number(/path/to/number, $picture)" />
于 2012-08-09T14:47:44.073 に答える
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")'/>
     ...
于 2012-08-10T06:25:28.000 に答える