XML/XML Schema/keyref

Материал из Web эксперт
Версия от 08:26, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

xsd:keyref

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>