xsd:keyref
File: Data.xml <?xml version="1.0"?> <Course xmlns="http://www.java2s.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://www.java2s.com Schema.xsd"> <Books> <Book> <ISBN>1-111-11111-1</ISBN> </Book> <Book> <ISBN>2-222-22222-2</ISBN> </Book> </Books> <GuestAuthors> <Author> <BookForSigning> <ISBN>2-222-22222-2</ISBN> </BookForSigning> </Author> </GuestAuthors> </Course> File: Schema.xsd <?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.java2s.com" xmlns="http://www.java2s.com" xmlns:lib="http://www.java2s.com" elementFormDefault="qualified"> <xsd:element name="Book"> <xsd:complexType> <xsd:sequence> <xsd:element name="ISBN" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="GuestAuthors"> <xsd:complexType> <xsd:sequence> <xsd:element name="Author" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element name="BookForSigning" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element name="ISBN" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="Course"> <xsd:complexType> <xsd:sequence> <xsd:element name="Books"> <xsd:complexType> <xsd:sequence> <xsd:element ref="Book" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element ref="GuestAuthors"/> </xsd:sequence> </xsd:complexType> <xsd:key name="PK"> <xsd:selector xpath="lib:Books/lib:Book"/> <xsd:field xpath="lib:ISBN"/> </xsd:key> <xsd:keyref name="isbnRef" refer="PK"> <xsd:selector xpath="lib:GuestAuthors/lib:Author/lib:BookForSigning"/> <xsd:field xpath="lib:ISBN"/> </xsd:keyref> </xsd:element> </xsd:schema>