この抽出を行うには、さまざまな方法があります。
I.数値の文字列表現を使用する:
concat('.',substring(substring-after($x, '.'), 1, 2))
II。標準の数学関数の使用:
$x - floor($x)
これは、任意の正の数の小数部分に評価され$x
ます。
関数の1つformat-number()
、、、 (XPath 2.0 / XSLT 2.0でのみ使用可能な最後の関数)を使用してround()
、round-half-to-even()
小数点以下2桁に丸めます。
XSLT 1.0では、正の数から小数点以下2桁の数字を正確に取得する1つの方法(丸めなしで切り捨て)は次のとおりです。
format-number(
floor(100* $x) div 100
-
floor(floor(100* $x) div 100),
'.00'
)
説明されているメソッドの完全な例を次に示します。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:value-of select=
"concat('.',substring(substring-after(0.12543, '.'), 1, 2))"/>
=========
<xsl:value-of select=
"format-number(0.12543, '.00')"/>
=========
<xsl:value-of select=
"format-number(
floor(100* 999.12543) div 100
-
floor(floor(100* 999.12543) div 100),
'.00'
)
"/>
</xsl:template>
</xsl:stylesheet>
この変換がXMLドキュメント(使用されていない)に適用されると、結果は次のようになります。
.12
=========
.13
=========
.12