I have a schema file where I define two complex types and one of the
complex types defines an element with the type of the other complex
type. When I write an instance file the enclosed element is in an
empty namespace instead of being defined in the name space of the type
or of the enclosing element. See instance_a.xml and schema_a.xsd
below.
schema_a.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://eslug.net"
xmlns="http://eslug.net"
<xsd:complexType name="bType">
<xsd:attribute name="anotherattr" type="xsd:string" use="required" />
</xsd:complexType>
<xsd:complexType name="aType">
<xsd:sequence>
<xsd:element name="b" type="bType" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="someattr" type="xsd:string" />
</xsd:complexType>
<xsd:element name="a" type="aType" />
</xsd:schema>
instance_a.xml
<blah:a xmlns:blah="http://eslug.net" someattr="blah"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://eslug.net file:schema_a.xsd"
<!-- element b, below does not need to have the "blah:" ns prefix
inorder to be valid.
It is in the empty namespace.
-->
<b anotherattr="blah" />
</blah:a>
If I change the schema so that the bType is defined as an element
instead. Then "b" is not in the http://eslug.net namespace.
schema_b.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://eslug.net"
xmlns="http://eslug.net"
<xsd:element name="b">
<xsd:complexType >
<xsd:attribute name="anotherattr" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
<xsd:element name="a" >
<xsd:complexType >
<xsd:sequence>
<xsd:element ref="b" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="someattr" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
instance_b.xml
<blah:a xmlns:blah="http://eslug.net" someattr="blah"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://eslug.net file:schema_b.xsd"
<!-- b is now in the correct namespace. -->
<blah:b anotherattr="blah" />
</blah:a>
I would rather use schema a, but elements of "bType" only seem to show
up in the empty namespace forcing me to use schema_b.
Is this a bug or there some misunderstanding with how namespaces are
assigned to compexTypes in xml schema?
Thanks,
-Sean
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]