<?xml version="1.0" encoding="ISO-8859-1" ?>
<!--
  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.
-->
<taglib xmlns="http://java.sun.com/xml/ns/javaee" version="2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd">
  <tlib-version>3.0</tlib-version>
  <short-name>FreeMarker-test-taglib</short-name>

  <tag>
    <name>testtag</name>
    <tag-class>freemarker.ext.jsp.taglibmembers.TestTag</tag-class>
    <body-content>JSP</body-content>
  </tag>

  <tag>
    <name><!-- white space -->
      simpletag<!-- white space -->
    </name>
    <tag-class><!-- white space -->
      freemarker.ext.jsp.taglibmembers.TestSimpleTag<!-- white space -->
    </tag-class>
    <body-content>JSP</body-content>
  </tag>
</taglib>