# -----------------------------------------------------------------------------
#
#   Licensed to the Apache Software Foundation (ASF) under one or more
#   contributor license agreements.  See the NOTICE file distributed with
#   this work for additional information regarding copyright ownership.
#   The ASF licenses this file to You under the Apache License, Version 2.0
#   (the "License"); you may not use this file except in compliance with
#   the License.  You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.
#
# The error messages for DOM.
#
# Author: Stephane Hillion
# $Id$
# -----------------------------------------------------------------------------

add.ancestor = \
Cannot add the given node as a child of the current node (type: {0}, \
name: {1}) since it is an ancestor of (or the same as) this one.

import.document = \
A Document node cannot be imported.

import.document.type = \
A DocumentType node cannot be imported.

add.self = \
Cannot add a node as a child of itself (name: {1}).

attribute.missing = \
The "{0}" attribute was not found.

attribute.missing.ns = \
The \{{0}, {1}\} attribute was not found.

attribute.value = \
The given attribute value "{0}" is invalid.

cdata.section.split = \
A CDATA section was split.

child.missing = \
The child node (type: {0}, name: {1}) is missing.

child.type = \
The current node (type: {0}, name: {1}) do not allow children of the given \
type (type: {2}, name: {3}).

children.not.allowed = \
The current node (type: {0}, name: {1}) cannot have children.

cloning.error = \
An error occured while cloning a node (type: {0}, name: {1}). \
The original error message was: "{2}".

css.parser.class = \
The CSS parser class {0} cannot be found.

css.parser.creation = \
The CSS parser class '{0}' cannot be instantiated.

css.parser.access = \
The CSS parser class '{0}' cannot be accessed.

document.child.already.exists = \
The node (type: {0}, name: {1}) cannot be inserted, since the document \
node already has a node of type {0}.

detached.iterator = \
The iterator was detached from the document.

domconfig.param.not.found = \
The requested DOMConfiguration parameter "{0}" was not found.

domconfig.param.type = \
Invalid type when setting DOMConfiguration parameter "{0}".

domconfig.param.value = \
Unsupported value when setting DOMConfiguration parameter "{0}".

import.node = \
Cannot import node.

import.document = \
A Document node cannot be imported.

import.document.type = \
A DocumentType node cannot be imported.

invalid.element = \
The current document is unable to create an element of the requested type \
(namespace: {0}, name: {1}).

invalid.qname = \
The given name ("{0}") is an invalid QName.

inuse.attribute = \
The given attribute "{0}" is already in use.

unspecified.event = \
Event type was not specified before dispatch.

namespace = \
The invoked method requires the current node (type: {0}, name: {1}) to be \
placed in a non-anonymous namespace.

namespace.uri = \
The namespace URI "{2}" is invalid. Current node type: {0}, name: {1}.

need.parent = \
A text node needs a parent node in order to be split.

negative.count = \
The given count ({0}) is negative.

node.from.wrong.document = \
The given node (type: {0}, name: {1}) was not created by the current document.

node.type = \
An attempt as been made to invoke an invalid method for the current node \
(type: {0}, name: {1}).

null.root = \
Iterators do not support null root nodes.

null.current.node = \
An attempt was made to set the current node of a tree walker to null.

offset = \
The given offset ({0}) is out of range.

parent.child.mismatch = \
The node (type: {0}, name: {1}) must be a child of the 'parent' node 
(type: {2}, name: {3}) but it is not.

parent.not.allowed = \
The current node (type: {0}, name: {1}) cannot have parent.

prefix = \
The prefix "{2}" is invalid. Current node type: {0}, name: {1}.

qname = \
The QName "{2}" is invalid. Current node type: {0}, name: {1}.

readonly.node = \
The current node (type: {0}, name: {1}) is read-only.

rename.document.element = \
Cannot rename the document element.

rename.node = \
The current node (type: {0}, name: {1}) cannot be renamed.

sibling.not.allowed = \
The current node (type: {0}, name: {1}) cannot have siblings.

unsupported.event = \
The event object was not created with DocumentEvent.createEvent() or does not \
support the CustomEvent interface.

wf.invalid.character = \
Invalid character found in node content (type: {0}, name: {1}): "{2}".

wf.invalid.name = \
Invalid character found in node name {0}.

xml.version = \
XML version {0} is not supported.

xml.name = \
The given name ("{0}") is an invalid XML name.

xpath.invalid.expression = \
Invalid XPath expression ({0}): "{1}".

xpath.invalid.context.node = \
Invalid context node (type: {0}, name: {1}) for XPath evaluation.

xpath.invalid.result.type = \
Invalid XPath result type {0}.

xpath.cannot.convert.result = \
Cannot convert result of XPath evaluation to type {0}: "{1}".

xpath.error = \
Error evaluationg XPath expression ({0}): "{1}".
