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

NO_JAXB_PROJECT = This project has the JAXB facet, but no JAXB content could be created.  See the error log for more details.
PROJECT_INVALID_LIBRARY_PROVIDER = The currently selected JAXB library provider is invalid.
PROJECT__UNRESOLVED_SCHEMA = Cannot resolve the schema with location ''{0}''.
PROJECT__DUPLICATE_NAMESPACE = Duplicate schema library entries with the namespace ''{0}''.

PACKAGE_NO_SCHEMA_FOR_NAMESPACE = There is no schema specified on the project for the namespace ''{0}'' on the package ''{1}''.  No schema-specific validation will be performed.
PACKAGE_XML_JAVA_TYPE_ADAPTER_TYPE_NOT_SPECIFIED = The type must be specified for an XML Java type adapter on a package
XML_SCHEMA__MISMATCHED_ATTRIBUTE_FORM_DEFAULT = The attribute form default conflicts with what is specified on the schema
XML_SCHEMA__MISMATCHED_ELEMENT_FORM_DEFAULT = The element form default conflicts with what is specified on the schema

XML_ENUM__NON_SIMPLE_SCHEMA_TYPE = The type ''{0}'' must be associated with a simple schema type.

XML_TYPE__UNMATCHING_NAMESPACE_FOR_ANONYMOUS_TYPE = The namespace for an anonymous type should not be different from its package
XML_TYPE__DUPLICATE_PROP = Duplicate property ''{0}''.
XML_TYPE__MISSING_PROP = Missing required property ''{0}''.
XML_TYPE__NONEXISTENT_PROP = Nonexistent property ''{0}''.
XML_TYPE__TRANSIENT_PROP = The property ''{0}'' is transient and should not be included in the property order.
XML_TYPE__FACTORY_CLASS_IGNORED_FOR_ENUM = The factory class element is ignored for enums.
XML_TYPE__FACTORY_METHOD_IGNORED_FOR_ENUM = The factory method element is ignored for enums.
XML_TYPE__PROP_ORDER_IGNORED_FOR_ENUM = The prop order element is ignored for enums.

XML_ROOT_ELEMENT_TYPE_CONFLICTS_WITH_XML_TYPE = The xml type of the element declaration with name ''{0}'' and namespace ''{1}'' conflicts with the xml type of the associated class

XML_ENUM_VALUE__INVALID_LEXICAL_VALUE = Invalid lexical value \"{0}\" for schema type ''{1}''.

ATTRIBUTE_MAPPING__UNSUPPORTED_ANNOTATION = The annotation ''{0}'' is not allowed to be used in conjunction with ''{1}''. 
ATTRIBUTE_MAPPING_XML_JAVA_TYPE_ADAPTER_TYPE_NOT_DEFINED = The type for XML Java type adapter is not defined.
XML_ELEMENT_WRAPPER_DEFINED_ON_NON_ARRAY_NON_COLLECTION = An XML element wrapper may only be defined on a collection or array property

XML_ANY_ATTRIBUTE__MULTIPLE_MAPPINGS_DEFINED = Multiple attributes are annotated with @XmlAnyAttribute.  At most one field or property per class is allowed.
XML_ANY_ATTRIBUTE__NON_MAP_TYPE = The type of a field or property annotated with @XmlAnyAttribute must be assignable to java.util.Map.

XML_ANY_ELEMENT__MULTIPLE_MAPPINGS_DEFINED = Multiple attributes are annotated with @XmlAnyElement.  At most one field or property per class is allowed.

XML_ELEMENT__UNSPECIFIED_TYPE = Unspecified XML element type.
XML_ELEMENT__ILLEGAL_TYPE = XML element type must be a sub-type of ''{0}''.

XML_ELEMENT_DECL__INVALID_METHOD_SIGNATURE_RETURN_TYPE = An element factory method must have a return type of ''javax.xml.bind.JAXBElement''.
XML_ELEMENT_DECL__INVALID_METHOD_SIGNATURE_PARAM = An element factory method must have a single parameter assignable to ''java.lang.Object''.
XML_ELEMENT_DECL__SUBST_HEAD_NAME_EQUALS_NAME = XML element decl substitution head must not match its XML element.
XML_ELEMENT_DECL__SUBST_HEAD_NO_MATCHING_ELEMENT_DECL = XML element decl substitution head must match another XML element decl.

XML_ELEMENT_REF__UNSPECIFIED_TYPE = Unspecified XML element ref type.
XML_ELEMENT_REF__ILLEGAL_TYPE = XML element ref type must be a sub-type of ''{0}''.
XML_ELEMENT_REF__NO_ROOT_ELEMENT = No root element specified on type ''{0}'' or any of its sub-types.
XML_ELEMENT_REF__NO_REGISTRY = No XML registry configured for this package.
XML_ELEMENT_REF__NO_MATCHING_ELEMENT_DECL = No XML element decl in the XML registry matching the namespace ''{0}'' and name ''{1}''.

XML_ELEMENT_REFS__DUPLICATE_XML_ELEMENT_TYPE = Duplicate type ''{0}'' in XML element refs.
XML_ELEMENT_REFS__DUPLICATE_XML_ELEMENT_QNAME = Duplicate element name ''{0}''in XML element refs.
	
XML_ELEMENTS__DUPLICATE_XML_ELEMENT_TYPE = Duplicate type ''{0}'' in XML elements.
XML_ELEMENTS__DUPLICATE_XML_ELEMENT_QNAME = Duplicate element name ''{0}'' in XML elements.

XML_ID__MULTIPLE_MAPPINGS_DEFINED = Multiple attributes are mapped as XmlID.  At most one field or property per class is allowed.
XML_ID__ATTRIBUTE_TYPE_NOT_STRING = An attribute mapped as XmlID must have type ''java.lang.String''.
XML_ID__SCHEMA_TYPE_NOT_ID = The schema type to which this attribute is mapped must be ''ID''.

XML_ID_REF__TYPE_DOES_NOT_CONTAIN_XML_ID =  In order to be used with XmlIDREF, type ''{0}'' must contain a property or field mapped as an XML ID.
XML_ID_REF__SCHEMA_TYPE_NOT_IDREF = In order to be used with XmlIDREF, The schema type of ''{0}'' must be ''IDREF''.

XML_LIST__ATTRIBUTE_NOT_COLLECTION_TYPE = In order to be mapped as XmlList, an attribute must have a collection or array type.
XML_LIST__ITEM_TYPE_NOT_MAPPED_TO_VALID_SCHEMA_TYPE = In order to be mapped as XmlList, the type ''{0}'' must be mapped to a non-list simple schema type.

XML_REGISTRY__DUPLICATE_XML_ELEMENT_QNAME = Duplicate XmlElementDecl name ''{0}'' {1}.

XML_VALUE__MULTIPLE_MAPPINGS_DEFINED = Multiple attributes are annotated with @XmlValue.  At most one field or property per class is allowed.
XML_VALUE_MAPPING_WITH_NON_XML_ATTRIBUTE_MAPPING_DEFINED = Attribute ''{0}'' must be mapped as XmlAttribute because another attribute ''{1}'' is mapped as XmlValue

XML_SCHEMA_TYPE__NON_SIMPLE_TYPE = The schema type ''{0}'' is not a simple type.
XML_SCHEMA_TYPE__TYPE_NOT_SPECIFIED_ON_PACKAGE = The ''type'' element should be specified when defining a schema type on a package.
XML_SCHEMA_TYPE__TYPE_SPECIFIED_ON_ATTRIBUTE = The ''type'' element should not be specified when defining a schema type on a field or property.

QNAME__MISSING_NAME = {0} name not specified
QNAME__UNRESOLVED_COMPONENT = Cannot resolve {0} with namespace ''{1}'' and name ''{2}'' in this context