###############################################################################
# Copyright (c) 2007 Chase Technology Ltd - http://www.chasetechnology.co.uk
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#    Doug Satchwell (Chase Technology Ltd) - initial API and implementation
###############################################################################
OPTIMIZE=http://apache.org/xalan/features/optimize
OPTIMIZE.TYPE=boolean
OPTIMIZE.DESC=Optimize stylesheet processing. By default, this attribute is set to true. You may need to set it to false for tooling applications.

INCREMENTAL=http://apache.org/xalan/features/incremental
INCREMENTAL.TYPE=boolean
INCREMENTAL.DESC=Produce output incrementally, rather than waiting to finish parsing the input before generating any output. By default this attribute is set to false. You can turn this attribute on to transform large documents where the stylesheet structure is optimized to execute individual templates without having to parse the entire document.

SOURCE_LOCATION=http://apache.org/xalan/features/source_location
SOURCE_LOCATION.TYPE=boolean
SOURCE_LOCATION.DESC=By default, this attribute is set to false. Setting this attribute to true involves a substantial increase in storage cost per source document node. If you want to use the NodeInfo extension functions (or some other mechanism) to provide this information during a transform, you must set the attribute to true before generating the Transformer and processing the stylesheet.