Hallo.
Could You help me please!
I have a problem I can't solve for a
2 monthes. I investigated archive, but no help found.
The problem is:
I want to validate XML file (namely WSDL file) with
Xerces 1.4.3. WSDL file contains part of schema in it.
And I could not validate it.
I set up all the feautres of parser to enable
validation against schema. (I tried different combinations).
I downloaded all files concerning XML schema:
datatypes.dtd, xml.xsd, XMLSchema.dtd, XMLSchema.xsd
I changed accordingly every
xsi:schemaLocation.
When there is no elements from namespace "http://www.w3.org/2001/XMLSchema",
and no location for this namespace is specified, document is valid.
But if I add ones - I have from Xerces J 1.4.3
(if some schemaLocation (local file) for
namespace "http://www.w3.org/2001/XMLSchema" is
specified )
"[Error] sample.wsdl:10:51: Schema error: The
namespce name for 'schema' must be http://www.w3.org/2001/XMLSchema.
...................."
And I have (if no schemaLocation for namespace "http://www.w3.org/2001/XMLSchema" is
specified )
"[Error] sample.wsdl:14:59: General Schema Error:
Grammar with uri: http://www.w3.org/2001/XMLSchema ,
can not be found; schema namespace may be wrong: Xerces supports schemas
from the "http://www.w3.org/2001/XMLSchema"
namespace or the instance document's namespace may not match the targetNamespace
of the schema.
...................."
I'm definitly using XMLSchema.xsd for "http://www.w3.org/2001/XMLSchema".
Here is sample.wsdl
<?xml version="1.0"?> <definitions
name="StockQuote"
targetNamespace="http://example.com/stockquote.wsdl"
xmlns:tns="http://example.com/stockquote.wsdl"
xmlns:xsd1="http://example.com/stockquote.xsd"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.xmlsoap.org/wsdl/
wsdl.xsd http://www.w3.org/2001/XMLSchema
XMLSchema.xsd ">
<types> <xs:schema
targetNamespace="http://example.com/stockquote.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element
name="TradePriceRequest">
<xs:complexType>
<xs:all>
<xs:element name="tickerSymbol"
type="string"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element
name="TradePrice">
<xs:complexType>
<xs:all>
<xs:element name="price"
type="float"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema> </types>
<message
name="GetLastTradePriceInput">
<part name="body" element="xsd1:TradePriceRequest"/>
</message>
<message
name="GetLastTradePriceOutput">
<part name="body" element="xsd1:TradePrice"/>
</message>
<portType
name="StockQuotePortType">
<operation
name="GetLastTradePrice">
<input
message="tns:GetLastTradePriceInput"/>
<output
message="tns:GetLastTradePriceOutput"/>
</operation> </portType>
</definitions>
Am I wrong? Or is Xerces wrong?
May be someone know success story how to validate
WSDL with another parser, or another version of Xerces, then tell me please it
also.
Thanks a lot.
Yuriy.
|