###############################################################################
# Copyright (c) 2001, 2004 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
###############################################################################
                                                        
_UI_WSDL_SOAP_VALIDATOR                    = WSDL SOAP Validator
_ERROR_NO_LOCATION_FOR_ADDRESS                   = No location has been specified for this address. Every address must have a valid location specified.
_ERROR_INVALID_PORT_ELEMENT                      = The  {0} element defined here is undefined for the SOAP namespace. The only valid element is 'address'.
_ERROR_INVALID_BINDING_STYLE                     = The {0} style defined for the SOAP binding in invalid. The SOAP binding style must be 'rpc' or 'document'.
_ERROR_INVALID_BINDING_URI                       = The transport URI has not been defined for the SOAP binding. You must specify a transport URI for every SOAP binding.
_ERROR_INVALID_OPERATION_STYLE                   = The style specified for the SOAP operation is invalid. The SOAP operation style must be 'rpc' or 'document'.
_ERROR_INVALID_OPERATION_URI                     = The soapAction URI is invalid for the SOAP Operation. You must specify a valid soapAction URI for every SOAP Operation.
_ERROR_INVALID_BINDING_ELEMENT                   = The {0} element defined here is undefined for the SOAP namespace. The only valid element is 'binding'.
_ERROR_INVALID_BINDING_OPERATION_ELEMENT         = The {0} element defined here is undefined for the SOAP namespace. The only valid element is 'operation'.
_ERROR_INVALID_HEADER_BODY_ELEMENT               = The {0} element defined here is undefined for the SOAP namespace. The only valid elements are 'body', 'header' and 'headerfault'.
_ERROR_INVALID_FAULT_ELEMENT                     = The {0} element defined here is undefined for the SOAP namespace. The only valid element is 'fault'.
!-- _ERROR_INVALID_BODY_NAMESPACE_FOR_ENCODED        = The namespace specified for the SOAP body is invalid. You must specify a namespace for the SOAP body element when its use is encoded.

!-- A SOAP body element in a WSDL document can have an attribute "use" defined to be either literal or encoded. --
!-- This string is used in an error task in WSAD if the document specifies a use other then literal or encoded. -- 
!-- For example, if the document specifies the use of the SOAP body as "simple" the output string should be:    --
!-- The 'simple' use specified for the SOAP body is invalid. The use must be literal or encoded.                --
_ERROR_INVALID_BODY_USE                          = The {0} use specified for the SOAP body is invalid. The use must be literal or encoded.
_ERROR_INVALID_BODY_ENCODING_STYLE               = There is no encoding style URI defined for the SOAP body. You must specify at least one URI for the encoding style when the use is encoded.
_ERROR_INVALID_BODY_PART_UNDEFINED               = The {0} part specified as a part for the SOAP body is undefined.  You can only specify defined parts.
_ERROR_INVALID_BODY_PART_NOT_TYPE                = The {0} part does not have a type defined and has been specified for a SOAP body with its use encoded. When use is encoded on a SOAP body, all parts defined must only contain a valid type.
_ERROR_INVALID_SOAP_ELEMENT_FOR_LOCATION         = The {0} element cannot be specified here. This element is not defined in the SOAP namespace for use at this point.
_ERROR_NO_SOAPBINDING_FOR_ADDRESS                = A SOAP address cannot be specified here as the {0} binding that the {1} port refers to does not have a SOAP binding element defined. There must be a SOAP binding element defined in order to specify a SOAP address for a binding.
_ERROR_HEADER_MESSAGE_UNDEFINED                  = The {0} message specified for the SOAP header is undefined. The message specified must be defined in the WSDL document.
_ERROR_HEADER_PART_UNDEFINED                     = The {0} part specified in message {1} for the SOAP header is undefined. Ensure the part is defined in the {1} message.
_ERROR_HEADER_USE_UNDEFINED                      = The {0} use specified for the SOAP header is invalid. The use must be specified as literal or encoded.
_ERROR_HEADER_ENCODINGSTYLE_UNDEFINED            = The encoding style for the SOAP header is not specified. When the use is encoded the encoding style must specify at least one URI.
_ERROR_HEADER_NAMESPACE_UNDEFINED                = The namespace for the SOAP header is not specified. When the use is encoded a namespace URI must be defined.
_ERROR_HEADERFAULT_MESSAGE_UNDEFINED             = The {0} message specified for the SOAP header fault is undefined. The message specified must be defined in the WSDL document.
_ERROR_HEADERFAULT_PART_UNDEFINED                = The {0} part specified in message {1} for the SOAP header fault is undefined. Ensure the part is defined in the {1} message. 
_ERROR_HEADERFAULT_USE_UNDEFINED                 = The {0} use specified for the SOAP header fault is invalid. The use must be specified as literal or encoded.
_ERROR_HEADERFAULT_ENCODINGSTYLE_UNDEFINED       = The encoding style for the SOAP header fault is not specified. When the use is encoded the encoding style must specify at least one URI.
_ERROR_HEADERFAULT_NAMESPACE_UNDEFINED           = The namespace for the SOAP header fault is not specified. When the use is encoded a namespace URI must be defined.
_ERROR_INVALID_FAULT_NAME                        = The {0} name specified for the SOAP fault is invalid. The name specified must be {1}, the name from the fault parent element.
_ERROR_NO_SOAPBINDING_FOR_OPERATION              = The {0} binding that the SOAP operation is specified for does not have a SOAP binding defined. A SOAP binding must be defined in order to define a SOAP operation here.
_ERROR_NO_SOAPBINDING_FOR_BODY                   = The {0} binding that the SOAP body is specified for does not have a SOAP binding defined. A SOAP binding must be defined in order to define a SOAP body here.
_ERROR_NO_SOAPBINDING_FOR_HEADER                 = The {0} binding that the SOAP header is specified for does not have a SOAP binding defined. A SOAP binding must be defined in order to define a SOAP header here.