- From: Saul Farber <saul@syncline.com>
- Date: 08 Nov 2001 14:28:47 -0500
- To: xmlschema-dev@w3.org
- Message-Id: <1005247727.1131.5.camel@saul>
Hello once more,
I think both Priscilla and Jeni are getting at the same point...that the
parser needs some way to explicitly validate the contents of the
<xsd:any>-specified sub-document.
When I applied both of these suggestions (jeni's in the WSDL-schema
document and priscilla's in the instance document) the problem was
solved! Thank you both so much!
However, I don't think I understand the rationale behind the
solution...I mean, the wsdl-schema document was aware of the
http://www.w3.org/2001/XMLSchema namespace (heck, the WSDL-schema
document uses it as the default namespace...it's a SCHEMA document!)
Why couldn't it just apply whatever method it was using to validate all
the other schemas to the instance document as well? Here's a clearer
formulation of my question:
WSDL-Schema looks like:
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://schemas.xmlsoap.org/wsdl/"
... >
<element name="types" type="typesType">
<complexType name="typesType">
<complexContent>
<extension base="wsdl:documented">
<sequence>
<any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
...
</schema>
My instance document looks like:
<Document xmlns="http://me.com/myHiLevelNS">
<myServiceWSDL>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<!-- I'll put my custom schema-elements here -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://me.com/mySchemaTypesNS"
xmlns:tns="http://me.com/mySchemaTypesNS">
<xsd:complexType name="blahblah">
....
</xsd:complexType>
</xsd:schema>
</types>
</definitions>
</myServiceWSDL>
</Document>
Now the validation-logic of my parser (Xerces-1.4.3) doesn't seem to
have any problem validating the WSDL schema, and I didn't explicitly
resolve the schema-uri there! Yet if I write schema like the above I
will always get that error. I need to explicitly resolve the
"http://www.w3.org/2001/XMLSchema" ns if I want to get proper
validation, (either in the WSDL-schema document with an <xs:import>
element or in the instance document with an xsi:schemaLocation
attribute).
Is this "parser-funkiness" or is this the intention of the spec?
At least the problem is solved!!! I would never have though to try this
solution if I hadn't got your guys help! Thanks again.
--saul
On Thu, 2001-11-08 at 11:47, Priscilla Walmsley wrote:
> Hi Saul,
>
> Are you specifing a schemaLocation in your instance? It has to know where
> to go look for the declaration for xsd:schema.
>
> So, it might look like:
>
> <types xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://www.w3.org/2001/XMLSchema
> xmlschema.xsd">
> <xsd:sch<complexTypeema xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
> </types>
>
> (if you have a local copy of the schema for schemas at xmlschema.xsd)
>
> Also, what parser are you using? Maybe it's a bug.
>
>
> Priscilla
>
> -----------------------------------------------------------
> Priscilla Walmsley priscilla@walmsley.com
> Vitria Technology http://www.vitria.com
> Author, Definitive XML Schema (Prentice Hall, Dec. 2001)
> -----------------------------------------------------------
>
> > -----Original Message-----
> > From: xmlschema-dev-request@w3.org
> > [mailto:xmlschema-dev-request@w3.org]On Behalf Of Saul Farber
> > Sent: Thursday, November 08, 2001 11:23 AM
> > To: xmlschema-dev@w3.org
> > Subject: Re: <xsd:any> misunderstandings?
> >
> >
> > Thanks for your suggestions, guys, but I think I have already
> > taken care
> > of those issues...plus I think I mis-copied my xml to my first post.
> > Sorry! I'll try to spell out the problem in more detail.
> >
> > WSDL:
> >
> > <types>
> > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
> > </types>
> >
> > WSDL-Schema: (***copied from the OFFICIAL wsdl-schema***)
> > *** the declared namespace here is
> > xmlns="http://www.w3.org/2001/XMLSchema ***
> >
> > <element name="types" type="wsdl:typesType"/>
> > <complexType name="typesType">
> > <complexContent>
> > <extension base="wsdl:documented">
> > <sequence>
> > <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
> > </sequence>
> > </extension>
> > </complexContent>
> > </complexType>
> >
> > so my <xsd:schema> element is in an "other" namespace (namely the
> > xml-schema ns) and it is valid (it is a validatable element from the
> > http://www.w3.org/2001/XMLSchema namespace).
> >
> > Yet I still get the:
> > Error on line 20 of document /home.../document.xml: Element type
> > "xsd:schema" must be declared.
> > error. Like I said below, isn't the point of the xsd:all element to
> > allow for arbitrary sub-documents?
> >
> > Argh!
> >
> > any further suggestions?
> >
> > --saul
> >
> > On Wed, 2001-11-07 at 22:02, Eddie Robertsson wrote:
> > > > When defining WSDL types, one uses a bit of XML like the
> > following:
> > > >
> > > > <types>
> > > > <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema">
> > > > ...
> > > > </xsd:schema>
> > > > </types>
> > >
> > > Try changing the namespace declaration to
> > > 'xmlns:xsd="http://www.w3.org/2001/XMLSchema"'
> > > As it is now you're declaring the default namespace to
> > point to XML Schema but
> > > you still have no definition for the xsd: prefix (unless
> > you have one further
> > > up in the tree structure...)
> > >
> > > Cheers,
> > > /Eddie
> > >
> > > >
> > > >
> > > > The definition of the "types" element in the WSDL-schema
> > (version 1.1)
> > > > is as follows (from http://schemas.xmlsoap.org/wsdl/):
> > > >
> > > > <element name="types" type="wsdl:typesType"/>
> > > > <complexType name="typesType">
> > > > <complexContent>
> > > > <extension base="wsdl:documented">
> > > > <sequence>
> > > > <any namespace="##other" minOccurs="0"
> > maxOccurs="unbounded"/>
> > > > </sequence>
> > > > </extension>
> > > > </complexContent>
> > > > </complexType>
> > > >
> > > > So I wrote the following xml (to conform to this schema),
> > thinking that
> > > > the <any> element would let me write xml like the above...with the
> > > > correct namespace, etc.
> > > >
> > > > However, when validating, I get the following error
> > > > >> Error on line 20 of document /home.../document.xml:
> > Element type
> > > > "xsd:schema" must be declared.
> > > >
> > > > I thought the whole point of having an <xsd:any> tag was
> > to ELIMINATE
> > > > the need to pre-declare exactly was is to go into the xml! My
> > > > <xsd:schema> structure is both well-formed and valid, I
> > just can't seem
> > > > to get the <xsd:any> element to "accept" an un-declared child.
> > > >
> > > > I can always fix this by setting the "processContents"
> > attribute of the
> > > > <any> element to "skip", but this defeats what I want to
> > do...which is
> > > > have valid xml-schema in the <types> section of the WSDL.
> > > >
> > > > What am I missing here...is my understanding of exactly
> > what <xsd:any>
> > > > does wrong?>
> > > >
> > > > thanks in advance!
> > > > saul
> > > >
> > > > --
> > > > Syncline, Inc.
> > > > 373 Washington St.
> > > > Boston, MA 02108
> > > >
> > > > 617-986-1000 (x248)
> > > >
> > > > www.syncline.com -- Informing the Enterprise
> > > > www.mapciti.com -- It's Your Town on the Web
> > > >
> > > >
> > --------------------------------------------------------------
> > ----------
> > > > Part 1.2Type: application/pgp-signature
> > >
> > >
> > --
> > Syncline, Inc.
> > 373 Washington St.
> > Boston, MA 02108
> >
> > 617-986-1000 (x248)
> >
> > www.syncline.com -- Informing the Enterprise
> > www.mapciti.com -- It's Your Town on the Web
> >
>
>
--
Syncline, Inc.
373 Washington St.
Boston, MA 02108
617-986-1000 (x248)
www.syncline.com -- Informing the Enterprise
www.mapciti.com -- It's Your Town on the Web
Received on Thursday, 8 November 2001 14:25:12 UTC