From a quick glance, in your
"imported schema", element "globalElement is not in the "urn:foo" namespace
because it does not have a namespace prefix, and you have not specified a
default namespace for that schema. If you add a default namespace declaration to
the imported schema that makes the "urn:foo" namespace your default namespace,
it should work.
I have a main transcation schema which INCLUDEs a schema
containing a number
of type definitions. That schema IMPORTs another schema
which contains some
global element declarations which are used to extend one
of the types in the
import'ing schema.
Transaction schema
--> includes base types
-->
imports global elements
When an XML instance based on the transaction
schema is created that
contains a reference to one of the global elements of
the imported schema,
XML Spy outputs the message :-
'Could not
validate element <<globalElement>>. No type definition was
found'
If I view the transaction schema, the imported types and elements
are
clearly visible. Can anyone tell me why the XML is invalid ??
I
have attached a simplified example below :-
XML Instance
Doc
===========
<?xml version="1.0"
encoding="UTF-8"?>
<tns:includedRoot
xmlns:tns="urn:bar"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:bar
includingSchema.xsd" xmlns:imp="urn:foo">
<fromImported>
<root>blah</root>
<imp:globalElement>blah</imp:globalElement>
</fromImported>
</tns:includedRoot>
transaction
schema
============
<?xml version="1.0"
encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="urn:bar"
targetNamespace="urn:bar"
elementFormDefault="unqualified"
attributeFormDefault="unqualified">
<xs:include
schemaLocation="importingSchema.xsd"/>
<xs:element
name="includedRoot">
<xs:complexType>
<xs:sequence>
<xs:element name="fromImported"
type="Extended"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
importing
schema
===========
<?xml version="1.0"
encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified"
attributeFormDefault="unqualified" xmlns:imp="urn:foo">
<xs:import namespace="urn:foo"
schemaLocation="importedSchema.xsd"/>
<xs:complexType
name="myBaseType">
<xs:sequence>
<xs:element name="root"
type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType
name="Extended">
<xs:complexContent>
<xs:extension
base="myBaseType">
<xs:sequence>
<xs:element ref="imp:globalElement"
minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>
imported
schema
==========
<?xml version="1.0"
encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="qualified"
targetNamespace="urn:foo"
xmlns="urn:foo">
<xs:element
name="globalElement"
type="xs:string"/>
</xs:schema>
-----------------------------------------------------------------
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>