I have several texts that are to be typeset with minor differences. I do not want to duplicate any xsl-code, so I'm trying to find a way to reuse code, but have changes implemented when applicable. One approach is of course to have a specific xsl-file for every text, and import the more general file into it. Another approach I have thought of, is to have just one xsl-file and conditionalize it. In the xml-files I have something like <text work="kerner">, <text work="kerner">, etc., and in the xsl-file templates like <xsl:template match="pb"> <xsl:choose> <xsl:when test="//@verk='kerner'"> <p class="pagina"><xsl:value-of select="@n"/></p> </xsl:when> <xsl:when test="//@verk='kalm'"> <p class="pagina">( <xsl:value-of select="@n"/> )</p> </xsl:when> </xsl:choose> </xsl:template> This works fine, but I'd be glad to get some input on which method is preferrable, or if there might be other ways to do this. What are your experiences?