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 文档,这里是我的两个猜测

  1. 相对表达式的上下文节点没有num节点。解决方案是确保上下文节点是正确的,或者使用绝对 XPath 表达式。

  2. 未显示的 XML 文档位于默认名称空间中。在这种情况下,解决方案是“注册命名空间”(将字符串前缀与默认命名空间相关联,例如"x"),然后在您的表达式中替换numx:num.

于 2011-12-29T13:54:14.437 回答