- From: Henry S. Thompson <ht@cogsci.ed.ac.uk>
- Date: 12 Apr 2001 18:58:23 +0100
- To: "Ravindra Jain" <ravindra@ltp.soft.net>
- Cc: <xmlschema-dev@w3.org>
"Ravindra Jain" <ravindra@ltp.soft.net> writes: > My doubt is given a keyref defined in some element, where should be the key > to which this keyref is referring ? > Should they both be in the same element, or can keyref exist in some other > element ? Some other one is OK, as long as the element(s) which define the key may appear at some depth inside it. > here is one example : > > <element name="LibraryList"> > <complexType> > <sequence> > <element ref="lib:Library" minOccurs="1" maxOccurs="1"/> > </sequence> > </complexType> > <key name="PK"> > <selector xpath="Library/GuestAuthors/Author/BookForSigning"/> > <field xpath="ISBN"/> > </key> > </element> > <element name="Library"> > <complexType> > <sequence> > <element ref="lib:BookCatalogue" minOccurs="1" > maxOccurs="1"/> > <element ref="lib:GuestAuthors" minOccurs="1" > maxOccurs="1"/> > </sequence> > </complexType> > </element> > <element name="BookCatalogue"> > <complexType> > <sequence> > <element name="Book" minOccurs="0" maxOccurs="unbounded"> > <complexType> > <sequence> > <element name="Title" type="string" minOccurs="1" > maxOccurs="1"/> > <element name="ISBN" type="string" minOccurs="1" > maxOccurs="1"/> > </sequence> > </complexType> > <keyref name="isbnRef" refer="lib:PK"> > <selector xpath=""/> > <field xpath="ISBN"/> > </keyref> > </element> > </sequence> > </complexType> > </element> > <element name="GuestAuthors"> > <complexType> > <sequence> > <element name="Author" minOccurs="0" maxOccurs="unbounded"> > <complexType> > <sequence> > <element name="Name" type="string" minOccurs="1" > maxOccurs="1"/> > <element name="BookForSigning" minOccurs="1" > maxOccurs="unbounded"> > <complexType> > <sequence> > <element name="Title" type="string" > minOccurs="1" maxOccurs="1"/> > <element name="ISBN" type="string" > minOccurs="1" maxOccurs="1"/> > </sequence> > </complexType> > </element> > </sequence> > </complexType> > </element> > </sequence> > </complexType> > </element> > > > In the above code, the keyref is being defined in "Book" element, and it is > referring to a key (PK) which is declared in the "LibraryList" element (i.e. > outside the "Book" element) > Is this valid ? No, the keyref is too low down -- move it up to the Library level. 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 Thursday, 12 April 2001 13:58:24 UTC