W3C home > Mailing lists > Public > xmlschema-dev@w3.org > October 2006

Re: using types from an included file in a different namespace

From: George Cristian Bina <george@oxygenxml.com>
Date: Fri, 27 Oct 2006 20:35:41 +0200
Message-ID: <4542517D.6060600@oxygenxml.com>
To: "'Antoli, Leo'" <Leo.Antoli@Misys.com>
CC: xmlschema-dev@w3.org

Sorry Leo,

I think Michael is right, I replied too quickly.
XercesJ 2 points to point 4.2 from 
http://www.w3.org/TR/xmlschema-1/#src-resolve when it reports the error:

src-resolve.4.2: Error resolving component 'ns2:myType'. It was detected 
that 'ns2:myType' is in namespace 'http://mynamespace2', but components 
from this namespace are not referenceable from schema document 
'file:/C:/.../A.xsd'. If this is the incorrect namespace, perhaps the 
prefix of 'ns2:myType' needs to be changed. If this is the correct 
namespace, then an appropriate 'import' tag should be added to 
'file:/C:/.../A.xsd'.

Best Regards,
George
---------------------------------------------------------------------
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com

Michael Kay wrote:
> The spec in 4.2.3 says:
> 
> The <import> element information item identifies namespaces used in external
> references, i.e. those whose .QName. identifies them as coming from a
> different namespace (or none) than the enclosing schema document's
> targetNamespace. The .actual value. of its namespace [attribute] indicates
> that the containing schema document may contain qualified references to
> schema components in that namespace.
> 
> Note the (synonymous) terms "enclosing schema document" and "containing
> schema document". An included document is not part of the
> enclosing|containing schema document.
> 
> This is a permissive rule: it says that if you import a namespace then you
> may refer to names in that namespace. The converse rule, that if you don't
> import a namespace then you may not refer to names in that namespace, is in
> 3.15.3 Schema Representation Constraint: QName resolution (Schema Document):
> 
> For a .QName. to resolve to a schema component of a specified kind all of
> the following must be true:
> ...
> 4 The appropriate case among the following must be true:
> 4.1 If the .namespace name. of the .QName. is .absent., then one of the
> following must be true:
> 4.1.1 The <schema> element information item of the schema document
> containing the .QName. has no targetNamespace [attribute].
> 4.1.2 The <schema> element information item of the [sic] that schema
> document contains an <import> element information item with no namespace
> [attribute].
> 4.2 otherwise the .namespace name. of the .QName. is the same as one of the
> following:
> 4.2.1 The .actual value. of the targetNamespace [attribute] of the <schema>
> element information item of the schema document containing the .QName..
> 4.2.2 The .actual value. of the namespace [attribute] of some <import>
> element information item contained in the <schema> element information item
> of that schema document.
> 
> Which is a very longwinded way of saying "The namespace (or non-namespace)
> of the QName must either be the same as the target namespace, or must be
> referenced in an xs:import element in the schema document containing the
> QName."
> 
> So I think Saxon has it right. However, there's a "late binding" theory for
> schema components which says that if you can't resolve references when you
> first try, then no failure occurs and you keep trying. There's very little
> textual evidence to support this theory, so almost anything can be justified
> under it, and it might just provide enough wriggle room to enable someone to
> claim that it's legal to bind components even though the above rule appears
> on the surface to be violated. 
> 
> Michael Kay
> http://www.saxonica.com/ 
> 
> 
> 
> 
>> -----Original Message-----
>> From: xmlschema-dev-request@w3.org 
>> [mailto:xmlschema-dev-request@w3.org] On Behalf Of Antoli, Leo
>> Sent: 27 October 2006 16:20
>> To: xmlschema-dev@w3.org
>> Subject: using types from an included file in a different namespace
>>
>>
>> Hi all,
>> Maybe the subject is not very clear but I'll try to explain 
>> my question.
>> I have a schema file A.xsd including another file B.xsd (so 
>> in the same ns as A.xsd), and B.xsd importing F.xsd (so in a 
>> differente ns). Can I use types/elements defined in F.xsd from A.xsd?
>>
>> It looks like XML Spy allows this, but Saxon produces this error:
>> "Cannot reference schema components in namespace http://myns 
>> as it has not been imported".
>>
>> What behaviour is correct?
>>
>> Thanks you.
>>
>> Regards,
>> Leo. 
>>
> 
> 
Received on Friday, 27 October 2006 17:31:23 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 11 January 2011 00:14:55 GMT