Re: [Moderator Action] Inheritance and Identity-constraint

"Henry S. Thompson" wrote:

> > 2) I understand that the Identity-constraint is valid within a defined
> > scope. Is there anyway to
> > define the key in the example above within the "Item1" element but
> > declare somehow that
> > the scope is the whole document (something like this:)
> >
> > <element name="Item1" type="Item1Type" >
> >   <key name="Item1Key">
> >    <selector xpath="Schema/Project/Item"/>
> >    <field xpath="@Id"/>
> >   </key>
> > </element>
> >
> > <xsd:element name="Project">
> > <xsd:complexType>
> >  <xsd:sequence>
> >  <xsd:element ref="Item1" maxOccurs="unbounded"/>
> >  </xsd:sequence>
> > </xsd:complexType>
> > </xsd:element>
>
> Sure, just put the key in whatever element declaration covers the
> document element, and change the selector to
>
>   <selector xpath=".//Item"/>

I'm a bit confused here. I thought that the declaration of the key needed to be
declared in the element that defines the scope of the uniqueness. Isn't this the
case?
For example:

If I have an instance like:

<Root>
   <Item id="1">...</Item>
   <Item id="2">...</Item>
   <Item id="3">...</Item>
</Root>

If I want Item/@id to be unique within the scope of the Root element I thought
the key declaration had to come in the element declaration of the Root element:

<xsd:element name="Root" type="RootType">
   <xsd:key name="ItemKey">
      <xsd:selector xpath="Item"/>
      <xsd:field xpath="@Id"/>
   </xsd:key>
</xsd:element>

Is it really true that you can define the key within the Item element itself?
Like:

<xsd:element name="Item" type="ItemType">
   <xsd:key name="ItemKey">
      <xsd:selector xpath=".//Item"/>
      <xsd:field xpath="@Id"/>
   </xsd:key>
</xsd:element>

Are these two declarations equal and if they are how is the scope of the
uniqueness defined?

Cheers,
/Eddie

Received on Wednesday, 21 February 2001 18:19:12 UTC