<?xml version="1.0"?> <!-- file : examples/cxx/tree/binary/cdr/library.xsd author : Boris Kolpackov <boris@codesynthesis.com> copyright : not copyrighted - public domain --> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xse="http://www.codesynthesis.com/xmlns/xml-schema-extension" xmlns:lib="http://www.codesynthesis.com/library" targetNamespace="http://www.codesynthesis.com/library"> <xsd:simpleType name="isbn"> <xsd:restriction base="xsd:unsignedInt"/> </xsd:simpleType> <xsd:complexType name="title"> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="lang" type="xsd:language"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <xsd:simpleType name="genre"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="romance"/> <xsd:enumeration value="fiction"/> <xsd:enumeration value="horror"/> <xsd:enumeration value="history"/> <xsd:enumeration value="philosophy"/> </xsd:restriction> </xsd:simpleType> <xsd:complexType name="person"> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="born" type="xsd:date"/> <xsd:element name="died" type="xsd:date" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="author"> <xsd:complexContent> <xsd:extension base="lib:person"> <xsd:attribute name="recommends" type="xsd:IDREF" xse:refType="lib:book"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="book"> <xsd:sequence> <xsd:element name="isbn" type="lib:isbn"/> <xsd:element name="title" type="lib:title"/> <xsd:element name="genre" type="lib:genre"/> <xsd:element name="author" type="lib:author" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="available" type="xsd:boolean" default="true"/> <xsd:attribute name="id" type="xsd:ID" use="required"/> </xsd:complexType> <xsd:complexType name="catalog"> <xsd:sequence> <xsd:element name="book" type="lib:book" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:element name="catalog" type="lib:catalog"/> </xsd:schema>