XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Joseph BruttoSubject: XSD - multiple similar namespace import - validation fails
Author: Joseph Brutto
Date: 27 Feb 2009 09:56 AM
I have an XSD that Stylus Studio continually tells me is invalid. I have checked the standards documentation and cannot see what is wrong with how I am doing things. I was wondering if anyone could explain the problem to me.

Here's what my XSD looks like:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:rootns="http://www.mydomain.com/xns"
xmlns:securityns="http://www.mydomain.com/xns/security"
targetNamespace="http://www.mydomain.com/xns/mylocal"
>
<xsd:import schemaLocation="../bla1.xsd" namespace="http://www.mydomain.com/xns" />
<xsd:import schemaLocation="../bla2.xsd" namespace="http://www.mydomain.com/xns" />
<xsd:import schemaLocation="../security/bla3.xsd" namespace="http://www.mydomain.com/xns" />
<xsd:element name="MyLocal" nillable="false">
<xsd:complexType>
<xsd:all>
<xsd:element ref="rootns:bla1" minOccurs="1" maxOccurs="1" />
<xsd:element ref="rootns:bla2" minOccurs="1" maxOccurs="1" />
<xsd:element ref="securityns:bla3" minOccurs="0" maxOccurs="1" />
</xsd:all>
</xsd:complexType>
</xsd:element>
</xsd:schema>


Stylus Studio tells me "bla2 cannot be located". If I swap the imports around to the following, it then tells me bla1 cannot be found:

<xsd:import schemaLocation="../bla2.xsd" namespace="http://www.mydomain.com/xns" />
<xsd:import schemaLocation="../bla1.xsd" namespace="http://www.mydomain.com/xns" />

Any suggestions?

Postnext
Alberto MassariSubject: XSD - multiple similar namespace import - validation fails
Author: Alberto Massari
Date: 27 Feb 2009 10:12 AM
Hi Joseph,
Xerces only allows one location for each schema namespace, following the advice found in the W3C spec ("multiple 'import'ing of the same schema document will not constitute a violation of clause 2 of Schema Properties Correct (§3.15.6), but applications are allowed, indeed encouraged, to avoid 'import'ing the same schema document more than once to forestall the necessity of establishing identity component by component. Given that the schemaLocation [attribute] is only a hint, it is open to applications to ignore all but the first 'import' for a given namespace, regardless of the ·actual value· of schemaLocation, but such a strategy risks missing useful information when new schemaLocations are offered.").

In order to have a more compliant schema file, please write a single schema for your namespace, for instance containing just three xsd:include statements reusing the already existing fragments.

Hope this helps,
Alberto

Postnext
Joseph BruttoSubject: XSD - multiple similar namespace import - validation fails
Author: Joseph Brutto
Date: 27 Feb 2009 10:15 AM
Interesting.
Writing a quick wrapper indeed did the trick.

I'll have to dig deeper into the W3C specs.

Postnext
matt heckelSubject: XSD - multiple similar namespace import - validation fails
Author: matt heckel
Date: 02 Mar 2009 03:13 PM
Alberto, I ran into the same problem with multiple import statements for the same namespace. So, I combined all the schemas into one for each namespace. I now have two namespaces and a proxy which calls them. I've worked through alot of unknown datatype errors but am left with one major error which is for an unknown element (gdsn:priceSynchronisationDocument). I've tried many things but am now at a loss. Could you please help me to understand what needs to be done to get this document validated? Many thanks, Matt

The pertinent files are: simpleRelationshipAdd.xml, priceSynchronisationDocumentProxy.xsd, ean.ucc/common/CommonSchemas.xsd, ean.ucc/gdsn/GDSNSchemas.xsd, and ean.ucc/gdsn/PriceSynchronisationDocument.xsd


UnknownPriceSyncSchemas.zip
schemas and xml file for validation

Postnext
Alberto MassariSubject: XSD - multiple similar namespace import - validation fails
Author: Alberto Massari
Date: 02 Mar 2009 03:53 PM
Hi Joseph,
in order to make the schema consistent, you should always import the same root schema whenever its namespace is used.
For instance, in PriceSynchronizationProxy.xsd, you need to use

<xsd:import namespace="urn:ean.ucc:gdsn:2" schemaLocation="ean.ucc/gdsn/PriceSynchronisationDocument.xsd"/>

while in common/CommonSchemas.xsd you need to use

<xsd:import namespace="urn:ean.ucc:gdsn:2" schemaLocation="../gdsn/PriceSynchronisationDocument.xsd"/>

On the other hand, the other schema must point to the proxy schema in the root folder, e.g. gdsn/PriceSynchronizationDocument.xsd must use

<xsd:import namespace="urn:ean.ucc:2" schemaLocation="../../PriceSynchronisationDocumentProxy.xsd"/>

Alberto

Postnext
matt heckelSubject: XSD - multiple similar namespace import - validation fails
Author: matt heckel
Date: 02 Mar 2009 08:07 PM
Thanks Alberto, it was me Matt that asked the question. It worked. But I'm curious, if an import statement should always point to the root schema for the namespace, why was it NOT necessary to change the import statement for the urn:ean.ucc:2 namespace in the file GDSNSchemas.xsd to point to the PriceSynchronisationDocumentProxy.xsd schema instead of the current ean.ucc/common/CommonSchemas.xsd schema? Thanks again! -Matt

Posttop
Alberto MassariSubject: XSD - multiple similar namespace import - validation fails
Author: Alberto Massari
Date: 03 Mar 2009 08:36 AM
Hi Matt,
ideally every time you import a namespace you should use the same schema file. However, in some cases the import will be ignored because the namespace has already been loaded by another xsd:import, so that xsd:import could be pointing anywhere without making the validation fail.

Alberto

 
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.