<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://www.example.com/Library"
    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
    xmlns:lib="http://www.example.com/Library" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:complexType name="Book">
        <xsd:sequence>
            <xsd:element name="title" type="xsd:string"/>
            <xsd:element name="pages" type="xsd:int"/>
            <xsd:element name="category" type="lib:BookCategory"/>
            <xsd:element name="author" type="xsd:anyURI" ecore:reference="lib:Writer"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="Writer">
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string"/>
            <xsd:element maxOccurs="unbounded" minOccurs="0"
                name="books" type="xsd:anyURI" ecore:reference="lib:Book"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="Library">
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string"/>
            <xsd:element maxOccurs="unbounded" minOccurs="0"
                name="books" type="lib:Book"/>
            <xsd:element maxOccurs="unbounded" minOccurs="0"
                name="writers" type="lib:Writer"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:simpleType name="BookCategory">
        <xsd:restriction base="xsd:NCName">
            <xsd:enumeration value="Mystery"/>
            <xsd:enumeration value="ScienceFiction"/>
            <xsd:enumeration value="Biography"/>
        </xsd:restriction>
    </xsd:simpleType>
</xsd:schema>
