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>

Copyright © Institute for Pipe Organ Research And Education, Inc. 2003