<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:param name="time"/>
    <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>