<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
               xmlns:xs="http://www.w3.org/2001/XMLSchema"
               xmlns:hw="http://www.fgeorges.org/hello-world"
               version="2.0">

  <xsl:function name="hw:hello-world" as="xs:string">
    <xsl:sequence select="'Hello, world!'"/>
  </xsl:function>

  <xsl:function name="hw:hello-world" as="xs:string">
    <xsl:param name="who" as="xs:string"/>
    <xsl:sequence select="concat('Hello, ', $who, '!')"/>
  </xsl:function>

  <xsl:template match="elem">
    <elem1/>
    <elem2 id="{@id}"/>
  </xsl:template>

</xsl:transform>
