xsl number () - функция не может конвертировать - PullRequest
0 голосов
/ 31 октября 2011

Я использую fop 1.0 в приложении .NET.
Моя таблица стилей выглядит как

<?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

Кстати: я проверил это, распечатав значение с

Есть идеи, почему это приводит к ошибке?

Ответы [ 2 ]

1 голос
/ 31 октября 2011

Типы значений, которые можно передавать в глобальные параметры таблицы стилей, зависят от API процессора.Я предполагаю, что вы используете процессор, API которого не допускает значения типа cli.System.Int32.

Действительно, типы, принятые Microsoft API, перечислены здесь:

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

0 голосов
/ 31 октября 2011

Я думаю, вам нужен <xsl:variable>, а не <xsl:param>. Параметры являются подэлементами элемента <xsl:template> (или в XSLT 2 элемента <xsl:function>.

...