# This file contains error and warning messages related to Xalan Error Handling.
# Many of the messages are referenced by integer value (to avoid more strings
# in the class files) and the string keys formed at runtime.  In the case where
# the key is an integer, the constant reference (that would be used in the code)
# is listed in a comment above the tuple.
#
#  General notes to translators:
#
#  1) Xalan (or more properly, Xalan-interpretive) and XSLTC are names of
#     components.
#     XSLT is an acronym for "XML Stylesheet Language: Transformations".
#     XSLTC is an acronym for XSLT Compiler.
#
#  2) A stylesheet is a description of how to transform an input XML document
#     into a resultant XML document (or HTML document or text).  The
#     stylesheet itself is described in the form of an XML document.
#
#  3) A template is a component of a stylesheet that is used to match a
#     particular portion of an input document and specifies the form of the
#     corresponding portion of the output document.
#
#  4) An element is a mark-up tag in an XML document; an attribute is a
#     modifier on the tag.  For example, in <elem attr='val' attr2='val2'>
#     "elem" is an element name, "attr" and "attr2" are attribute names with
#     the values "val" and "val2", respectively.
#
#  5) A namespace declaration is a special attribute that is used to associate
#     a prefix with a URI (the namespace).  The meanings of element names and
#     attribute names that use that prefix are defined with respect to that
#     namespace.
#
#  6) "Translet" is an invented term that describes the class file that
#     results from compiling an XML stylesheet into a Java class.
#
#  7) XPath is a specification that describes a notation for identifying
#     nodes in a tree-structured representation of an XML document.  An
#     instance of that notation is referred to as an XPath expression.
#

# ER_ROR0000
ER0000={0}
# ER_NO_CURLYBRACE
ER0001=Error\u003a Can not have '{' within expression
# ER_ILLEGAL_ATTRIBUTE
ER0002={0} has an illegal attribute\u003a {1}
# ER_NULL_SOURCENODE_APPLYIMPORTS
ER0003=sourceNode is null in xsl\u003aapply-imports!
# ER_CANNOT_ADD
ER0004=Can not add {0} to {1}
# ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES
ER0005=sourceNode is null in handleApplyTemplatesInstruction!
# ER_NO_NAME_ATTRIB
ER0006={0} must have a name attribute.
# ER_TEMPLATE_NOT_FOUND
ER0007=Could not find template named\u003a {0}
# ER_CANT_RESOLVE_NAME_AVT
ER0008=Could not resolve name AVT in xsl\u003acall-template.
# ER_REQUIRES_ATTRIB
ER0009={0} requires attribute\u003a {1}
# ER_MUST_HAVE_TEST_ATTRIB
ER0010={0} must have a 'test' attribute.
# ER_BAD_VAL_ON_LEVEL_ATTRIB
ER0011=Bad value on level attribute\u003a {0}
# ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML
ER0012=processing-instruction name can not be 'xml'
# ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME
ER0013=processing-instruction name must be a valid NCName\u003a {0}
# ER_NEED_MATCH_ATTRIB
ER0014={0} must have a match attribute if it has a mode.
# ER_NEED_NAME_OR_MATCH_ATTRIB
ER0015={0} requires either a name or a match attribute.
# ER_CANT_RESOLVE_NSPREFIX
ER0016=Can not resolve namespace prefix\u003a {0}
# ER_ILLEGAL_VALUE
ER0017=xml\u003aspace has an illegal value\u003a {0}
# ER_NO_OWNERDOC
ER0018=Child node does not have an owner document!
# ER_ELEMTEMPLATEELEM_ERR
ER0019=ElemTemplateElement error\u003a {0}
# ER_NULL_CHILD
ER0020=Trying to add a null child!
# ER_NEED_SELECT_ATTRIB
ER0021={0} requires a select attribute.
# ER_NEED_TEST_ATTRIB
ER0022=xsl\u003awhen must have a 'test' attribute.
# ER_NEED_NAME_ATTRIB
ER0023=xsl\u003awith-param must have a 'name' attribute.
# ER_NO_CONTEXT_OWNERDOC
ER0024=context does not have an owner document!
# ER_COULD_NOT_CREATE_XML_PROC_LIAISON
ER0025=Could not create XML TransformerFactory Liaison\u003a {0}
# ER_PROCESS_NOT_SUCCESSFUL
ER0026=Xalan\u003a Process was not successful.
# ER_NOT_SUCCESSFUL
ER0027=Xalan\u003a was not successful.
# ER_ENCODING_NOT_SUPPORTED
ER0028=Encoding not supported\u003a {0}
# ER_COULD_NOT_CREATE_TRACELISTENER
ER0029=Could not create TraceListener\u003a {0}
# ER_KEY_REQUIRES_NAME_ATTRIB
ER0030=xsl\u003akey requires a 'name' attribute!
# ER_KEY_REQUIRES_MATCH_ATTRIB
ER0031=xsl\u003akey requires a 'match' attribute!
# ER_KEY_REQUIRES_USE_ATTRIB
ER0032=xsl\u003akey requires a 'use' attribute!
# ER_REQUIRES_ELEMENTS_ATTRIB
ER0033=(StylesheetHandler) {0} requires an 'elements' attribute!
# ER_MISSING_PREFIX_ATTRIB
ER0034=(StylesheetHandler) {0} attribute 'prefix' is missing
# ER_BAD_STYLESHEET_URL
ER0035=Stylesheet URL is bad\u003a {0}
# ER_FILE_NOT_FOUND
ER0036=Stylesheet file was not found\u003a {0}
# ER_IOEXCEPTION
ER0037=Had IO Exception with stylesheet file\u003a {0}
# ER_NO_HREF_ATTRIB
ER0038=(StylesheetHandler) Could not find href attribute for {0}
# ER_STYLESHEET_INCLUDES_ITSELF
ER0039=(StylesheetHandler) {0} is directly or indirectly including itself!
# ER_PROCESSINCLUDE_ERROR
ER0040=StylesheetHandler.processInclude error, {0}
# ER_MISSING_LANG_ATTRIB
ER0041=(StylesheetHandler) {0} attribute 'lang' is missing
# ER_MISSING_CONTAINER_ELEMENT_COMPONENT
ER0042=(StylesheetHandler) misplaced {0} element?? Missing container element 'component'
# ER_CAN_ONLY_OUTPUT_TO_ELEMENT
ER0043=Can only output to an Element, DocumentFragment, Document, or PrintWriter.
# ER_PROCESS_ERROR
ER0044=StylesheetRoot.process error
# ER_UNIMPLNODE_ERROR
ER0045=UnImplNode error\u003a {0}
# ER_NO_SELECT_EXPRESSION
ER0046=Error! Did not find xpath select expression (-select).
# ER_CANNOT_SERIALIZE_XSLPROCESSOR
ER0047=Can not serialize an XSLProcessor!
# ER_NO_INPUT_STYLESHEET
ER0048=Stylesheet input was not specified!
# ER_FAILED_PROCESS_STYLESHEET
ER0049=Failed to process stylesheet!
# ER_COULDNT_PARSE_DOC
ER0050=Could not parse {0} document!
# ER_COULDNT_FIND_FRAGMENT
ER0051=Could not find fragment\u003a {0}
# ER_NODE_NOT_ELEMENT
ER0052=Node pointed to by fragment identifier was not an element\u003a {0}
# ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB
ER0053=for-each must have either a match or name attribute
# ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB
ER0054=templates must have either a match or name attribute
# ER_NO_CLONE_OF_DOCUMENT_FRAG
ER0055=No clone of a document fragment!
# ER_CANT_CREATE_ITEM
ER0056=Can not create item in result tree\u003a {0}
# ER_XMLSPACE_ILLEGAL_VALUE
ER0057=xml\u003aspace in the source XML has an illegal value\u003a {0}
# ER_NO_XSLKEY_DECLARATION
ER0058=There is no xsl\u003akey declaration for {0}!
# ER_CANT_CREATE_URL
ER0059=Error! Cannot create url for\u003a {0}
# ER_XSLFUNCTIONS_UNSUPPORTED
ER0060=xsl\u003afunctions is unsupported
# ER_PROCESSOR_ERROR
ER0061=XSLT TransformerFactory Error
# ER_NOT_ALLOWED_INSIDE_STYLESHEET
ER0062=(StylesheetHandler) {0} not allowed inside a stylesheet!
# ER_RESULTNS_NOT_SUPPORTED
ER0063=result-ns no longer supported!  Use xsl\u003aoutput instead.
# ER_DEFAULTSPACE_NOT_SUPPORTED
ER0064=default-space no longer supported!  Use xsl\u003astrip-space or xsl\u003apreserve-space instead.
# ER_INDENTRESULT_NOT_SUPPORTED
ER0065=indent-result no longer supported!  Use xsl\u003aoutput instead.
# ER_ILLEGAL_ATTRIB
ER0066=(StylesheetHandler) {0} has an illegal attribute\u003a {1}
# ER_UNKNOWN_XSL_ELEM
ER0067=Unknown XSL element\u003a {0}
# ER_BAD_XSLSORT_USE
ER0068=(StylesheetHandler) xsl\u003asort can only be used with xsl\u003aapply-templates or xsl\u003afor-each.
# ER_MISPLACED_XSLWHEN
ER0069=(StylesheetHandler) misplaced xsl\u003awhen!
# ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE
ER0070=(StylesheetHandler) xsl\u003awhen not parented by xsl\u003achoose!
# ER_MISPLACED_XSLOTHERWISE
ER0071=(StylesheetHandler) misplaced xsl\u003aotherwise!
# ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE
ER0072=(StylesheetHandler) xsl\u003aotherwise not parented by xsl\u003achoose!
# ER_NOT_ALLOWED_INSIDE_TEMPLATE
ER0073=(StylesheetHandler) {0} is not allowed inside a template!
# ER_UNKNOWN_EXT_NS_PREFIX
ER0074=(StylesheetHandler) {0} extension namespace prefix {1} unknown
# ER_IMPORTS_AS_FIRST_ELEM
ER0075=(StylesheetHandler) Imports can only occur as the first elements in the stylesheet!
# ER_IMPORTING_ITSELF
ER0076=(StylesheetHandler) {0} is directly or indirectly importing itself!
# ER_XMLSPACE_ILLEGAL_VAL
ER0077=(StylesheetHandler) " + "xml\u003aspace has an illegal value\u003a {0}
# ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL
ER0078=processStylesheet not succesfull!
# ER_SAX_EXCEPTION
ER0079=SAX Exception
# ER_FUNCTION_NOT_SUPPORTED
ER0080=Function not supported!
# ER_XSLT_ERROR
ER0081=XSLT Error
# ER_CURRENCY_SIGN_ILLEGAL
ER0082=currency sign is not allowed in format pattern string
# ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM
ER0083=Document function not supported in Stylesheet DOM!
# ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER
ER0084=Can't resolve prefix of non-Prefix resolver!
# ER_REDIRECT_COULDNT_GET_FILENAME
ER0085=Redirect extension\u003a Could not get filename - file or select attribute must return valid string.
# ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT
ER0086=Can not build FormatterListener in Redirect extension!
# ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX
ER0087=Prefix in exclude-result-prefixes is not valid\u003a {0}
# ER_MISSING_NS_URI
ER0088=Missing namespace URI for specified prefix
# ER_MISSING_ARG_FOR_OPTION
ER0089=Missing argument for option\u003a {0}
# ER_INVALID_OPTION
ER0090=Invalid option\u003a {0}
# ER_MALFORMED_FORMAT_STRING
ER0091=Malformed format string\u003a {0}
# ER_STYLESHEET_REQUIRES_VERSION_ATTRIB
ER0092=xsl\u003astylesheet requires a 'version' attribute!
# ER_ILLEGAL_ATTRIBUTE_VALUE
ER0093=Attribute\u003a {0} has an illegal value\u003a {1}
# ER_CHOOSE_REQUIRES_WHEN
ER0094=xsl\u003achoose requires an xsl\u003awhen
# ER_NO_APPLY_IMPORT_IN_FOR_EACH
ER0095=xsl\u003aapply-imports not allowed in a xsl\u003afor-each
# ER_CANT_USE_DTM_FOR_OUTPUT
ER0096=Cannot use a DTMLiaison for an output DOM node... pass a org.apache.xpath.DOM2Helper instead!
# ER_CANT_USE_DTM_FOR_INPUT
ER0097=Cannot use a DTMLiaison for a input DOM node... pass a org.apache.xpath.DOM2Helper instead!
# ER_CALL_TO_EXT_FAILED
ER0098=Call to extension element failed\u003a {0}
# ER_PREFIX_MUST_RESOLVE
ER0099=Prefix must resolve to a namespace\u003a {0}
# ER_INVALID_UTF16_SURROGATE
ER0100=Invalid UTF-16 surrogate detected\u003a {0} ?
# ER_XSLATTRSET_USED_ITSELF
ER0101=xsl\u003aattribute-set {0} used itself, which will cause an infinite loop.
# ER_CANNOT_MIX_XERCESDOM
ER0102=Can not mix non Xerces-DOM input with Xerces-DOM output!
# ER_TOO_MANY_LISTENERS
ER0103=addTraceListenersToStylesheet - TooManyListenersException
# ER_IN_ELEMTEMPLATEELEM_READOBJECT
ER0104=In ElemTemplateElement.readObject\u003a {0}
# ER_DUPLICATE_NAMED_TEMPLATE
ER0105=Found more than one template named\u003a {0}
# ER_INVALID_KEY_CALL
ER0106=Invalid function call\u003a recursive key() calls are not allowed
# ER_REFERENCING_ITSELF
ER0107=Variable {0} is directly or indirectly referencing itself!
# ER_ILLEGAL_DOMSOURCE_INPUT
ER0108=The input node can not be null for a DOMSource for newTemplates!
# ER_CLASS_NOT_FOUND_FOR_OPTION
ER0109=Class file not found for option {0}
# ER_REQUIRED_ELEM_NOT_FOUND
ER0110=Required Element not found\u003a {0}
# ER_INPUT_CANNOT_BE_NULL
ER0111=InputStream cannot be null
# ER_URI_CANNOT_BE_NULL
ER0112=URI cannot be null
# ER_FILE_CANNOT_BE_NULL
ER0113=File cannot be null
# ER_SOURCE_CANNOT_BE_NULL
ER0114=InputSource cannot be null
# ER_CANNOT_OVERWRITE_CAUSE
ER0115=Cannot overwrite cause
# ER_CANNOT_INIT_BSFMGR
ER0116=Could not initialize BSF Manager
# ER_CANNOT_CMPL_EXTENSN
ER0117=Could not compile extension
# ER_CANNOT_CREATE_EXTENSN
ER0118=Could not create extension\u003a {0} because of\u003a {1}
# ER_INSTANCE_MTHD_CALL_REQUIRES
ER0119=Instance method call to method {0} requires an Object instance as first argument
# ER_INVALID_ELEMENT_NAME
ER0120=Invalid element name specified {0}
# ER_ELEMENT_NAME_METHOD_STATIC
ER0121=Element name method must be static {0}
# ER_EXTENSION_FUNC_UNKNOWN
ER0122=Extension function {0} \u003a {1} is unknown
# ER_MORE_MATCH_CONSTRUCTOR
ER0123=More than one best match for constructor for {0}
# ER_MORE_MATCH_METHOD
ER0124=More than one best match for method {0}
# ER_MORE_MATCH_ELEMENT
ER0125=More than one best match for element method {0}
# ER_INVALID_CONTEXT_PASSED
ER0126=Invalid context passed to evaluate {0}
# ER_POOL_EXISTS
ER0127=Pool already exists
# ER_NO_DRIVER_NAME
ER0128=No driver Name specified
# ER_NO_URL
ER0129=No URL specified
# ER_POOL_SIZE_LESSTHAN_ONE
ER0130=Pool size is less than one!
# ER_INVALID_DRIVER
ER0131=Invalid driver name specified!
# ER_NO_STYLESHEETROOT
ER0132=Did not find the stylesheet root!
# ER_ILLEGAL_XMLSPACE_VALUE
ER0133=Illegal value for xml\u003aspace
# ER_PROCESSFROMNODE_FAILED
ER0134=processFromNode failed
# ER_RESOURCE_COULD_NOT_LOAD
ER0135=The resource [ {0} ] could not load\u003a {1} \n {2} \t {3}
# ER_BUFFER_SIZE_LESSTHAN_ZERO
ER0136=Buffer size <\u003d0
# ER_UNKNOWN_ERROR_CALLING_EXTENSION
ER0137=Unknown error when calling extension
# ER_NO_NAMESPACE_DECL
ER0138=Prefix {0} does not have a corresponding namespace declaration
# ER_ELEM_CONTENT_NOT_ALLOWED
ER0139=Element content not allowed for lang\u003djavaclass {0}
# ER_STYLESHEET_DIRECTED_TERMINATION
ER0140=Stylesheet directed termination
# ER_ONE_OR_TWO
ER0141=1 or 2
# ER_TWO_OR_THREE
ER0142=2 or 3
# ER_COULD_NOT_LOAD_RESOURCE
ER0143=Could not load {0} (check CLASSPATH), now using just the defaults
# ER_CANNOT_INIT_DEFAULT_TEMPLATES
ER0144=Cannot initialize default templates
# ER_RESULT_NULL
ER0145=Result should not be null
# ER_RESULT_COULD_NOT_BE_SET
ER0146=Result could not be set
# ER_NO_OUTPUT_SPECIFIED
ER0147=No output specified
# ER_CANNOT_TRANSFORM_TO_RESULT_TYPE
ER0148=Can't transform to a Result of type {0}
# ER_CANNOT_TRANSFORM_SOURCE_TYPE
ER0149=Can't transform a Source of type {0}
# ER_NULL_CONTENT_HANDLER
ER0150=Null content handler
# ER_NULL_ERROR_HANDLER
ER0151=Null error handler
# ER_CANNOT_CALL_PARSE
ER0152=parse can not be called if the ContentHandler has not been set
# ER_NO_PARENT_FOR_FILTER
ER0153=No parent for filter
# ER_NO_STYLESHEET_IN_MEDIA
ER0154=No stylesheet found in\u003a {0}, media\u003d {1}
# ER_NO_STYLESHEET_PI
ER0155=No xml-stylesheet PI found in\u003a {0}
# ER_NO_DEFAULT_IMPL
ER0156=No default implementation found 
# ER_CHUNKEDINTARRAY_NOT_SUPPORTED
ER0157=ChunkedIntArray({0}) not currently supported
# ER_OFFSET_BIGGER_THAN_SLOT
ER0158=Offset bigger than slot
# ER_COROUTINE_NOT_AVAIL
ER0159=Coroutine not available, id\u003d{0}
# ER_COROUTINE_CO_EXIT
ER0160=CoroutineManager received co_exit() request
# ER_COJOINROUTINESET_FAILED
ER0161=co_joinCoroutineSet() failed
# ER_COROUTINE_PARAM
ER0162=Coroutine parameter error ({0})
# ER_PARSER_DOTERMINATE_ANSWERS
ER0163=\nUNEXPECTED\u003a Parser doTerminate answers {0}
# ER_NO_PARSE_CALL_WHILE_PARSING
ER0164=parse may not be called while parsing
# ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED
ER0165=Error\u003a typed iterator for axis  {0} not implemented
# ER_ITERATOR_AXIS_NOT_IMPLEMENTED
ER0166=Error\u003a iterator for axis {0} not implemented 
# ER_ITERATOR_CLONE_NOT_SUPPORTED
ER0167=Iterator clone not supported
# ER_UNKNOWN_AXIS_TYPE
ER0168=Unknown axis traversal type\u003a {0}
# ER_AXIS_NOT_SUPPORTED
ER0169=Axis traverser not supported\u003a {0}
# ER_NO_DTMIDS_AVAIL
ER0170=No more DTM IDs are available
# ER_NOT_SUPPORTED
ER0171=Not supported\u003a {0}
# ER_NODE_NON_NULL
ER0172=Node must be non-null for getDTMHandleFromNode
# ER_COULD_NOT_RESOLVE_NODE
ER0173=Could not resolve the node to a handle
# ER_STARTPARSE_WHILE_PARSING
ER0174=startParse may not be called while parsing
# ER_STARTPARSE_NEEDS_SAXPARSER
ER0175=startParse needs a non-null SAXParser
# ER_COULD_NOT_INIT_PARSER
ER0176=could not initialize parser with
# ER_PROPERTY_VALUE_BOOLEAN
ER0177=Value for property {0} should be a Boolean instance
# ER_EXCEPTION_CREATING_POOL
ER0178=exception creating new instance for pool
# ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE
ER0179=Path contains invalid escape sequence
# ER_SCHEME_REQUIRED
ER0180=Scheme is required!
# ER_NO_SCHEME_IN_URI
ER0181=No scheme found in URI\u003a {0}
# ER_NO_SCHEME_INURI
ER0182=No scheme found in URI
# ER_PATH_INVALID_CHAR
ER0183=Path contains invalid character\u003a {0}
# ER_SCHEME_FROM_NULL_STRING
ER0184=Cannot set scheme from null string
# ER_SCHEME_NOT_CONFORMANT
ER0185=The scheme is not conformant.
# ER_HOST_ADDRESS_NOT_WELLFORMED
ER0186=Host is not a well formed address
# ER_PORT_WHEN_HOST_NULL
ER0187=Port cannot be set when host is null
# ER_INVALID_PORT
ER0188=Invalid port number
# ER_FRAG_FOR_GENERIC_URI
ER0189=Fragment can only be set for a generic URI
# ER_FRAG_WHEN_PATH_NULL
ER0190=Fragment cannot be set when path is null
# ER_FRAG_INVALID_CHAR
ER0191=Fragment contains invalid character
# ER_PARSER_IN_USE
ER0192=Parser is already in use
# ER_CANNOT_CHANGE_WHILE_PARSING
ER0193=Cannot change {0} {1} while parsing
# ER_SELF_CAUSATION_NOT_PERMITTED
ER0194=Self-causation not permitted
# ER_COULD_NOT_FIND_EXTERN_SCRIPT
ER0195=Could not get to external script at {0}
# ER_RESOURCE_COULD_NOT_FIND
ER0196=The resource [ {0} ] could not be found.\n {1}
# ER_OUTPUT_PROPERTY_NOT_RECOGNIZED
ER0197=Output property not recognized\u003a {0}
# ER_NO_USERINFO_IF_NO_HOST
ER0198=Userinfo may not be specified if host is not specified
# ER_NO_PORT_IF_NO_HOST
ER0199=Port may not be specified if host is not specified
# ER_NO_QUERY_STRING_IN_PATH
ER0200=Query string cannot be specified in path and query string
# ER_NO_FRAGMENT_STRING_IN_PATH
ER0201=Fragment cannot be specified in both the path and fragment
# ER_CANNOT_INIT_URI_EMPTY_PARMS
ER0202=Cannot initialize URI with empty parameters
# ER_FAILED_CREATING_ELEMLITRSLT
ER0203=Failed creating ElemLiteralResult instance
# ER_VALUE_SHOULD_BE_NUMBER
ER0204=Value for {0} should contain a parsable number
# ER_VALUE_SHOULD_EQUAL
ER0205= Value for {0} should equal yes or no
# ER_FAILED_CALLING_METHOD
ER0206= Failed calling {0} method
# ER_FAILED_CREATING_ELEMTMPL
ER0207=Failed creating ElemTemplateElement instance
# ER_CHARS_NOT_ALLOWED
ER0208=Characters are not allowed at this point in the document
# ER_ATTR_NOT_ALLOWED
ER0209=\"{0}\" attribute is not allowed on the {1} element!
# ER_METHOD_NOT_SUPPORTED
ER0210=Method not yet supported 
# ER_BAD_VALUE
ER0211={0} bad value {1} 
# ER_ATTRIB_VALUE_NOT_FOUND
ER0212={0} attribute value not found 
# ER_ATTRIB_VALUE_NOT_RECOGNIZED
ER0213={0} attribute value not recognized 
# ER_INCRSAXSRCFILTER_NOT_RESTARTABLE
ER0214=IncrementalSAXSource_Filter not currently restartable
# ER_XMLRDR_NOT_BEFORE_STARTPARSE
ER0215=XMLReader not before startParse request
# ER_NULL_URI_NAMESPACE
ER0216=Attempting to generate a namespace prefix with a null URI
# ER_NUMBER_TOO_BIG
ER0217=Attempting to format a number bigger than the largest Long integer

# ER_CANNOT_FIND_SAX1_DRIVER
ER0218=Cannot find SAX1 driver class {0}
# ER_SAX1_DRIVER_NOT_LOADED
ER0219=SAX1 driver class {0} found but cannot be loaded
# ER_SAX1_DRIVER_NOT_INSTANTIATED
ER0220=SAX1 driver class {0} loaded but cannot be instantiated
# ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER
ER0221=SAX1 driver class {0} does not implement org.xml.sax.Parser
# ER_PARSER_PROPERTY_NOT_SPECIFIED
ER0222=System property org.xml.sax.parser not specified
# ER_PARSER_ARG_CANNOT_BE_NULL
ER0223=Parser argument must not be null
# ER_FEATURE
ER0224=Feature\u003a {0}
# ER_PROPERTY
ER0225=Property\u003a {0}
# ER_NULL_ENTITY_RESOLVER
ER0226=Null entity resolver
# ER_NULL_DTD_HANDLER
ER0227=Null DTD handler

# ER_NO_DRIVER_NAME_SPECIFIED
ER0228=No Driver Name Specified!
# ER_NO_URL_SPECIFIED
ER0229=No URL Specified!
# ER_POOLSIZE_LESS_THAN_ONE
ER0230=Pool size is less than 1!
# ER_INVALID_DRIVER_NAME
ER0231=Invalid Driver Name Specified!
# ER_ERRORLISTENER (I don't think this one should be translated!)
ER0232=ErrorListener
# ER_ASSERT_NO_TEMPLATE_PARENT
ER0233=Programmer's error! expr has no ElemTemplateElement parent!
# ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR
ER0234=Programmer's assertion in RundundentExprEliminator: {0}
# ER_AXIS_TRAVERSER_NOT_SUPPORTED
ER0235=Axis traverser not supported: {0}
# ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER!
ER0236=ListingErrorHandler created with null PrintWriter!
# ER_NOT_ALLOWED_IN_POSITION
ER0237={0} is not allowed in this position in the stylesheet!
# ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION
ER0238=Non-whitespace text is not allowed in this position in the stylesheet!
# INVALID_TCHAR
ER0239=Illegal value: {1} used for CHAR attribute: {0}.  An attribute of type CHAR must be only 1 character!
# ER_SYSTEMID_UNKNOWN
ER0240=SystemId Unknown
# ER_LOCATION_UNKNOWN
ER0241=Location of error unknown

# Note to translators:  The following message is used if the value of
# an attribute in a stylesheet is invalid.  "QNAME" is the XML data-type of
# the attribute, and should not be translated.  The substitution text {1} is
# the attribute value and {0} is the attribute name.
# INVALID_QNAME 	
ER0242=Illegal value\u003a {1} used for QNAME attribute\u003a {0}

# Note to translators:  The following message is used if the value of
# an attribute in a stylesheet is invalid.  "ENUM" is the XML data-type of
# the attribute, and should not be translated.  The substitution text {1} is
# the attribute value, {0} is the attribute name, and {2} is a list of valid
# values.
# INVALID_ENUM
ER0243=Illegal value\u003a {1} used for ENUM attribute\u003a {0}.  Valid values are\u003a {2}.

# Note to translators:  The following message is used if the value of
# an attribute in a stylesheet is invalid.  "NMTOKEN" is the XML data-type
# of the attribute, and should not be translated.  The substitution text {1} is
# the attribute value and {0} is the attribute name.
# INVALID_NMTOKEN
ER0244=Illegal value\u003a {1} used for NMTOKEN attribute\u003a {0} 

# Note to translators:  The following message is used if the value of
# an attribute in a stylesheet is invalid.  "NCNAME" is the XML data-type
# of the attribute, and should not be translated.  The substitution text {1} is
# the attribute value and {0} is the attribute name.
# INVALID_NCNAME
ER0245=Illegal value\u003a {1} used for NCNAME attribute\u003a {0} 

# Note to translators:  The following message is used if the value of
# an attribute in a stylesheet is invalid.  "boolean" is the XSLT data-type
# of the attribute, and should not be translated.  The substitution text {1} is
# the attribute value and {0} is the attribute name.
# INVALID_BOOLEAN 
ER0246=Illegal value\u003a {1} used for boolean attribute\u003a {0} 

# Note to translators:  The following message is used if the value of
# an attribute in a stylesheet is invalid.  "number" is the XSLT data-type
# of the attribute, and should not be translated.  The substitution text {1} is
# the attribute value and {0} is the attribute name.
# INVALID_NUMBER 
ER0247=Illegal value\u003a {1} used for number attribute\u003a {0} 

# Note to translators:  A "match pattern" is a special form of XPath expression
# that is used for matching patterns.  The substitution text is the name of
# a function.  The message indicates that when this function is referenced in
# a match pattern, its argument must be a string literal (or constant.)
# ER_ARG_LITERAL - new error message for bugzilla #5202
ER0248=Argument to {0} in match pattern must be a literal.

# Note to translators:  The following message indicates that two definitions of
# a variable.  A "global variable" is a variable that is accessible everywher
# in the stylesheet.
# ER_DUPLICATE_GLOBAL_VAR - new error message for bugzilla #790
ER0249=Duplicate global variable declaration.

# Note to translators:  The following message indicates that two definitions of
# a variable were encountered.
# ER_DUPLICATE_VAR - new error message for bugzilla #790
ER0250=Duplicate variable declaration.

# Note to translators:  "xsl:template", "name" and "match" are XSLT keywords
# which must not be translated.
# ER_TEMPLATE_NAME_MATCH - new error message for bugzilla #789
ER0251=xsl\u003atemplate must have a name or match attribute (or both)

# Note to translators:  "exclude-result-prefixes" is an XSLT keyword which
# should not be translated.  The message indicates that a namespace prefix
# encountered as part of the value of the exclude-result-prefixes attribute
# was in error.
# ER_INVALID_PREFIX - new error message for bugzilla #788
ER0252=Prefix in exclude-result-prefixes is not valid\u003a {0}

# Note to translators:  An "attribute set" is a set of attributes that can be
# added to an element in the output document as a group.  The message indicates
# that there was a reference to an attribute set named {0} that was never
# defined.
# ER_NO_ATTRIB_SET - new error message for bugzilla #782
ER0253=attribute-set named {0} does not exist

# WG_FOUND_CURLYBRACE 
WR0001=Found '}' but no attribute template open!
# WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR 
WR0002=Warning\u003a count attribute does not match an ancestor in xsl\u003anumber! Target \u003d {0}
# WG_EXPR_ATTRIB_CHANGED_TO_SELECT 
WR0003=Old syntax\u003a The name of the 'expr' attribute has been changed to 'select'.
# WG_NO_LOCALE_IN_FORMATNUMBER 
WR0004=Xalan doesn't yet handle the locale name in the format-number function.
# WG_LOCALE_NOT_FOUND 
WR0005=Warning\u003a Could not find locale for xml\u003alang\u003d{0}
# WG_CANNOT_MAKE_URL_FROM 
WR0006=Can not make URL from\u003a {0}
# WG_CANNOT_LOAD_REQUESTED_DOC 
WR0007=Can not load requested doc\u003a {0}
# WG_CANNOT_FIND_COLLATOR 
WR0008=Could not find Collator for <sort xml\u003alang\u003d{0}
# WG_FUNCTIONS_SHOULD_USE_URL 
WR0009=Old syntax\u003a the functions instruction should use a url of {0}
# WG_ENCODING_NOT_SUPPORTED_USING_UTF8 
WR0010=encoding not supported\u003a {0}, using UTF-8
# WG_ENCODING_NOT_SUPPORTED_USING_JAVA 
WR0011=encoding not supported\u003a {0}, using Java {1}
# WG_SPECIFICITY_CONFLICTS 
WR0012=Specificity conflicts found\u003a {0} Last found in stylesheet will be used.
# WG_PARSING_AND_PREPARING 
WR0013=\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Parsing and preparing {0} \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d
# WG_ATTR_TEMPLATE 
WR0014=Attr Template, {0}
# WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE 
WR0015=Match conflict between xsl\u003astrip-space and xsl\u003apreserve-space
# WG_ATTRIB_NOT_HANDLED 
WR0016=Xalan does not yet handle the {0} attribute!
# WG_NO_DECIMALFORMAT_DECLARATION 
WR0017=No declaration found for decimal format\u003a {0}
# WG_OLD_XSLT_NS 
WR0018=Missing or incorrect XSLT Namespace. 
# WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED 
WR0019=Only one default xsl\u003adecimal-format declaration is allowed.
# WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE 
WR0020=xsl\u003adecimal-format names must be unique. Name \"{0}\" has been duplicated.
# WG_ILLEGAL_ATTRIBUTE 
WR0021={0} has an illegal attribute\u003a {1}
# WG_COULD_NOT_RESOLVE_PREFIX 
WR0022=Could not resolve namespace prefix\u003a {0}. The node will be ignored.
# WG_STYLESHEET_REQUIRES_VERSION_ATTRIB 
WR0023=xsl\u003astylesheet requires a 'version' attribute!
# WG_ILLEGAL_ATTRIBUTE_NAME 
WR0024=Illegal attribute name\u003a {0}
# WG_ILLEGAL_ATTRIBUTE_VALUE 
WR0025=Illegal value used for attribute {0}\u003a {1}
# WG_EMPTY_SECOND_ARG 
WR0026=Resulting nodeset from second argument of document function is empty. The first agument will be used.

# Note to translators:  "name" and "xsl:processing-instruction" are keywords
# and must not be translated.
# WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML
WR0027=The value of the 'name' attribute of xsl\u003aprocessing-instruction \
name must not be 'xml'

# Note to translators:  "name" and "xsl:processing-instruction" are keywords
# and must not be translated.  "NCName" is an XML data-type and must not be
# translated.
# WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME
WR0028=The value of the 'name' attribute of xsl\u003aprocessing-instruction \
must be a valid NCName\u003a {0}

# Note to translators:  This message is reported if the stylesheet that is
# being processed attempted to construct an XML document with an attribute in a
# place other than on an element.  The substitution text specifies the name of
# the attribute.
# WG_ILLEGAL_ATTRIBUTE_POSITION 
WR0029=Cannot add attribute {0} after child nodes or before an element is produced.  Attribute will be ignored.

# Note to translators:  The following message is used if the value of
# an attribute in a stylesheet is invalid.  "CHAR" is the XSLT data-type of
# the attribute, and should not be translated.  The substitution text {1} is
# invalid value, and {0} is the attribute name.
# INVALID_TCHAR
WR0239=Illegal value: {1} used for CHAR attribute\u003a  {0}.  An attribute of type CHAR must be only 1 character!

# Note to translators:  The following message is used if the value of
# an attribute in a stylesheet is invalid.  "QNAME" is the XML data-type of
# the attribute, and should not be translated.  The substitution text {1} is
# the attribute value and {0} is the attribute name.
# INVALID_QNAME	
WR0242=Illegal value\u003a {1} used for QNAME attribute\u003a {0}

# Note to translators:  The following message is used if the value of
# an attribute in a stylesheet is invalid.  "ENUM" is the XML data-type of
# the attribute, and should not be translated.  The substitution text {1} is
# the attribute value, {0} is the attribute name, and {2} is a list of valid
# values.
# INVALID_ENUM
WR0243=Illegal value\u003a {1} used for ENUM attribute\u003a {0}.  Valid values are\u003a {2}.

# Note to translators:  The following message is used if the value of
# an attribute in a stylesheet is invalid.  "NMTOKEN" is the XML data-type
# of the attribute, and should not be translated.  The substitution text {1} is
# the attribute value and {0} is the attribute name.
# INVALID_NMTOKEN
WR0244=Illegal value\u003a {1} used for NMTOKEN attribute\u003a {0} 

# Note to translators:  The following message is used if the value of
# an attribute in a stylesheet is invalid.  "NCNAME" is the XML data-type
# of the attribute, and should not be translated.  The substitution text {1} is
# the attribute value and {0} is the attribute name.
# INVALID_NCNAME
WR0245=Illegal value\u003a {1} used for NCNAME attribute\u003a {0} 

# Note to translators:  The following message is used if the value of
# an attribute in a stylesheet is invalid.  "boolean" is the XSLT data-type
# of the attribute, and should not be translated.  The substitution text {1} is
# the attribute value and {0} is the attribute name.
# INVALID_BOOLEAN
WR0246=Illegal value\u003a {1} used for boolean attribute\u003a {0} 

# Note to translators:  The following message is used if the value of
# an attribute in a stylesheet is invalid.  "number" is the XSLT data-type
# of the attribute, and should not be translated.  The substitution text {1} is
# the attribute value and {0} is the attribute name.
# INVALID_NUMBER
WR0247=Illegal value\u003a {1} used for number attribute\u003a {0} 

ui_language=en
help_language=en
language=en
BAD_CODE=Parameter to createMessage was out of bounds
FORMAT_FAILED=Exception thrown during messageFormat call
version=>>>>>>> Xalan Version 
version2=<<<<<<<
yes=yes
line=Line \u0023
column=Column \u0023
xsldone=XSLProcessor\u003a done

# Note to translators:  The following messages provide usage information
# for the Xalan Process command line.  "Process" is the name of a Java class,
# and should not be translated.
xslProc_option=Xalan-J command line Process class options\u003a
xslProc_invalid_xsltc_option=The option {0} is not supported in XSLTC mode.
xslProc_invalid_xalan_option=The option {0} can only be used with -XSLTC.
xslProc_no_input=Error: No stylesheet or input xml is specified. Run this command without any option for usage instructions.
xslProc_common_options=-Common Options-
xslProc_xalan_options=-Options for Xalan-
xslProc_xsltc_options=-Options for XSLTC-
xslProc_return_to_continue=(press <return> to continue)

# Note to translators: The option name and the parameter name do not need to be
# translated. Only translate the messages in parentheses.
# Do not translate the keywords: XSLTC, SAX, DOM and DTM.
optionXSLTC=    [-XSLTC (use XSLTC for transformation)]
optionIN=    [-IN inputXMLURL]
optionXSL=   [-XSL XSLTransformationURL]
optionOUT=   [-OUT outputFileName]
optionLXCIN=   [-LXCIN compiledStylesheetFileNameIn]
optionLXCOUT=   [-LXCOUT compiledStylesheetFileNameOutOut]
optionPARSER=   [-PARSER fully qualified class name of parser liaison]
optionE=   [-E (Do not expand entity refs)]
optionV=   [-V (Version info)]
optionQC=   [-QC (Quiet Pattern Conflicts Warnings)]
optionQ=   [-Q  (Quiet Mode)]
optionLF=   [-LF (Use linefeeds only on output {default is CR/LF})]
optionCR=   [-CR (Use carriage returns only on output {default is CR/LF})]
optionESCAPE=   [-ESCAPE (Which characters to escape {default is <>&\"\'\\r\\n}]
optionINDENT=   [-INDENT (Control how many spaces to indent {default is 0})]
optionTT=   [-TT (Trace the templates as they are being called.)]
optionTG=   [-TG (Trace each generation event.)]
optionTS=   [-TS (Trace each selection event.)]
optionTTC=   [-TTC (Trace the template children as they are being processed.)]
optionTCLASS=   [-TCLASS (TraceListener class for trace extensions.)]
optionVALIDATE=   [-VALIDATE (Set whether validation occurs.  Validation is off by default.)]
optionEDUMP=   [-EDUMP {optional filename} (Do stackdump on error.)]
optionXML=   [-XML (Use XML formatter and add XML header.)]
optionTEXT=   [-TEXT (Use simple Text formatter.)]
optionHTML=   [-HTML (Use HTML formatter.)]
optionPARAM=   [-PARAM name expression (Set a stylesheet parameter)]
optionMEDIA=   [-MEDIA mediaType (use media attribute to find stylesheet associated with a document.)]");
optionFLAVOR=   [-FLAVOR flavorName (Explicitly use s2s=SAX or d2d=DOM to do transform.)]");  // Added by sboag/scurcuru; experimental
optionDIAG=   [-DIAG (Print overall milliseconds transform took.)]");
optionINCREMENTAL=   [-INCREMENTAL (request incremental DTM construction by setting http://xml.apache.org/xalan/features/incremental true.)]");
optionNOOPTIMIMIZE=   [-NOOPTIMIMIZE (request no stylesheet optimization proccessing by setting http://xml.apache.org/xalan/features/optimize false.)]");
optionRL=   [-RL recursionlimit (assert numeric limit on stylesheet recursion depth.)]");
optionXO=   [-XO [transletName] (assign the name to the generated translet)]
optionXD=   [-XD destinationDirectory (specify a destination directory for translet)]
optionXJ=   [-XJ jarfile (packages translet classes into a jar file of name <jarfile>)]
optionXP=   [-XP package (specifies a package name prefix for all generated translet classes)]

# Note to translators:  The following message describes usage of a particular
# command-line option that is used to enable the "template inlining"
# optimization.  The optimization involves making a copy of the code generated
# for a template in another template that refers to it.
optionXN=   [-XN (enables template inlining)]
optionXX=   [-XX (turns on additional debugging message output)]
optionXT=   [-XT (use translet to transform if possible)]

noParsermsg1=XSL Process was not successful.
noParsermsg2=** Could not find parser **
noParsermsg3=Please check your classpath.
noParsermsg4=If you don't have IBM's XML Parser for Java, you can download it from
noParsermsg5=IBM's AlphaWorks\u003a http\u003a//www.alphaworks.ibm.com/formula/xml
optionURIRESOLVER=   [-URIRESOLVER full class name (URIResolver to be used to resolve URIs)]
optionENTITYRESOLVER=   [-ENTITYRESOLVER full class name (EntityResolver to be used to resolve entities)]
optionCONTENTHANDLER=   [-CONTENTHANDLER full class name (ContentHandler to be used to serialize output)]
optionLINENUMBERS=   [-L use line numbers for source document]
diagTiming= --------- Transform of {0} via {1} took {2} ms
recursionTooDeep=Template nesting too deep. nesting = {0}, template {1} {2}
nameIs=name is 
matchPatternIs=match pattern is 
