###############################################################################
# Copyright (c) 2001, 2006 IBM Corporation and others.
# 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:
#     IBM Corporation - initial API and implementation
###############################################################################
!-- Constants for strings  

!-- Error with document location
_ERROR_DOCUMENT_LOCATION                   = The WSDL document {0} could not be read.
!-- Warning Messages
_WARN_NO_VALDIATOR                         = There is no registered validator for the namespace {0}.

_ERROR_PROBLEM_WSDL_VALIDATOR              = A problem occurred while running the WSDL validator for namespace {0}.
_ERROR_NO_WSDL_VALIDATOR                   = The namespace {0} specified is not a valid WSDL namespace.
_ERROR_PROBLEM_EXT_VALIDATOR               = A problem occurred while running the Extension validator {0} for namespace {1}.

!-- Strings for WSDL 1.1 validator
                                                       
_UNABLE_TO_IMPORT_BAD_LOCATION             = The {0} document could not be imported. Check that the document exists and that the location is correct.
_UNABLE_TO_IMPORT_NO_LOCATION              = The location attribute is empty. A location must be specified for the location attribute.
_UNABLE_TO_IMPORT_INVALID                  = The {0} document could not be imported because it is not valid. The document must be corrected before it can be imported.
_NO_BINDING_FOR_PORT                       = The {0} port has an invalid binding - {1}. Check that the {1} binding is defined.
_PORTTYPE_UNDEFINED_FOR_BINDING            = The {0} port type specified for the {1} binding is undefined. Check the {0} port type name and ensure it is defined.
_OPERATION_UNDEFINED_FOR_PORTTYPE          = The operation specified for the {0} binding is not defined for port type {1}. All operations specified in this binding must be defined in port type {1}.
_INPUT_NAME_NOT_UNIQUE                     = The name {0} specified for this input element is not unique. The name of an input element must be unique from the names of all other input and output elements defined in the {1} port type.
_OUTPUT_NAME_NOT_UNIQUE                    = The name {0} specified for this output element is not unique. The name of an output element must be unique from the names of all other inputs and output elements defined in the {1} port type.
_MESSAGE_UNDEFINED_FOR_INPUT               = The input element is referencing an undefined message {0}. Check that the message name and namespace are correct and that the message has been defined.
_MESSAGE_UNDEFINED_FOR_OUTPUT              = The output element is referencing an undefined message {0}. Check that the message name and namespace are correct and that the message has been defined.
_MESSAGE_UNDEFINED_FOR_FAULT               = The fault element is referencing an undefined message {0}. Check that the message name and namespace are correct and that the message has been defined.
_DUPLICATE_FAULT_NAME                      = A fault with the name {0} has already been defined for the {1} 0peration. Check that every fault defined for this operation has a unique name.
_PART_NO_ELEMENT_OR_TYPE                   = The part {0} does not have a type defined. Every part must specify a type from some type system. The type can be specified using the built in "element" or "type" attributes or may be specified using an extension attribute.
_PART_BOTH_ELEMENT_AND_TYPE                = The part {0} has both an element and a type defined. Every part must only have an element or a type defined.
_PART_INVALID_ELEMENT                      = The part {0} has an invalid value {1} defined for its element. Element declarations must refer to valid values defined in a schema.
_PART_INVALID_TYPE                         = The part {0} has an invalid value {1} defined for its type. Type declarations must refer to valid values defined in a schema.
_DUPLICATE_OPERATION_FOR_PORTTYPE          = An operation with the name {0} has already been defined for the {1} port type. Every operation defined for a port type must have a unique name. 
_SERVICE_NAME_ALREADY_DEFINED              = A Service with the name {0} has already been defined. Every service in the WSDL document must have a unique name.
_BINDING_NAME_ALREADY_DEFINED              = A binding with the name {0} has already been defined. Every binding in the WSDL document must have a unique name.
_MESSAGE_NAME_ALREADY_DEFINED              = A message with the name {0} has already been defined. Every message in the WSDL document must have a unique name.
_PORTTYPE_NAME_ALREADY_DEFINED             = A port type with the name {0} has already been defined. Every port type in the WSDL document must have a unique name.
_MORE_THEN_ONE_ADDRESS_PORT                = An address has already been defined for port {0}. Each port can have only one address defined.
_NO_ADDRESS_PORT                           = The port {0} has no address defined. Each port must define one address.
_PORT_NAME_NOT_UNIQUE                      = A port with the name {0} has already been defined. Every port in the WSDL document must have a unique name.
_OPERATION_NO_INPUT_OR_OUTPUT              = No input or output element has been defined for the {0} operation. An input element, an output element, or both must be defined for every operation.
_WARN_SOAPENC_IMPORTED_PART                = The part {0} uses an element or type from the SOAP encoding namespace but the namespace has not been imported. The SOAP encoding namespace should be imported with an import statement before it is used.
_WARN_SOAPENC_IMPORTED_SCHEMA              = The inline schema uses an element or type from the SOAP encoding namespace but the namespace has not been imported. The SOAP encoding namespace should be imported with an import statement before it is used.
_REFERENCED_FILE_CONTAINS_ERRORS           = Referenced file contains errors ({0}).
_WARN_OLD_SCHEMA_NAMESPACE                 = An old version of the schema namespace has been specified. {0} is the schema namespace that should be used.
_ERROR_MULTIPLE_TYPES_DEFINED              = A types section has already been defined. Only one types element is allowed.
_WARN_WRONG_NS_ON_IMPORT                   = The file cannot be imported because the namespace {0} does not match the target namespace {1} of the imported document.
!-- Referenced file error
!-- Note to translator - _REF_FILE_ERROR_MESSAGE needs a trailing space as another message may follow.
_REF_FILE_ERROR_MESSAGE          = Referenced file contains errors ({0}). 


