4

数値にキャストして mod を使用したい数値を含むノードがあります。例えば:

<item>
    <num>1</num>
</item>
<item>
    <num>2</num>
</item>
<item>
    <num>3</num>
</item>

私はもう試した:

num mod 3 -- returns NaN
number(num) mod 3 -- returns NaN
number(string(num)) -- returns NaN

これができるかどうか、何か考えはありますか?ASCIIに変換する方法があったとしても、私はそれを取るだろう

前もって感謝します!

4

2 に答える 2

2

number(num) mod 3動作するはずです。次の例のファイル1 2 0は、期待どおりに出力されます。

XML

(名前を付けて保存input.xml)

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="mod_test.xsl"?>
<items>
    <item>
        <num>1</num>
    </item>
    <item>
        <num>2</num>
    </item>
    <item>
        <num>3</num>
    </item>
</items>

XSL

(名前を付けて保存mod_text.xsl)

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="xsl">
<xsl:output omit-xml-declaration="yes" indent="yes"/>

<xsl:template match="//item">
    <xsl:value-of select="number(num) mod 3"/>
</xsl:template>
</xsl:stylesheet>

注:num mod 3選択だけでも機能します。

参考までに、ドキュメントの関連セクションを次に示します。

于 2011-12-29T07:16:11.590 に答える
1

私はもう試した:

num mod 3 -- returns NaN 
number(num) mod 3 -- returns NaN 
number(string(num)) -- returns NaN 

これができるかどうか、何か考えはありますか?

完全な XML ドキュメントが提供されていないため、ここに私の 2 つの推測を示します。

  1. 相対式のコンテキスト ノードにはnumがありません。解決策は、コンテキスト ノードが正しいものであることを確認するか、絶対 XPath 式を使用することです。

  2. 表示されていない XML ドキュメントは、デフォルトの名前空間にあります。この場合の解決策は、「名前空間を登録」し (たとえば、文字列プレフィックスをデフォルトの名前空間に関連付ける) 、"x"expressio を に置き換えることです。numx:num

于 2011-12-29T13:54:14.437 に答える