OK, es correcto pero no es el parametro tipo lo que tienes declarado en tu XSL sino el parametro valor que es un aprametro que recibe el template "cd" cuyo valor lo lee del parametro "tipo" que no tienes declarado.
Lo tienes que declarar al ppio de tu XSL con <xsl:param name="tipo" /> para que sea un parametro global.
El codigo quedaria asi:
Código:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="iso-8859-1" indent="no"/>
<xsl:param name="tipo" />
<xsl:template match="collection">
Hey! Welcome to my sweet CD collection!
<xsl:apply-templates select="cd">
<xsl:with-param name="valor"/>
</xsl:with-param>
</xsl:apply-template>
</xsl:template>
<xsl:template match="cd">
<h1>
</xsl:template>
</xsl:stylesheet>
Y listo! Creo qeu con eso te funcionaria.
Suerte!