- From: <bugzilla@wiggum.w3.org>
- Date: Thu, 06 Sep 2007 16:30:03 +0000
- To: public-sml@w3.org
- CC:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=5024
Summary: sml:keyref example
Product: SML
Version: FPWD
Platform: PC
OS/Version: Windows XP
Status: NEW
Severity: normal
Priority: P2
Component: Core
AssignedTo: cmsmcq@w3.org
ReportedBy: sandygao@ca.ibm.com
QAContact: public-sml@w3.org
Section 4.4.3 has the following example:
<sml:key name="StudentIDisKey">
<sml:selector xpath="smlfn:deref(tns:Students/tns:Student)"/>
<sml:field xpath="tns:ID"/>
</sml:key>
<sml:keyref name="CourseStudents" refer="tns:StudentIDisKey">
<sml:selector xpath="smlfn:deref(
smlfn:deref(tns:Courses/tns:Course)/
tns:EnrolledStudents/tns:EnrolledStudent)"/>
<sml:field xpath="tns:ID"/>
</sml:keyref>
Note that "selector" in <keyref> has 2 deref()s in it. The inner one gets to
individual courses, and the outer one derefs to students. This mean that key
and keyref select from the same set of elements.
This of course makes the keyref *always* satisfied (ID of student A is the same
as ID of student A). Note that key/keyref are normally used when element A
refers to a different element B.
Would this example be more illustrative if "EnrolledStudent" wasn't a reference
but rather had an "ID" child, and the outer deref() was removed from the keyref
selector?
<sml:selector xpath="smlfn:deref(tns:Courses/tns:Course)/
tns:EnrolledStudents/tns:EnrolledStudent"/>
Received on Thursday, 6 September 2007 16:30:05 UTC