<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:r="http://nwalsh.com/xmlns/extreme2006/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/extreme2006/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:text>r:name occurs </xsl:text>
    <xsl:value-of select="count(//r:name)"/>
    <xsl:text> times; </xsl:text>
    <xsl:value-of select="count(//element(r:name,r:Para))"/>
    <xsl:text> derived from r:Para.</xsl:text>
    <xsl:text>&#10;</xsl:text>
  </xsl:template>

  <xsl:template match="r:recipeList">
    <xsl:apply-templates select=".//*"/>
  </xsl:template>

  <xsl:template match="element(*,r:FoodRecipe)" priority="1000">
    <xsl:value-of select="local-name(.)"/>
    <xsl:text> matches element(*,r:FoodRecipe).</xsl:text>
    <xsl:text>&#10;</xsl:text>
  </xsl:template>

  <xsl:template match="*"/>

</xsl:stylesheet>