- From: Henry S. Thompson <ht@cogsci.ed.ac.uk>
- Date: 01 Nov 2002 08:51:08 +0000
- To: "Alexandre Martins" <alex.martins@netc.pt>
- Cc: <xmlschema-dev@w3.org>
You can get close to what you need, but without chained keyrefs, which we don't (yet) support, not all the way. Add the following to get close: 1) to the elt decl for Database <xs:key name="table"> <xs:selector xpath="Table"/> <xs:field xpath="@id"/> </xs:key> <xs:keyref name="foreign1" refer="table"> <xs:selector xpath=".//ForeignTable"/> <xs:field xpath="@tableId"/> </xs:keyref> <xs:keyref name="foreign2" refer="field"> <xs:selector xpath=".//ForeignField"/> <xs:field xpath="@fieldId"/> </xs:keyref> 2) to the elt decl for Table <xs:key name="field"> <xs:selector xpath="Field"/> <xs:field xpath="@id"/> </xs:key> <xs:keyref name="local1" refer="field"> <xs:selector xpath=".//KeyField"/> <xs:field xpath="@fieldId"/> </xs:keyref> <xs:keyref name="local2" refer="field"> <xs:selector xpath=".//FieldRef"/> <xs:field xpath="@fieldId"/> </xs:keyref> What's imperfect about this is that it doesn't check (because it can't) that the foreign field is in the right foreign table. The real downside of this is that if their are two fields with the same name in different tables, foreign key refs to them will be spuriously identified as errors. Hope this helps, ht -- Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh W3C Fellow 1999--2002, 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/ [mail really from me _always_ has this .sig -- mail without it is forged spam]
Received on Friday, 1 November 2002 04:03:35 UTC