# 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.

#  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.
#
#  8) The context node is the node in the document with respect to which an
#     XPath expression is being evaluated.
#
#  9) An iterator is an object that traverses nodes in the tree, one at a time.
#
#  10) NCName is an XML term used to describe a name that does not contain a
#     colon (a "no-colon name").
#
#  11) QName is an XML term meaning "qualified name".
#

# 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}

# Note to translators:  A relative location path is a form of XPath expression.
# The message indicates that such an expression was expected following the
# characters '/' or '//', but was not found.
# ER_EXPECTED_REL_LOC_PATH
ER0095=A relative location path was expected following the '/' or '//' token.

# Note to translators:  A location path is a form of XPath expression.
# The message indicates that syntactically such an expression was expected, but
# the characters specified by the substitution text were encountered instead.
# ER_EXPECTED_LOC_PATH
ER0096=A location path was expected, but the following token was encountered\u003a  {0}

# Note to translators:  A location step is part of an XPath expression.
# The message indicates that syntactically such an expression was expected
# following the specified characters.
# ER_EXPECTED_LOC_STEP
ER0097=A location step was expected following the '/' or '//' token.
# ER_EXPECTED_NODE_TEST

# Note to translators:  A node test is part of an XPath expression that is
# used to test for particular kinds of nodes.  In this case, a node test that
# consists of an NCName followed by a colon and an asterisk or that consists
# of a QName was expected, but was not found.
ER0098=A node test that matches either NCName:* or QName was expected.

# Note to translators:  A step pattern is part of an XPath expression.
# The message indicates that syntactically such an expression was expected,
# but the specified character was found in the expression instead.
# ER_EXPECTED_STEP_PATTERN
ER0099=A step pattern was expected, but '/' was encountered.

# Note to translators:  A relative path pattern is part of an XPath expression.
# The message indicates that syntactically such an expression was expected,
# but was not found.
# ER_EXPECTED_REL_PATH_PATTERN
ER0100=A relative path pattern was expected.

# Note to translators:  A QNAME has the syntactic form [NCName:]NCName
# The localname is the portion after the optional colon; the message indicates
# that there is a problem with that part of the QNAME.
# ER_ARG_LOCALNAME_INVALID
ER0101= Localname in QNAME should be a valid NCName   

# Note to translators:  A QNAME has the syntactic form [NCName:]NCName
# The prefix is the portion before the optional colon; the message indicates
# that there is a problem with that part of the QNAME.
# ER_ARG_PREFIX_INVALID
ER0102=Prefix in QNAME should be a valid NCName 

# Note to translators:  The substitution text is the name of a data type.  The
# message indicates that a value of a particular type could not be converted
# to a value of type string.
# ER_CANT_CONVERT_TO_BOOLEAN
ER0103=Cannot convert {0} to a boolean.

# Note to translators: Do not translate ANY_UNORDERED_NODE_TYPE and FIRST_ORDERED_NODE_TYPE.
# ER_CANT_CONVERT_TO_SINGLENODE.
ER0104=Cannot convert {0} to a single node. This getter applies to types ANY_UNORDERED_NODE_TYPE and FIRST_ORDERED_NODE_TYPE.   

# Note to translators: Do not translate UNORDERED_NODE_SNAPSHOT_TYPE and ORDERED_NODE_SNAPSHOT_TYPE.
# ER_CANT_GET_SNAPSHOT_LENGTH
ER0105=Cannot get snapshot length on type: {0}. This getter applies to types UNORDERED_NODE_SNAPSHOT_TYPE and ORDERED_NODE_SNAPSHOT_TYPE.

# ER_NON_ITERATOR_TYPE
ER0106=Cannot iterate over non-iterator type: {0}

# Note to translators:  This message indicates that the document being operated
# upon changed, so the iterator object that was being used to traverse the
# document has now become invalid.
# ER_DOC_MUTATED
ER0107=Document mutated since result was returned. Iterator is invalid.

# ER_INVALID_XPATH_TYPE
ER0108=Invalid XPath type argument: {0}

# ER_EMPTY_XPATH_RESULT
ER0109=Empty XPath result object

# ER_INCOMPATIBLE_TYPES
ER0110=The returned type: {0} cannot be coerced into the specified type: {1}

# ER_NULL_RESOLVER
ER0111=Unable to resolve prefix with null prefix resolver.

# Note to translators:  The substitution text is the name of a data type.  The
# message indicates that a value of a particular type could not be converted
# to a value of type string.
# ER_CANT_CONVERT_TO_STRING
ER0112=Cannot convert {0} to a string.

# ER_NON_SNAPSHOT_TYPE
# Note to translators: Do not translate snapshotItem,
# UNORDERED_NODE_SNAPSHOT_TYPE and ORDERED_NODE_SNAPSHOT_TYPE.
ER0113=Cannot call snapshotItem on type: {0}. This method applies to types UNORDERED_NODE_SNAPSHOT_TYPE and ORDERED_NODE_SNAPSHOT_TYPE.

# Note to translators:  XPathEvaluator is a Java interface name.  An
# XPathEvaluator is created with respect to a particular XML document, and in
# this case the expression represented by this object was being evaluated with
# respect to a context node from a different document.
# ER_WRONG_DOCUMENT
ER0114=Context node does not belong to the document that is bound to this XPathEvaluator.

# Note to translators:  The XPath expression cannot be evaluated with respect
# to this type of node.
# ER_WRONG_NODETYPE
ER0115=The context node type is not supported.

# ER_XPATH_ERROR
ER0116=Unknown error in XPath

# 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
