###############################################################################
# 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
###############################################################################
ALLOW_EXTERNAL_FUNCTIONS=http://saxon.sf.net/feature/allow-external-functions
ALLOW_EXTERNAL_FUNCTIONS.TYPE=boolean
ALLOW_EXTERNAL_FUNCTIONS.DESC=true if the stylesheet allows external functions to be called. Default is true. The setting false is recommended in an environment where untrusted stylesheets may be executed. Setting this value to false  also disables user-defined extension elements, together with the writing of multiple output files, all of which carry similar security risks.

TRACE_EXTERNAL_FUNCTIONS=http://saxon.sf.net/feature/trace-external-functions
TRACE_EXTERNAL_FUNCTIONS.TYPE=boolean
TRACE_EXTERNAL_FUNCTIONS.DESC=true if the tracing of calls to external Java methods is required. Default is false. This switch is useful when analyzing why Saxon fails to find a Java method to match an extension function call in the stylesheet, or why it chooses one method over another when several are available. The trace output is sent to System.err.

TIMING=http://saxon.sf.net/feature/timing
TIMING.TYPE=boolean
TIMING.DESC=true if basic timing information is to be output to the standard error output stream.

TREE_MODEL=http://saxon.sf.net/feature/treeModel
TREE_MODEL.TYPE=int
TREE_MODEL.DESC=Builder.STANDARD_TREE or Builder.TINY_TREE. Selects an implementation of the Saxon tree model. The default is Builder.TINY_TREE.

TRACE_LISTENER=http://saxon.sf.net/feature/traceListener
TRACE_LISTENER.TYPE=object
TRACE_LISTENER.DESC=an instance of the class net.sf.saxon.trace.TraceListener. This object will be notified of significant events occurring during the transformation, for tracing or debugging purposes.

LINE_NUMBERING=http://saxon.sf.net/feature/linenumbering
LINE_NUMBERING.TYPE=boolean
LINE_NUMBERING.DESC=indicates whether line numbers are to be maintained for the source document. This will not be possible if the source document is supplied as a DOM. The line numbers are accessible through the tracing interface, and also via the saxon:line-number() extension function.

RECOVERY_POLICY=http://saxon.sf.net/feature/recoveryPolicy
RECOVERY_POLICY.TYPE=int
RECOVERY_POLICY.DESC=An Integer. Indicates how dynamic errors should be handled. One of the values (defined as constants in the Controller class) RECOVER_SILENTLY, RECOVER_WITH_WARNINGS, or DO_NOT_RECOVER).

MESSAGE_EMITTER_CLASS=http://saxon.sf.net/feature/messageEmitterClass
MESSAGE_EMITTER_CLASS.TYPE=class
MESSAGE_EMITTER_CLASS.DESC=The full name of a saxon emitter class. that implements the net.sf.saxon.output.Emitter interface; the class will be used to format the output of the xsl:message instruction.

SOURCE_PARSER_CLASS=http://saxon.sf.net/feature/sourceParserClass
SOURCE_PARSER_CLASS.TYPE=class
SOURCE_PARSER_CLASS.DESC=The full name of a class that implements the org.xml.sax.XMLReader interface; the class will be used to parse source documents (that is, the principal source document plus any secondary source documents read using the document() function)

STYLE_PARSER_CLASS=http://saxon.sf.net/feature/styleParserClass
STYLE_PARSER_CLASS.TYPE=class
STYLE_PARSER_CLASS.DESC=The full name of a class that implements the org.xml.sax.XMLReader interface; the class will be used to parse stylesheet documents (that is, the principal stylesheet module plus any secondary source documents read using xsl:include or xsl:import)

OUTPUT_URI_RESOLVER=http://saxon.sf.net/feature/outputURIResolver
OUTPUT_URI_RESOLVER.TYPE=object
OUTPUT_URI_RESOLVER.DESC=An instance of the class net.sf.saxon.OutputURIResolver; this object will be used to resolve URIs of secondary result documents specified in the href attribute of the xsl:result-document  instruction

DTD_VALIDATION=http://saxon.sf.net/feature/validation
DTD_VALIDATION.TYPE=boolean
DTD_VALIDATION.DESC=Indicates whether the XML parser should be asked to validate source documents against their DTD. This applies to the initial source document and any source documents read using the document() function, unless handled by a user-written URIResolver.

VALIDATION_WARNINGS=http://saxon.sf.net/feature/validation-warnings
VALIDATION_WARNINGS.TYPE=boolean
VALIDATION_WARNINGS.DESC=This determines whether validation errors in result documents should be treated as fatal. By default they are fatal; with this option set, they are treated as warnings.

SCHEMA_VALIDATION=http://saxon.sf.net/feature/schema-validation
SCHEMA_VALIDATION.TYPE=boolean
SCHEMA_VALIDATION.DESC=This determines whether source documents should be parsed with schema-validation enabled.

VERSION_WARNING=http://saxon.sf.net/feature/version-warning
VERSION_WARNING.TYPE=boolean
VERSION_WARNING.DESC=This determines whether a warning should be output when running an XSLT 2.0 processor against an XSLT 1.0 stylesheet. The XSLT specification requires this to be done by default.

NAME_POOL=http://saxon.sf.net/feature/namePool
NAME_POOL.TYPE=object
NAME_POOL.DESC=A instance of class net.sf.saxon.om.NamePool. Indicates that the supplied NamePool should be used as the target (run-time) NamePool by all stylesheets compiled (using newTemplates()) after this call on setAttribute. Normally a single system-allocated NamePool is used for all stylesheets compiled while the Java VM remains loaded; this attribute allows user control over the allocation of NamePools. Note that source trees used as input to a transformation must be built using the same NamePool that is used when the stylesheet is compiled: this will happen automatically if the input to a transformation is supplied as a SAXSource or StreamSource but it is under user control if you build the source tree yourself.

RECOGNIZE_URI_QUERY_PARAMETERS=http://saxon.sf.net/feature/recognize-uri-query-parameters
RECOGNIZE_URI_QUERY_PARAMETERS.TYPE=boolean
RECOGNIZE_URI_QUERY_PARAMETERS.DESC=determines whether query parameters (things after "?")\n\
 in a URI passed to the document() or doc() function are specially recognized by the system default URIResolver.\n\
 Allowed parameters include, for example validation=strict to perform schema validation, and strip-space=yes\n\
 to perform stripping of all whitespace-only text nodes

COLLATION_URI_RESOLVER=http://saxon.sf.net/feature/collation-uri-resolver
COLLATION_URI_RESOLVER.TYPE=object
COLLATION_URI_RESOLVER.DESC=A net.sf.saxon.sort.CollationURIResolver used to resolve collation URIs used in stylesheets compiled or executed under the\n\
 control of this TransformerFactory
 
COLLECTION_URI_RESOLVER=http://saxon.sf.net/feature/collection-uri-resolver
COLLECTION_URI_RESOLVER.TYPE=object
COLLECTION_URI_RESOLVER.DESC=A net.sf.saxon.sort.CollectionURIResolver used to resolve collection URIs used in calls of the collection() function