xsl number() - 函数无法转换

时间:2011-10-31 12:42:33

标签: xslt apache-fop

我在.NET应用程序中使用fop 1.0 我的样式表看起来像

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet ... version="1.0" ...>
...
<xsl:param name="fromPerson" select="'1'"/>
<xsl:param name="toPerson" select="'1'"/>
...
<xsl:template match="*[local-name()='Person']">
   <xsl:if test="(position() &gt;= number($fromPerson))>
   ...
   </xsl:if>
</xsl:template>

问题是函数number()失败了:

Zeilennummer221; Spaltennummer267; #UNKNOWN (cli.System.Int32) kann nicht in eine Zahl
konvertiert werden!
(Position des Fehlers unbekannt)org.apache.fop.fo.ValidationException: "fo:root"
is missing child elements. Required content model: (layout-master-set, declarations?,  
bookmark-tree?, (page-sequence|fox:external-document)+) (Keine Kontextinformationen  
verf³gbar)

重要提示:

#UNKNOWN (cli.System.Int32) cannot be converted into an integer

btw:我通过使用&lt; xsl:message&gt;打印出值来测试它。

知道为什么会出现错误吗?

2 个答案:

答案 0 :(得分:1)

可以传递给全局样式表参数的值类型取决于处理器的API。我猜你使用的处理器的API不允许使用cli.System.Int32类型的值。

确实,此处列出了Microsoft API接受的类型:

http://msdn.microsoft.com/en-us/library/system.xml.xsl.xsltargumentlist.addparam.aspx

答案 1 :(得分:-1)

我认为您需要<xsl:variable>,而不是<xsl:param>。参数是<xsl:template>元素的子元素(或<xsl:function>元素的XSLT 2中的子元素。