#
# Copyright (c) 2009, 2017, 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.

# Messages for message reporting
BadMessageKey = Impossibile trovare il messaggio di errore corrispondente alla chiave di messaggio.
FormatFailed = Si \u00E8 verificato un errore interno durante la formattazione del seguente messaggio:\n

# SchemaFactory error messages
SchemaLanguageNull = La lingua dello schema specificata non pu\u00F2 essere nulla.
SchemaLanguageLengthZero = La lingua dello schema specificata non pu\u00F2 avere una lunghezza di zero caratteri.
SchemaSourceArrayNull = Il parametro di array di origine non pu\u00F2 essere nullo.
SchemaSourceArrayMemberNull = Il parametro di array di origine non pu\u00F2 contenere elementi nulli.
SchemaFactorySourceUnrecognized = Il parametro di origine di tipo ''{0}'' non \u00E8 riconosciuto in questo SchemaFactory.

# Validator error messages
SourceParameterNull = Il parametro di origine non pu\u00F2 essere nullo.
SourceNotAccepted = Il parametro di origine di tipo ''{0}'' non \u00E8 accettato da questo validator.
SourceResultMismatch = Il parametro di origine di tipo ''{0}'' non \u00E8 compatibile con il parametro dei risultati di tipo ''{1}''.

# TypeInfoProvider error messages
TypeInfoProviderIllegalState = Impossibile eseguire una query su TypeInfoProvider al di fuori di un callback startElement.

# General error messages
FeatureNameNull = Il nome funzione non pu\u00F2 essere nullo.
ProperyNameNull = Il nome propriet\u00E0 non pu\u00F2 essere nullo.
SAXSourceNullInputSource = Il valore specificato per SAXSource non contiene InputSource.

