#
# Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

# This file stores localized messages for the Xerces
# DOM implementation.
#
# The messages are arranged in key and value tuples in a ListResourceBundle.
#
# @version $Id: DOMMessages_de.properties /st_wptg_1.8.0.0.0jdk/2 2013/05/29 01:16:51 gmolloy Exp $

        BadMessageKey = Die zum Meldungsschl\u00FCssel geh\u00F6rige Fehlermeldung kann nicht gefunden werden.
        FormatFailed = Beim Formatieren der folgenden Meldung ist ein interner Fehler aufgetreten:\n  

# DOM Core

# exception codes
DOMSTRING_SIZE_ERR = Der angegebene Textbereich passt nicht in eine DOMString. 
HIERARCHY_REQUEST_ERR  = Es wurde versucht, einen Knoten an einer Stelle einzuf\u00FCgen, an der dies nicht zul\u00E4ssig ist. 
INDEX_SIZE_ERR = Index oder Gr\u00F6\u00DFe ist negativ oder gr\u00F6\u00DFer als der zul\u00E4ssige Wert.
INUSE_ATTRIBUTE_ERR = Es wurde versucht, ein Attribut hinzuzuf\u00FCgen, das bereits an einer anderen Stelle verwendet wird.
INVALID_ACCESS_ERR  = Ein Parameter oder Vorgang wird nicht vom zugrunde liegenden Objekt unterst\u00FCtzt. 
INVALID_CHARACTER_ERR = Ung\u00FCltiges XML-Zeichen angegeben. 
INVALID_MODIFICATION_ERR =  Es wurde versucht, den Typ des zugrunde liegenden Objekts zu \u00E4ndern. 
INVALID_STATE_ERR = Es wurde versucht, ein Objekt zu \u00E4ndern, das nicht verwendet werden kann. 
NAMESPACE_ERR = Es wurde versucht, ein Objekt auf eine Weise zu erstellen oder zu \u00E4ndern, die falsch in Bezug auf Namespaces ist.
NOT_FOUND_ERR = Es wurde versucht, einen Knoten in einem Kontext zu referenzieren, in dem er nicht vorhanden ist.
NOT_SUPPORTED_ERR = Der angeforderte Typ des Objekts oder Vorgangs wird nicht von der Implementierung unterst\u00FCtzt. 
NO_DATA_ALLOWED_ERR = Daten wurden f\u00FCr einen Knoten angegeben, der keine Daten unterst\u00FCtzt.
NO_MODIFICATION_ALLOWED_ERR = Es wurde versucht, ein Objekt zu \u00E4ndern, bei dem \u00C4nderungen nicht zul\u00E4ssig sind.
SYNTAX_ERR = Ung\u00FCltige Zeichenfolge angegeben. 
VALIDATION_ERR = Aufruf einer Methode wie insertBefore oder removeChild w\u00FCrde die Dokumentgrammatik des Knotens ung\u00FCltig machen.
WRONG_DOCUMENT_ERR = Ein Knoten wird in einem anderen Dokument verwendet als dem, von dem er erstellt wurde.
TYPE_MISMATCH_ERR = Der Wertetyp f\u00FCr diesen Parameternamen ist nicht mit dem erwarteten Wertetyp kompatibel. 
 
#error messages or exceptions
FEATURE_NOT_SUPPORTED = Parameter {0} wird erkannt, aber der angeforderte Wert kann nicht festgelegt werden.
FEATURE_NOT_FOUND = Parameter {0} ist unbekannt.
STRING_TOO_LONG   = Die resultierende Zeichenfolge ist zu lang, um in eine DOMString zupassen: "{0}".

#DOM Level 3 DOMError codes
wf-invalid-character =  Text {0} des {1}-Knotens enth\u00E4lt ung\u00FCltige XML-Zeichen.
wf-invalid-character-in-node-name = {0}-Knoten mit dem Namen {1} enth\u00E4lt ung\u00FCltige XML-Zeichen.
cdata-sections-splitted =  CDATA-Abschnitt mit dem CDATA-Abschnittsabschlusszeichen "]]>"
doctype-not-allowed = DOCTYPE-Deklaration ist nicht zul\u00E4ssig.
unsupported-encoding = Codierung {0} wird nicht unterst\u00FCtzt.

#Error codes used in DOM Normalizer
InvalidXMLCharInDOM = Ung\u00FCltiges XML-Zeichen (Unicode: 0x{0}) wurde bei der Normalisierung im DOM gefunden.
UndeclaredEntRefInAttrValue = Attribut "{0}" Wert "{1}" referenzierte eine nicht deklarierte Entit\u00E4t.
NullLocalElementName = Lokaler Nullname wurde bei der Namespace-Normalisierung von Element {0} gefunden.
NullLocalAttrName = Lokaler Nullname wurde bei der Namespace-Normalisierung von Attribut {0} gefunden.

#Error codes used in DOMParser
InvalidDocumentClassName = Der Klassenname der Dokument-Factory "{0}", mit dem der DOM-Baum erstellt wurde, hat nicht den Typ org.w3c.dom.Document.
MissingDocumentClassName = Der Klassenname der Dokument-Factory "{0}", mit dem der DOM-Baum erstellt wurde, konnte nicht gefunden werden.
CannotCreateDocumentClass = Die Klasse mit dem Namen "{0}" konnte nicht als org.w3c.dom.Document erstellt werden.

# Error codes used by JAXP DocumentBuilder
jaxp-order-not-supported = Eigenschaft "{0}" muss vor der Eigenschaft "{1}" festgelegt werden.
jaxp-null-input-source = Angegebene Quelle darf nicht null sein.

#Ranges
BAD_BOUNDARYPOINTS_ERR = Grenzwerte eines Bereichs entsprechen nicht den speziellen Anforderungen.
INVALID_NODE_TYPE_ERR = Container eines Grenzwertes eines Bereichs wird entweder auf einen Knoten mit einem ung\u00FCltigen Typ oder auf einen Knoten mit einem Vorg\u00E4nge eines ung\u00FCltigen Typs gesetzt.


#Events
UNSPECIFIED_EVENT_TYPE_ERR = Der Ereignistyp wurde nicht durch Initialisieren des Ereignisses vor dem Aufruf der Methode angegeben. 


jaxp-schema-support=setSchema-Methode und schemaLanguage-Eigenschaft werden verwendet

jaxp_feature_not_supported=Feature "{0}" wird nicht unterst\u00FCtzt.
