Вы можете использовать функции ruby в ваших XSLT-файлах:
myfuncs = Class.new do
def func1(a, b)
# do processing here
end
end
Nokogiri::XSLT.register "http://example.com/functions", myfuncs
В файле XSLT не забудьте добавить это к корневому элементу:
<xsl:stylesheet xmlns:my="http://example.com/functions" extension-element-prefixes="my">
Затем вы можете использовать такую функцию:
<xsl:template match="p">
<xsl:value-of select="my:func1(@a, @b)"/>
</xsl:template>