Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath将节点强制转换为mod的编号_Xpath_Numbers_Modulus - Fatal编程技术网

Xpath将节点强制转换为mod的编号

Xpath将节点强制转换为mod的编号,xpath,numbers,modulus,Xpath,Numbers,Modulus,我有包含数字的节点,我想将其转换为数字并使用mod。例如: <item> <num>1</num> </item> <item> <num>2</num> </item> <item> <num>3</num> </item> 你知道这能不能做到吗?即使有办法转换成ASCII码,我也会接受 提前谢谢 数字(num)mod 3应该

我有包含数字的节点,我想将其转换为数字并使用mod。例如:

<item>
    <num>1</num>
</item>
<item>
    <num>2</num>
</item>
<item>
    <num>3</num>
</item>
你知道这能不能做到吗?即使有办法转换成ASCII码,我也会接受

提前谢谢

数字(num)mod 3
应该可以工作。以下示例文件按预期输出
1 2 0

XML (另存为
input.xml

注意:只需选择中的
num mod 3

以下是文档中的示例,以供参考

我试过:

num mod 3 -- returns NaN
number(num) mod 3 -- returns NaN
number(string(num)) -- returns NaN
num mod 3 -- returns NaN 
number(num) mod 3 -- returns NaN 
number(string(num)) -- returns NaN 
你知道这能不能做到吗

由于没有提供完整的XML文档,下面是我的两个猜测:

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

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


  • 前两个应该有效。您使用的XPath引擎是什么?plain
    num
    返回什么?我打赌那也是楠。我猜您的表达式不工作是因为上下文节点错误。
    <?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 -- returns NaN 
    number(num) mod 3 -- returns NaN 
    number(string(num)) -- returns NaN