################################################################################
# Copyright (c) 2010, 2013 Oracle. All rights reserved.
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0, which accompanies this distribution
# and is available at https://www.eclipse.org/legal/epl-2.0/.
# 
# Contributors:
#     Oracle - initial API and implementation
################################################################################

# JptJaxbCoreMessages

CONTEXT_MODEL_SYNC_JOB_NAME=Synchronize JAXB project: ''{0}''
UPDATE_JOB_NAME=Update JAXB project: ''{0}''
PREFERENCES_FLUSH_JOB_NAME=Flush Preferences: {0}

JAXB_FACET_CONFIG_VALIDATE_PLATFORM_NOT_SPECIFIED=Platform must be specified
JAXB_FACET_CONFIG_VALIDATE_PLATFORM_DOES_NOT_SUPPORT_FACET_VERSION=Platform does not support the current JAXB facet version

JRE_LIBRARY_VALIDATOR_INVALID_PLATFORM=The JRE only provides implementation for a Generic JAXB platform.
JRE_LIBRARY_VALIDATOR_INVALID_JAVA_FACET=The specified Java version of {0} is insufficient to provide an implementation for JAXB version {1}.  The JAXB implementation of a Java {0} runtime environment must be manually overridden by an endorsement mechanism of your choice.
JRE_LIBRARY_VALIDATOR_INVALID_JAVA_LIBRARY=The configured runtime is insufficient to provide an implementation for JAXB {0}.

SCHEMA_GENERATOR_CREATING_JAXB_PROPERTIES_FILE_TASK=Creating jaxb.properties file
SCHEMA_GENERATED=\nSchema generated: 

USER_LIBRARY_VALIDATOR_INCOMPATIBLE_JAVA_FACET=The specified Java version of {0} provides a JAXB implementation that conflicts with JAXB version {1}.  The JAXB implementation of a Java {0} runtime environment must be manually overridden by an endorsement mechanism of your choice.
USER_LIBRARY_VALIDATOR_INCOMPATIBLE_JAVA_LIBRARY=The configured runtime conflicts with JAXB version {0}.

XML_ATTRIBUTE_DESC=XML attribute declaration
XML_ELEMENT_DESC=XML element declaration
XML_TYPE_DESC=XML type definition
SUBSTITUTION_HEAD_DESC=XML element substitution head

XML_ELEMENT_DECL__SCOPE=in the scope of ''{0}''

INVALID_FACET=Invalid Facet: {0}
