<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:r="http://nwalsh.com/xmlns/extreme2004/recipes/" xmlns="http://www.w3.org/1999/xhtml" xmlns:saxon="http://saxon.sf.net/" version="2.0"> <xsl:import-schema namespace="http://nwalsh.com/xmlns/extreme2004/recipes/" schema-location="recipes.xsd"/> <xsl:output method="text"/> <xsl:strip-space elements="r:*"/> <xsl:preserve-space elements="r:name r:source r:p"/> <xsl:template match="/"> <xsl:if test="not(element(*, r:RecipeList))"> <xsl:message terminate="yes"> <xsl:text>Document element must match element(*, r:RecipeList).</xsl:text> </xsl:message> </xsl:if> <xsl:apply-templates select="*"/> </xsl:template> <xsl:template match="r:recipeList"> <xsl:apply-templates select=".//*"/> <xsl:text> </xsl:text> <xsl:apply-templates select=".//*" mode="beverage"/> </xsl:template> <xsl:template match="schema-element(r:recipe)" priority="1000"> <xsl:value-of select="local-name(.)"/> <xsl:text> is substitutable for r:recipe.</xsl:text> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="*"/> <xsl:template match="schema-element(r:beverage)" mode="beverage" priority="1000"> <xsl:value-of select="local-name(.)"/> <xsl:text> is substitutable for r:beverage.</xsl:text> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="*" mode="beverage"/> </xsl:stylesheet>