# This file contains error and warning messages related to XPath 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.

# ER_ROR0000
ER0000={0}
# ER_CURRENT_NOT_ALLOWED_IN_MATCH
ER0001=The current() function is not allowed in a match pattern!
# ER_CURRENT_TAKES_NO_ARGS
ER0002=The current() function does not accept arguments!
# ER_DOCUMENT_REPLACED
ER0003=document() function implementation has been replaced by org.apache.xalan.xslt.FuncDocument!
# ER_CONTEXT_HAS_NO_OWNERDOC
ER0004=context does not have an owner document!
# ER_LOCALNAME_HAS_TOO_MANY_ARGS
ER0005=local-name() has too many arguments.
# ER_NAMESPACEURI_HAS_TOO_MANY_ARGS
ER0006=namespace-uri() has too many arguments.
# ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS
ER0007=normalize-space() has too many arguments.
# ER_NUMBER_HAS_TOO_MANY_ARGS
ER0008=number() has too many arguments.
# ER_NAME_HAS_TOO_MANY_ARGS
ER0009=name() has too many arguments.
# ER_STRING_HAS_TOO_MANY_ARGS
ER0010=string() has too many arguments.
# ER_STRINGLENGTH_HAS_TOO_MANY_ARGS
ER0011=string-length() has too many arguments.
# ER_TRANSLATE_TAKES_3_ARGS
ER0012=The translate() function takes three arguments!
# ER_UNPARSEDENTITYURI_TAKES_1_ARG
ER0013=The unparsed-entity-uri function should take one argument!
# ER_NAMESPACEAXIS_NOT_IMPLEMENTED
ER0014=namespace axis not implemented yet!
# ER_UNKNOWN_AXIS
ER0015=unknown axis\u003a {0}
# ER_UNKNOWN_MATCH_OPERATION
ER0016=unknown match operation!
# ER_INCORRECT_ARG_LENGTH
ER0017=Arg length of processing-instruction() node test is incorrect!
# ER_CANT_CONVERT_TO_NUMBER
ER0018=Can not convert {0} to a number
# ER_CANT_CONVERT_TO_NODELIST
ER0019=Can not convert {0} to a NodeList!
# ER_CANT_CONVERT_TO_MUTABLENODELIST
ER0020=Can not convert {0} to a NodeSetDTM!
# ER_CANT_CONVERT_TO_TYPE
ER0021=Can not convert {0} to a type\u0023{1}
# ER_EXPECTED_MATCH_PATTERN
ER0022=Expected match pattern in getMatchScore!
# ER_COULDNOT_GET_VAR_NAMED
ER0023=Could not get variable named {0}
# ER_UNKNOWN_OPCODE
ER0024=ERROR! Unknown op code\u003a {0}
# ER_EXTRA_ILLEGAL_TOKENS
ER0025=Extra illegal tokens\u003a {0}
# ER_EXPECTED_DOUBLE_QUOTE
ER0026=misquoted literal... expected double quote!
# ER_EXPECTED_SINGLE_QUOTE
ER0027=misquoted literal... expected single quote!
# ER_EMPTY_EXPRESSION
ER0028=Empty expression!
# ER_EXPECTED_BUT_FOUND
ER0029=Expected {0}, but found\u003a {1}
# ER_INCORRECT_PROGRAMMER_ASSERTION
ER0030=Programmer assertion is incorrect! - {0}
# ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL
ER0031=boolean(...) argument is no longer optional with 19990709 XPath draft.
# ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG
ER0032=Found ',' but no preceding argument!
# ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG
ER0033=Found ',' but no following argument!
# ER_PREDICATE_ILLEGAL_SYNTAX
ER0034='..[predicate]' or '.[predicate]' is illegal syntax.  Use 'self\u003a\u003anode()[predicate]' instead.
# ER_ILLEGAL_AXIS_NAME
ER0035=illegal axis name\u003a {0}
# ER_UNKNOWN_NODETYPE
ER0036=Unknown nodetype\u003a {0}
# ER_PATTERN_LITERAL_NEEDS_BE_QUOTED
ER0037=Pattern literal ({0}) needs to be quoted!
# ER_COULDNOT_BE_FORMATTED_TO_NUMBER
ER0038={0} could not be formatted to a number!
# ER_COULDNOT_CREATE_XMLPROCESSORLIAISON
ER0039=Could not create XML TransformerFactory Liaison\u003a {0}
# ER_DIDNOT_FIND_XPATH_SELECT_EXP
ER0040=Error! Did not find xpath select expression (-select).
# ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH
ER0041=ERROR! Could not find ENDOP after OP_LOCATIONPATH
# ER_ERROR_OCCURED
ER0042=Error occured!
# ER_ILLEGAL_VARIABLE_REFERENCE
ER0043=VariableReference given for variable out of context or without definition!  Name \u003d {0}
# ER_AXES_NOT_ALLOWED
ER0044=Only child\u003a\u003a and attribute\u003a\u003a axes are allowed in match patterns!  Offending axes \u003d {0}
# ER_KEY_HAS_TOO_MANY_ARGS
ER0045=key() has an incorrect number of arguments.
# ER_COUNT_TAKES_1_ARG
ER0046=The count function should take one argument!
# ER_COULDNOT_FIND_FUNCTION
ER0047=Could not find function\u003a {0}
# ER_UNSUPPORTED_ENCODING
ER0048=Unsupported encoding\u003a {0}
# ER_PROBLEM_IN_DTM_NEXTSIBLING
ER0049=Problem occured in DTM in getNextSibling... trying to recover
# ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL
ER0050=Programmer error\u003a EmptyNodeList can not be written to.
# ER_SETDOMFACTORY_NOT_SUPPORTED
ER0051=setDOMFactory is not supported by XPathContext!
# ER_PREFIX_MUST_RESOLVE
ER0052=Prefix must resolve to a namespace\u003a {0}
# ER_PARSE_NOT_SUPPORTED
ER0053=parse (InputSource source) not supported in XPathContext! Can not open {0}
# ER_CREATEDOCUMENT_NOT_SUPPORTED
ER0054=createDocument() not supported in XPathContext!
# ER_CHILD_HAS_NO_OWNER_DOCUMENT
ER0055=Attribute child does not have an owner document!
# ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT
ER0056=Attribute child does not have an owner document element!
# ER_SAX_API_NOT_HANDLED
ER0057=SAX API characters(char ch[]... not handled by the DTM!
# ER_IGNORABLE_WHITESPACE_NOT_HANDLED
ER0058=ignorableWhitespace(char ch[]... not handled by the DTM!
# ER_DTM_CANNOT_HANDLE_NODES
ER0059=DTMLiaison can not handle nodes of type {0}
# ER_XERCES_CANNOT_HANDLE_NODES
ER0060=DOM2Helper can not handle nodes of type {0}
# ER_XERCES_PARSE_ERROR_DETAILS
ER0061=DOM2Helper.parse error\u003a SystemID - {0} line - {1}
# ER_XERCES_PARSE_ERROR
ER0062=DOM2Helper.parse error
# ER_CANT_OUTPUT_TEXT_BEFORE_DOC
ER0063=Warning\u003a can't output text before document element!  Ignoring...
# ER_CANT_HAVE_MORE_THAN_ONE_ROOT
ER0064=Can't have more than one root on a DOM!
# ER_INVALID_UTF16_SURROGATE
ER0065=Invalid UTF-16 surrogate detected\u003a {0} ?
# ER_OIERROR
ER0066=IO error
# ER_CANNOT_CREATE_URL
ER0067=Cannot create url for\u003a {0}
# ER_XPATH_READOBJECT
ER0068=In XPath.readObject\u003a {0}
# ER_FUNCTION_TOKEN_NOT_FOUND
ER0069=function token not found.
# ER_ARG_LOCALNAME_NULL
ER0070=Argument 'localName' is null
# ER_CANNOT_DEAL_XPATH_TYPE
ER0071=Can not deal with XPath type\u003a {0}
# ER_NODESET_NOT_MUTABLE
ER0072=This NodeSet is not mutable
# ER_NODESETDTM_NOT_MUTABLE
ER0073=This NodeSetDTM is not mutable
# ER_VAR_NOT_RESOLVABLE
ER0074=Variable not resolvable\u003a {0}
# ER_NULL_ERROR_HANDLER
ER0075=Null error handler
# ER_PROG_ASSERT_UNKNOWN_OPCODE
ER0076=Programmer's assertion\u003a unknown opcode\u003a {0}
# ER_ZERO_OR_ONE
ER0077=0 or 1
# ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER
ER0078=rtf() not supported by XRTreeFragSelectWrapper
# ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER
ER0079=asNodeIterator() not supported by XRTreeFragSelectWrapper
# ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS
ER0080=fsb() not supported for XStringForChars
# ER_COULD_NOT_FIND_VAR
ER0081=Could not find variable with the name of {0}
# ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING
ER0082=XStringForChars can not take a string for an argument
# ER_FASTSTRINGBUFFER_CANNOT_BE_NULL
ER0083=The FastStringBuffer argument can not be null
# ER_TWO_OR_THREE
ER0084=2 or 3
# ER_VARIABLE_ACCESSED_BEFORE_BIND
ER0085=Variable accessed before it is bound!
# ER_FSB_CANNOT_TAKE_STRING 
ER0086=XStringForFSB can not take a string for an argument!
# ER_SETTING_WALKER_ROOT_T)_NULL 
ER0087=\n !!!! Error! Setting the root of a walker to null!!!
# ER_NODESETDTM_CANNOT_ITERATE
ER0088=This NodeSetDTM can not iterate to a previous node!
# ER_NODESET_CANNOT_ITERATE
ER0089=This NodeSet can not iterate to a previous node!
# ER_NODESETDTM_CANNOT_INDEX
ER0090=This NodeSetDTM can not do indexing or counting functions!
# ER_NODESET_CANNOT_INDEX
ER0091=This NodeSet can not do indexing or counting functions!
# ER_CANNOT_CALL_SETSHOULDCACHENODE
ER0092=Can not call setShouldCacheNodes after nextNode has been called!
# ER_ONLY_ALLOWS
ER0093={0} only allows {1} arguments
# ER_UNKNOWN_STEP
ER0094=Programmer's assertion in getNextStepPos: unknown stepType: {0}
# ER_EXPECTED_REL_LOC_PATH
ER0095=A relative location path was expected following the '/' or '//' token.
# ER_EXPECTED_LOC_PATH
ER0096=A location path was expected, but the following token was encountered\u003a  {0}
# ER_EXPECTED_LOC_STEP
ER0097=A location step was expected following the '/' or '//' token.
# ER_EXPECTED_NODE_TEST
ER0098=A node test that matches either NCName:* or QName was expected.
# ER_EXPECTED_STEP_PATTERN
ER0099=A step pattern was expected, but '/' was encountered.
# ER_EXPECTED_REL_PATH_PATTERN
ER0100=A relative path pattern was expected.



# WG_LOCALE_NAME_NOT_HANDLED 
WR0001=locale name in the format-number function not yet handled!
# WG_PROPERTY_NOT_SUPPORTED 
WR0002=XSL Property not supported\u003a {0}
# WG_DONT_DO_ANYTHING_WITH_NS 
WR0003=Do not currently do anything with namespace {0} in property\u003a {1}
# WG_SECURITY_EXCEPTION 
WR0004=SecurityException when trying to access XSL system property\u003a {0}
# WG_QUO_NO_LONGER_DEFINED 
WR0005=Old syntax\u003a quo(...) is no longer defined in XPath.
# WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST 
WR0006=XPath needs a derived object to implement nodeTest!
# WG_FUNCTION_TOKEN_NOT_FOUND 
WR0007=function token not found.
# WG_COULDNOT_FIND_FUNCTION 
WR0008=Could not find function\u003a {0}
# WG_CANNOT_MAKE_URL_FROM 
WR0009=Can not make URL from\u003a {0}
# WG_EXPAND_ENTITIES_NOT_SUPPORTED 
WR0010=-E option not supported for DTM parser
# WG_ILLEGAL_VARIABLE_REFERENCE 
WR0011=VariableReference given for variable out of context or without definition!  Name \u003d {0}
# WG_UNSUPPORTED_ENCODING
WR0012=Unsupported encoding\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
xpath_option=xpath options\u003a 
optionIN=   [-in inputXMLURL]
optionSelect=   [-select xpath expression]
optionMatch=   [-match match pattern (for match diagnostics)]
optionAnyExpr=Or just an xpath expression will do a diagnostic dump
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
gtone=>1
zero=0
one=1
two=2
three=3