减去一个值返回double而不是int

时间:2014-06-28 20:35:08

标签: xslt-2.0

我想输出n次。因此,我想像这样使用每个

<xsl:variable name="count" select="string-length(data/key)" />
<xsl:for-each select="1 to $count">X</xsl:for-each>

这很好用,但是如果我想从字符串长度

中减去一个数字
<xsl:variable name="count" select="string-length(data/key) - 3" />

编译器给了我一个&#34;必需的类型是xs:integer,但是得到了xs:double&#34;

我尝试设置变量类型

<xsl:variable name="count" select="string-length(data/key) - 3" as="xs:integer" />    

到变量声明,但错误仍然存​​在。

当我输出变量值

<xsl:value-of select="$count" />

我得到一个整数值。这里发生了什么?

1 个答案:

答案 0 :(得分:0)

当我跑

时,我无法重现这个问题
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  exclude-result-prefixes="xs">


<xsl:template match="/">
  <xsl:variable name="count" select="string-length(data/key) - 3" />
  <xsl:for-each select="1 to $count">X</xsl:for-each>
</xsl:template>

</xsl:stylesheet>

与Saxon 9.5对抗

<data>
  <key>Kibology</key>
</data>

我得到输出<?xml version="1.0" encoding="UTF-8"?>XXXXX

请发布一个最小但完整的样本,以便我们重现问题,当然告诉我们您使用的XSLT 2.0处理器。