OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   RE: [xml-dev] XML Schema and instance documents

[ Lists Home | Date Index | Thread Index ]

The spec gives implementations great latitude on this. I think that
conforming processors could choose whichever definition they hit first, or
they could throw an error because there is more than one definition of
{ns2}child, or they could recognize that the two definitions are actually
equivalent and avoid throwing the error. It's best to avoid the situation
arising.

Saxon will tend to do the first of these: if you've already got a schema (a
set of schema components) for namespace {ns2} in your cache, then an import
of that namespace is a no-op, even if the schema location is different. This
is justified on the basis that the schema location is only a "hint". As a
general rule, it's troublesome to have several schemas in existence for the
same namespace - even though there are very good reasons for doing it, such
as validating the same document at different stages in its lifecycle.

Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: Jack Matheson [mailto:jack@snazzypost.com] 
> Sent: 03 February 2006 20:32
> To: xml-dev@lists.xml.org
> Subject: [xml-dev] XML Schema and instance documents
> 
> Can anyone tell me how a schema-aware validating parser 
> decides which  
> schema to use in this case:
> 
> ns1.xsd:
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";  
> targetNamespace="ns1">
>     <xs:import schemaLocation="import.xsd" namespace="ns2"/>
> 
>     <xs:element name="root"/>
> </xs:schema>
> 
> import.xsd:
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";  
> targetNamespace="ns2">
>     <xs:element name="child"/>
> </xs:schema>
> 
> ns2.xsd:
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";  
> targetNamespace="ns2">
>     <xs:element name="child"/>
> </xs:schema>
> 
> test.xml:
> <a:root xmlns:a="ns1" xmlns:xsi="http://www.w3.org/2001/XMLSchema- 
> instance"
>                xsi:schemaLocation="ns ns1.xsd ns2 ns2.xsd">
>     <child xmlns="ns2"/>
> </a:root>
> 
> If I remove the "ns2 ns2.xsd" pairing from the instance document's  
> xsi:schemaLocation attribute, the rule defined by
> import.xsd will be used. What happens when this attribute is 
> left in?  
> Is it up to the processor to decide?
> 
> Any help is appreciated!
> 
> -Jack
> 
> 
> -----------------------------------------------------------------
> The xml-dev list is sponsored by XML.org <http://www.xml.org>, an
> initiative of OASIS <http://www.oasis-open.org>
> 
> The list archives are at http://lists.xml.org/archives/xml-dev/
> 
> To subscribe or unsubscribe from this list use the subscription
> manager: <http://www.oasis-open.org/mlmanage/index.php>
> 
> 






 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS