<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:ef="http://example.org/extension/functions"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="2.0">
<xsl:output method="text"/>
<xsl:variable name="links" select="/root/@a * /root/@b" as="xs:double"/>
<xsl:template name="html-elements" as="element()*">
<xsl:sequence select="//html:*"/>
</xsl:template>
<xsl:function name="ef:lunchp" as="xs:boolean">
<xsl:call-template name="lunchtime">
<xsl:with-param name="time" select="./time[1]" as="xs:integer"/>
</xsl:call-template>
<xsl:value-of select="true()"/>
</xsl:function>
<xsl:template name="lunchtime">
<xsl:param name="time" select="0.0" as="xs:double"/>
…
</xsl:template>
<xsl:template match="/">
<xsl:text>Doesn’t do much, does it?</xsl:text>
</xsl:template>
</xsl:stylesheet>