XML/XML Schema/keyref

Материал из Web эксперт
Перейти к: навигация, поиск

xsd:keyref

   <source lang="xml">

File: Data.xml <?xml version="1.0"?> <Course xmlns="http://www.wbex.ru"

              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation=
                             "http://www.wbex.ru
                              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.wbex.ru"
           xmlns="http://www.wbex.ru"
           xmlns:lib="http://www.wbex.ru"
           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>

</source>