/Sean McCauliff/:

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.
[...]
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.

Element "b" _is_ in the "http://eslug.net"; namespace - all top-level/global components have the 'targetNamespace' of the schema they are defined in.

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>
[...]
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?

You may take a look at "3 Advanced Concepts I: Namespaces, Schemas & Qualification" <http://www.w3.org/TR/xmlschema-0/#NS>, "3.1 Target Namespaces & Unqualified Locals", "3.2 Qualified Locals". So as far as I understand you just need to set |elementFormDefault="qualified"| on the <schema> element.

You may also see how the {target namespace} of an element declaration (for example) is determined from its representation <http://www.w3.org/TR/xmlschema-1/#element-element>:

If the <element> element information item has <schema> as its parent, the corresponding schema component is as follows:

{target namespace} The ·actual value· of the targetNamespace [attribute] of the parent <schema> element information item, or ·absent· if there is none.
[...]

otherwise if the <element> element information item has <complexType> or <group> as an ancestor and the ref [attribute] is absent...

{target namespace} If form is present and its ·actual value· is qualified, or if form is absent and the ·actual value· of elementFormDefault on the <schema> ancestor is qualified, then the ·actual value· of the targetNamespace [attribute] of the parent <schema> element information item, or ·absent· if there is none, otherwise ·absent·.

--
Stanimir

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to