W3C home > Mailing lists > Public > xmlschema-dev@w3.org > February 2001

Re: [Moderator Action] Inheritance and Identity-constraint

From: Henry S. Thompson <ht@cogsci.ed.ac.uk>
Date: 21 Feb 2001 16:02:06 +0000
To: Faroukh Fekravar <fekravar@austin.apc.slb.com>
Cc: xmlschema-dev@w3.org
Message-ID: <f5b3dd8c9dt.fsf@cogsci.ed.ac.uk>
Faroukh Fekravar <fekravar@austin.apc.slb.com> writes:

> I have two questions regarding Identity-constraint which give me
> hard time!
> 
> 1) in the example below the element "Item1" can be substituted by
> element
> "Item2". I have defined a key at the root (Project) level with
> a xpath to 'Item1".
> If I substitute "Item1" by "Item2" in my instance document,
> is the key valid for "Item2" too?
> 
> <xsd:element name="Project">
>  <xsd:complexType>
>   <xsd:sequence>
>   <xsd:element ref="Item1" maxOccurs="unbounded"/>
>   </xsd:sequence>
>  </xsd:complexType>
> 
>   <key name="Item1Key">
>    <selector xpath="Item"/>
>    <field xpath="@Id"/>
>   </key>
> </xsd:element>
> 
> <element name="Item1" type="Item1Type" />
> 
>  <complexType name="Item1Type" >
>   <sequence>
>    <element name="Id" type="string" minOccurs="1" maxOccurs="1"/>
>   </sequence>
>  </complexType>
> 
> <element name="Item2" type="Item2Type" substitutionGroup="Item1" />
> 
>  <complexType name="Item2Type" >
>  <complexContent>
>   <extension base= "Item1Type">
>   <sequence>
>    <element name="Name" type="string" minOccurs="0" maxOccurs="1"/>
>   </sequence>
>   </extension>
>  </complexContent>
>  </complexType>

Nope, sorry -- your xpath (which presumably was meant to read
 <selector xpath="Item1"/>

> 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"/>

ht
-- 
  Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh
          W3C Fellow 1999--2001, part-time member of W3C Team
     2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440
	    Fax: (44) 131 650-4587, e-mail: ht@cogsci.ed.ac.uk
		     URL: http://www.ltg.ed.ac.uk/~ht/
Received on Wednesday, 21 February 2001 11:02:10 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 7 January 2015 14:55:51 UTC