У меня нет книги XSLT 1.0 передо мной, но я думаю, что ключ здесь в том, что вы можете выбрать «наборы узлов» и установить их равными переменной вашего параметра, вместо того, чтобы иметь один узел на параметр.
Вот приблизительное предположение:
<xsl:template match="/">
<root>
<xsl:call-template name="max">
<xsl:with-param name="values">
<val>1</val>
<val>2</val>
<val>3</val>
</xsl:with-param>
</xsl:call-template>
</root>
</xsl:template>
<func:function name="my:max">
<xsl:param name="x"/>
<func:result select="math:max($x/val/*)"/>
</func:function>
edit: перечитайте вопрос вместе с некоторыми рекомендациями XSLT 1.0. Это должно напоминать другой ответ, упрощенный только немного. Помните, что если числа, которые вы хотите получить из данных XML, вы можете использовать атрибут select=
в xsl:with-param
, чтобы автоматически выбирать узлы, которые вы хотите сравнить.