###########################################################################
# reserved comment block
# DO NOT REMOVE OR ALTER!
###########################################################################
###########################################################################
# Copyright 2003-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.
##########################################################################
#
# $Id: output_html.properties,v 1.2.4.1 2005/09/15 08:15:32 suresh_emailid Exp $
#
# Specify defaults when method="html".  These defaults use output_xml.properties 
# as a base.
#

# XSLT properties do not need namespace qualification.
method=html
indent=yes
media-type=text/html
version=4.0

# Xalan-specific output properties.  These can be overridden in the stylesheet 
# assigning a xalan namespace.  For example:
# <xsl:stylesheet version="1.0"
#          xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
#          xmlns:xalan="http://xml.apache.org/xalan">
#  <xsl:output method="html" encoding="UTF-8"
#              xalan:content-handler="MyContentHandler"/>
#  ...
# Note that the colon after the protocol needs to be escaped.
{http\u003a//xml.apache.org/xalan}indent-amount=0
{http\u003a//xml.apache.org/xalan}content-handler=com.sun.org.apache.xml.internal.serializer.ToHTMLStream
{http\u003a//xml.apache.org/xalan}entities=com/sun/org/apache/xml/internal/serializer/HTMLEntities
{http\u003a//xml.apache.org/xalan}use-url-escaping=yes
{http\u003a//xml.apache.org/xalan}omit-meta-tag=no
