<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

  <!-- FileName: MATCHerr08 -->
  <!-- Document: http://www.w3.org/TR/xslt -->
  <!-- DocVersion: 19991116 -->
  <!-- Section: 5.3 -->
  <!-- Creator: David Marston -->
  <!-- Purpose: Test for error when xsl:template has neither match nor name, but has a mode. -->
  <!-- ExpectedException: XSL Error: xsl:template must have a match attribute if it has a mode. -->
  <!-- ExpectedException: xsl:template must have a name or match attribute (or both). -->

<xsl:template match="letters">
  <out>
    <xsl:apply-templates mode="broken"/>
  </out>
</xsl:template>

<xsl:template mode="broken">
  <xsl:value-of select="."/>
  <xsl:text> Huh? </xsl:text>
</xsl:template>

<xsl:template match="text()"/>


  <!--
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements. See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership. The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the  "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
  -->

</xsl:stylesheet>
