Thanks for everyone's detailed answers, this is very helpful!

-Sean

On 10/20/06, Stanimir Stamenkov <[EMAIL PROTECTED]> wrote:
/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