Re: local symbol spaces

Hi Oliver,

> if i have two anonymous complex type definitions. inside of these i
> declare a local element with equal names. is this allowed?

Yes, that's fine. If you declare an element inside a complex type,
rather than at the top level of the schema, then it's a local
declaration.

> do also anonymous type definitions define their own local symbol
> spaces?

They're not really defining their own local symbol spaces, but yes,
you can declare elements and attributes locally within complex types
and within model and attribute groups (xs:group and
xs:attributeGroup).

> how can such components be referenced from outside?

Within a schema, local declarations can't be referenced at all. They
can't even be referenced from within the type definition in which
they're declared. For example, if you had:

<xs:element name="a" type="x" />

<xs:element name="b">
  <xs:complexType>
    <xs:element name="a" type="y" />
    <xs:element ref="a" />
  </xs:complexType>
</xs:element>

then the reference to the element 'a' actually points to the global
declaration (with the type x) rather than the local declaration (with
the type y). In this case, this would cause an error because within a
content model, two element particles with the same name have to have
the same type.

As far as referring to these declarations from *outside the schema* is
concerned, there's an XPath-like notation for referring to them,
defined in the XML Schema Formal Description WD at
http://www.w3.org/TR/xmlschema-formal, if that's what you're after.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/

Received on Thursday, 23 May 2002 10:27:53 UTC