<!--
  Copyright 2002,2004 The Apache Software Foundation.
  
  Licensed 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.
-->
<html>
<head>
</head>
<body>

  <p>The Jelly Stylesheet Library (JSL)</p>
  
  <p>The JSL tag library implements an XSLT-like declarative XML based processing engine which allows 
  	dynamic stylesheets and a free mix and match of all Jelly tags within the script.
  </p>
  <p>
  	The JSL tag library relies on the XML tags in JSTL to do most of its work, so JSL just provides
  	the declarative XML processing via &lt;jsl:stylesheet&gt;  &lt;jsl:template&gt; and  &lt;jsl:applyTemplates&gt;
  </p>
  
</body>
</html>
