###############################################################################
# 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
###############################################################################
S_KEY_INDENT_AMOUNT={http://xml.apache.org/xalan}indent-amount
S_KEY_INDENT_AMOUNT.DESC=The non-standard property key to use to set the\n\
	number of whitepaces to indent by, per indentation level,\n\
    if indent="yes"

S_KEY_LINE_SEPARATOR={http://xml.apache.org/xalan}line-separator
S_KEY_LINE_SEPARATOR.DESC=The non-standard property key to use to set the characters to write out as at the end of a line,\n\
	rather than the default ones from the runtime.

S_KEY_CONTENT_HANDLER={http://xml.apache.org/xalan}content-handler
S_KEY_CONTENT_HANDLER.DESC=This non-standard property key is used to set the name of the fully qualified\n\
     Java class that implements the ContentHandler interface.\n\
     Fully qualified name of class with a default constructor that\n\
     implements the ContentHandler interface, where the result tree events\n\
     will be sent to.

S_KEY_ENTITIES={http://xml.apache.org/xalan}entities
S_KEY_ENTITIES.DESC=This non-standard property key is used to specify the name of the property file\n\
     that specifies character to entity reference mappings.

S_USE_URL_ESCAPING={http://xml.apache.org/xalan}use-url-escaping
S_USE_URL_ESCAPING.DESC=This non-standard property key is used to set a value of "yes" if the href values for HTML serialization should\n\
     use %xx escaping.
     
S_OMIT_META_TAG={http://xml.apache.org/xalan}omit-meta-tag
S_OMIT_META_TAG.DESC=This non-standard property key is used to set a value of "yes" if the META tag should be omitted where it would\n\
     otherwise be supplied.