| Overview | The OrganSpec XML Schema | Table of Contents |
You can copy and paste the Schema from this page, or you can download the file OrganSpec.xsd (18k).
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema id="OrganSpec" targetNamespace="http://ipore.org/OrganSpec.xsd" elementFormDefault="qualified" xmlns="http://ipore.org/OrganSpec.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="Accessory">
<xs:sequence>
<xs:element name="Remark" type="Remark" />
</xs:sequence>
<xs:attribute name="control" type="NameString" />
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="label" type="NameString" />
<xs:attribute name="name" type="NameString" use="required" />
<xs:attribute name="order" type="xs:int" />
<xs:attributeGroup ref="FullHistory" />
</xs:complexType>
<xs:complexType name="Blower">
<xs:sequence>
<xs:element name="Remark" type="Remark" />
</xs:sequence>
<xs:attribute name="cfm" type="xs:decimal" />
<xs:attribute name="hp" type="xs:decimal" />
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="manufacturer" type="NameString" />
<xs:attribute name="serial" type="NameString" />
<xs:attribute name="rpm" type="xs:decimal" />
<xs:attribute name="voltage" type="NameString" />
<xs:attributeGroup ref="FullHistory" />
</xs:complexType>
<xs:complexType name="Borrowed">
<xs:sequence>
<xs:element name="Remark" type="Remark" />
</xs:sequence>
<xs:attribute name="compass" type="NameString" use="required" />
<xs:attribute name="from" type="xs:IDREF" use="required" />
</xs:complexType>
<xs:complexType name="Builder">
<xs:sequence>
<xs:element name="Remark" type="Remark" />
</xs:sequence>
<xs:attribute name="city" type="NameString" />
<xs:attribute name="country" type="NameString" />
<xs:attribute name="name" type="NameString" use="required" />
<xs:attribute name="opus" type="NameString" />
<xs:attribute name="state" type="NameString" />
<xs:attribute name="id" type="xs:ID" />
</xs:complexType>
<xs:complexType name="Case">
<xs:sequence>
<xs:element name="Remark" type="Remark" />
</xs:sequence>
<xs:attribute name="id" type="xs:ID" />
<xs:attributeGroup ref="FullHistory" />
</xs:complexType>
<xs:complexType name="CatalogID">
<xs:sequence>
<xs:element name="Remark" type="Remark" />
</xs:sequence>
<xs:attribute name="catalog" type="NameString" use="required" />
<xs:attribute name="id" type="NameString" use="required" />
</xs:complexType>
<xs:complexType name="Chamber">
<xs:sequence>
<xs:choice>
<xs:element name="Accessory" type="Accessory" />
<xs:element name="Division" type="Division" />
<xs:element name="Keyboard" type="Keyboard" />
<xs:element name="Pressure" type="Pressure" />
<xs:element name="Rank" type="Rank" />
<xs:element name="Remark" type="Remark" />
<xs:element name="Stop" type="Stop" />
<xs:element name="Trap" type="Trap" />
</xs:choice>
</xs:sequence>
<xs:attribute name="enclosed" type="xs:boolean" />
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="name" type="NameString" />
<xs:attributeGroup ref="FullHistory" />
</xs:complexType>
<xs:simpleType name="CircaDate">
<xs:annotation>
<xs:documentation>
This is a date of the form ['c']YYYY[MM[DD]]; that is,
a year with optional month and day, and an optional 'c'
for 'circa' to indicate an approximate date.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="c?[0-9]{4}(/[0-9]{1,2}(/[0-9]{1,2})?)?" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Composition">
<xs:sequence>
<xs:choice>
<xs:element name="MixtureRank" type="MixtureRank" />
<xs:element name="Remark" type="Remark" />
</xs:choice>
</xs:sequence>
<xs:attribute name="builder" type="xs:IDREF" />
<xs:attribute name="date" type="CircaDate" />
</xs:complexType>
<xs:complexType name="Console">
<xs:sequence>
<xs:choice>
<xs:element name="Accessory" type="Accessory" />
<xs:element name="Coupler" type="Coupler" />
<xs:element name="Division" type="Division" />
<xs:element name="KeyAction" type="KeyAction" />
<xs:element name="Keyboard" type="Keyboard" />
<xs:element name="Remark" type="Remark" />
<xs:element name="Stop" type="Stop" />
<xs:element name="StopAction" type="StopAction" />
<xs:element name="SwellPedal" type="SwellPedal" />
</xs:choice>
</xs:sequence>
<xs:attribute name="couplers" type="NameString" />
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="stops" type="NameString" />
<xs:attributeGroup ref="FullHistory" />
</xs:complexType>
<xs:complexType name="Coupler">
<xs:sequence>
<xs:element name="Remark" type="Remark" />
</xs:sequence>
<xs:attribute name="control" type="NameString" />
<xs:attribute name="from" type="xs:IDREF" use="required" />
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="label" type="NameString" />
<xs:attribute name="order" type="xs:int" />
<xs:attribute name="pitch" type="Rational" />
<xs:attribute name="to" type="xs:IDREF" />
<xs:attributeGroup ref="FullHistory" />
</xs:complexType>
<xs:complexType name="Division">
<xs:sequence>
<xs:choice>
<xs:element name="Accessory" type="Accessory" />
<xs:element name="Chamber" type="Chamber" />
<xs:element name="Coupler" type="Coupler" />
<xs:element name="KeyAction" type="KeyAction" />
<xs:element name="Pressure" type="Pressure" />
<xs:element name="Rank" type="Rank" />
<xs:element name="Remark" type="Remark" />
<xs:element name="Stop" type="Stop" />
<xs:element name="StopAction" type="StopAction" />
<xs:element name="Trap" type="Trap" />
</xs:choice>
</xs:sequence>
<xs:attribute name="compass" type="NameString" />
<xs:attribute name="enclosed" type="xs:boolean" />
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="keyboard" type="xs:IDREF" />
<xs:attribute name="name" type="NameString" />
<xs:attribute name="notes" type="xs:int" />
<xs:attribute name="order" type="xs:int" />
<xs:attributeGroup ref="FullHistory" />
</xs:complexType>
<xs:attributeGroup name="FullHistory">
<xs:attribute name="dateInstalled" type="CircaDate" />
<xs:attribute name="dateRemoved" type="CircaDate" />
<xs:attribute name="installedBy" type="xs:IDREF" />
<xs:attribute name="removedBy" type="xs:IDREF" />
</xs:attributeGroup>
<xs:attributeGroup name="HalfHistory">
<xs:attribute name="dateInstalled" type="CircaDate" />
<xs:attribute name="installedBy" type="xs:IDREF" />
</xs:attributeGroup>
<xs:complexType name="History">
<xs:sequence>
<xs:element name="Remark" type="Remark" />
</xs:sequence>
<xs:attribute name="end" type="CircaDate" />
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="start" type="CircaDate" use="required" />
</xs:complexType>
<xs:complexType name="KeyAction">
<xs:sequence>
<xs:element name="Remark" type="Remark" />
</xs:sequence>
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="type" type="NameString" use="required" />
<xs:attributeGroup ref="HalfHistory" />
</xs:complexType>
<xs:complexType name="Keyboard">
<xs:sequence>
<xs:choice>
<xs:element name="Accessory" type="Accessory" />
<xs:element name="Chamber" type="Chamber" />
<xs:element name="Coupler" type="Coupler" />
<xs:element name="Division" type="Division" />
<xs:element name="KeyAction" type="KeyAction" />
<xs:element name="Pressure" type="Pressure" />
<xs:element name="Remark" type="Remark" />
<xs:element name="Stop" type="Stop" />
<xs:element name="StopAction" type="StopAction" />
<xs:element name="Trap" type="Trap" />
</xs:choice>
</xs:sequence>
<xs:attribute name="compass" type="NameString" />
<xs:attribute name="divided" type="NameString" />
<xs:attribute name="enclosed" type="xs:boolean" />
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="name" type="NameString" />
<xs:attribute name="notes" type="xs:int" />
<xs:attribute name="position" type="KeyboardPosition" />
<xs:attributeGroup ref="FullHistory" />
</xs:complexType>
<xs:simpleType name="KeyboardPosition">
<xs:restriction base="xs:string">
<xs:enumeration value="1" />
<xs:enumeration value="2" />
<xs:enumeration value="3" />
<xs:enumeration value="4" />
<xs:enumeration value="5" />
<xs:enumeration value="6" />
<xs:enumeration value="7" />
<xs:enumeration value="P" />
<xs:enumeration value="P2" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Location">
<xs:attribute name="address" type="NameString" />
<xs:attribute name="city" type="NameString" use="required" />
<xs:attribute name="country" type="NameString" use="required" />
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="name" type="NameString" use="required" />
<xs:attribute name="state" type="NameString" />
<xs:attribute name="type" type="LocationType" use="required" />
<xs:attributeGroup ref="FullHistory" />
</xs:complexType>
<xs:simpleType name="LocationType">
<xs:restriction base="xs:string">
<xs:enumeration value="church" />
<xs:enumeration value="concert" />
<xs:enumeration value="other" />
<xs:enumeration value="practice" />
<xs:enumeration value="residence" />
<xs:enumeration value="theatre" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="MixtureRank">
<xs:sequence>
<xs:choice>
<xs:element name="Remark" type="Remark" />
<xs:element name="Scale" type="Scale" />
</xs:choice>
</xs:sequence>
<xs:attribute name="from" type="NameString" use="required" />
<xs:attribute name="pitch" type="Rational" use="required" />
<xs:attribute name="to" type="NameString" use="required" />
</xs:complexType>
<xs:simpleType name="NameString">
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Organ">
<xs:sequence>
<xs:choice>
<xs:element name="Accessory" type="Accessory" />
<xs:element name="Blower" type="Blower" />
<xs:element name="Builder" type="Builder" />
<xs:element name="Case" type="Case" />
<xs:element name="CatalogID" type="CatalogID" />
<xs:element name="Chamber" type="Chamber" />
<xs:element name="Console" type="Console" />
<xs:element name="Coupler" type="Coupler" />
<xs:element name="Division" type="Division" />
<xs:element name="History" type="History" />
<xs:element name="KeyAction" type="KeyAction" />
<xs:element name="Keyboard" type="Keyboard" />
<xs:element name="Location" type="Location" />
<xs:element name="Pressure" type="Pressure" />
<xs:element name="Rank" type="Rank" />
<xs:element name="Recording" type="Recording" />
<xs:element name="Relay" type="Relay" />
<xs:element name="Remark" type="Remark" />
<xs:element name="Revision" type="Revision" />
<xs:element name="Source" type="Source" />
<xs:element name="StopAction" type="StopAction" />
<xs:element name="SwellPedal" type="SwellPedal" />
<xs:element name="Trap" type="Trap" />
<xs:element name="Tuning" type="Tuning" />
</xs:choice>
</xs:sequence>
<xs:attribute name="version" type="xs:string" use="required" />
</xs:complexType>
<xs:element name="Organ" type="Organ" />
<xs:complexType name="Pressure">
<xs:sequence>
<xs:element name="Remark" type="Remark" />
</xs:sequence>
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="units" type="PressureUnits" use="required" />
<xs:attribute name="value" type="xs:decimal" use="required" />
<xs:attributeGroup ref="HalfHistory" />
</xs:complexType>
<xs:simpleType name="PressureUnits">
<xs:restriction base="xs:string">
<xs:enumeration value="cm" />
<xs:enumeration value="in" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Rank">
<xs:sequence>
<xs:choice>
<xs:element name="Pressure" type="Pressure" />
<xs:element name="Remark" type="Remark" />
<xs:element name="Scale" type="Scale" />
</xs:choice>
</xs:sequence>
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="maker" type="xs:IDREF" />
<xs:attribute name="material" type="NameString" />
<xs:attribute name="name" type="NameString" use="required" />
<xs:attribute name="pipes" type="xs:int" />
<xs:attribute name="pitch" type="Rational" />
<xs:attribute name="ranks" type="NameString" />
<xs:attribute name="type" type="RankType" />
<xs:attributeGroup ref="FullHistory" />
</xs:complexType>
<xs:simpleType name="RankType">
<xs:restriction base="xs:string">
<xs:enumeration value="flue" />
<xs:enumeration value="reed" />
<xs:enumeration value="diaphone" />
<xs:enumeration value="percussion" />
<xs:enumeration value="other" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Rational">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]+/[0-9]+" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Recording">
<xs:sequence>
<xs:element name="Remark" type="Remark" />
</xs:sequence>
<xs:attribute name="artist" type="NameString" />
<xs:attribute name="date" type="xs:date" />
<xs:attribute name="format" type="NameString" />
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="label" type="NameString" use="required" />
<xs:attribute name="title" type="NameString" use="required" />
</xs:complexType>
<xs:complexType name="Relay">
<xs:sequence>
<xs:element name="Remark" type="Remark" />
</xs:sequence>
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="manufacturer" type="NameString" />
<xs:attribute name="type" type="NameString" />
<xs:attributeGroup ref="FullHistory" />
</xs:complexType>
<xs:complexType name="Remark">
<xs:sequence>
<xs:any />
</xs:sequence>
<xs:attribute name="language" type="xs:language" use="required" />
<xs:attribute name="date" type="xs:date" use="required" />
<xs:attribute name="author" type="NameString" use="required" />
</xs:complexType>
<xs:complexType name="Revision">
<xs:sequence>
<xs:any />
</xs:sequence>
<xs:attribute name="by" type="NameString" use="required" />
<xs:attribute name="date" type="xs:date" use="required" />
</xs:complexType>
<xs:complexType name="Scale">
<xs:sequence>
<xs:element name="Remark" type="Remark" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="Source">
<xs:sequence>
<xs:element name="Remark" type="Remark" />
</xs:sequence>
<xs:attribute name="artist" type="NameString" />
<xs:attribute name="author" type="NameString" />
<xs:attribute name="date" type="xs:date" />
<xs:attribute name="isbn" type="NameString" />
<xs:attribute name="page" type="NameString" />
<xs:attribute name="publisher" type="NameString" />
<xs:attribute name="title" type="NameString" />
<xs:attribute name="type" type="SourceType" use="required" />
<xs:attribute name="url" type="NameString" />
</xs:complexType>
<xs:simpleType name="SourceType">
<xs:restriction base="xs:string">
<xs:enumeration value="book" />
<xs:enumeration value="other" />
<xs:enumeration value="pamphlet" />
<xs:enumeration value="periodical" />
<xs:enumeration value="personal" />
<xs:enumeration value="recording" />
<xs:enumeration value="web" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Stop">
<xs:sequence>
<xs:choice>
<xs:element name="Borrowed" type="Borrowed" />
<xs:element name="Composition" type="Composition" />
<xs:element name="Pressure" type="Pressure" />
<xs:element name="Remark" type="Remark" />
<xs:element name="Scale" type="Scale" />
</xs:choice>
</xs:sequence>
<xs:attribute name="borrowed" type="xs:IDREF" />
<xs:attribute name="compass" type="NameString" />
<xs:attribute name="control" type="NameString" />
<xs:attribute name="doubleDraw" type="xs:IDREF" />
<xs:attribute name="extension" type="xs:IDREF" />
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="label" type="NameString" />
<xs:attribute name="maker" type="xs:IDREF" />
<xs:attribute name="material" type="NameString" />
<xs:attribute name="name" type="NameString" use="required" />
<xs:attribute name="order" type="xs:int" />
<xs:attribute name="pipes" type="xs:int" />
<xs:attribute name="pitch" type="Rational" />
<xs:attribute name="prepared" type="xs:boolean" />
<xs:attribute name="rank" type="xs:IDREF" />
<xs:attribute name="ranks" type="NameString" />
<xs:attribute name="type" type="RankType" />
<xs:attributeGroup ref="FullHistory" />
</xs:complexType>
<xs:complexType name="StopAction">
<xs:sequence>
<xs:element name="Remark" type="Remark" />
</xs:sequence>
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="type" type="NameString" use="required" />
<xs:attributeGroup ref="HalfHistory" />
</xs:complexType>
<xs:complexType name="SwellPedal">
<xs:sequence>
<xs:element name="Remark" type="Remark" />
</xs:sequence>
<xs:attribute name="chamber" type="xs:IDREF" use="required" />
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="label" type="NameString" />
<xs:attribute name="order" type="xs:int" />
<xs:attributeGroup ref="FullHistory" />
</xs:complexType>
<xs:complexType name="Trap">
<xs:sequence>
<xs:element name="Remark" type="Remark" />
</xs:sequence>
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="label" type="NameString" />
<xs:attribute name="maker" type="xs:IDREF" />
<xs:attribute name="name" type="NameString" use="required" />
<xs:attributeGroup ref="FullHistory" />
</xs:complexType>
<xs:complexType name="Tuning">
<xs:sequence>
<xs:element name="Remark" type="Remark" />
</xs:sequence>
<xs:attribute name="freqA" type="xs:decimal" />
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="temperament" type="NameString" />
<xs:attributeGroup ref="HalfHistory" />
</xs:complexType>
</xs:schema>