#
# 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 JAXP Validation API implementation.
#
# The messages are arranged in key and value tuples in a ListResourceBundle.
#
# @version $Id: JAXPValidationMessages_de.properties /st_wptg_1.8.0.0.0jdk/4 2013/11/10 07:44:26 gmolloy Exp $

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

# SchemaFactory error messages
SchemaLanguageNull = Angegebene Schemasprache darf nicht null sein.
SchemaLanguageLengthZero = Angegebene Schemasprache darf nicht null Zeichen lang sein.
SchemaSourceArrayNull = Quellarrayparameter darf nicht null sein.
SchemaSourceArrayMemberNull = Quellarrayparameter darf keine Nullelemente enthalten.
SchemaFactorySourceUnrecognized = Quellparameter des Typs "{0}" ist in dieser SchemaFactory unbekannt.

# Validator error messages
SourceParameterNull = Quellparameter darf nicht null sein.
SourceNotAccepted = Quellparameter des Typs "{0}" wird von diesem Validator nicht akzeptiert.
SourceResultMismatch = Quellparameter des Typs "{0}" ist nicht mit dem Ergebnisparameter des Typs "{1}" kompatibel.

# TypeInfoProvider error messages
TypeInfoProviderIllegalState = TypeInfoProvider kann nicht au\u00DFerhalb eines startElement-R\u00FCckrufs abgefragt werden.

# General error messages
FeatureNameNull = Featurename darf nicht null sein.
ProperyNameNull = Eigenschaftsname darf nicht null sein.
SAXSourceNullInputSource = Angegebene SAXSource enth\u00E4lt keine InputSource.

