<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://objects.dlese.org" xmlns="http://objects.dlese.org" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.1.01">
	<xsd:annotation>
		<xsd:documentation>***  SCHEMA EXPLANATION  ****</xsd:documentation>
		<xsd:documentation>This is the MAIN schema for the Objects metadata framework. This MAIN schema calls other VOCABULARY schemas to create the metadata framework structure. </xsd:documentation>
	</xsd:annotation>
	<xsd:annotation>
		<xsd:documentation>***  NAMESPACES  ********</xsd:documentation>
		<xsd:documentation>The chameleon approach to namespace conventions is used in the VOCABULARY schemas. Only this MAIN schema has a target namespace. The VOCABULARY schemas do not have target namespaces (allows for plug-n-play components and vocabularies).</xsd:documentation>
	</xsd:annotation>
	<xsd:annotation>
		<xsd:documentation>***  ROOT ELEMENT  *****  The root element of this schema is news-oppsRecord.</xsd:documentation>
	</xsd:annotation>
	<xsd:annotation>
		<xsd:documentation>***  SCHEMA DEVELOPMENT  ***** </xsd:documentation>      
		<xsd:documentation>The Venetian Blind approach is used for this MAIN schema and all VOCABULARY schemas. Elements within all schemas are used for fields (quantities) of the metadata framework. When elements have controlled vocabularies that are hierarchal, the vocabularies appear in the element as a colon separated text string.	Attributes are used when additional information is required for the content of an element or if two pieces of information are required. </xsd:documentation>
	</xsd:annotation>
	<xsd:annotation>
		<xsd:documentation>*** DEFINING COMPLEX and SIMPLE TYPES  *******    </xsd:documentation>
		<xsd:documentation>Since the metadata framework uses Venetian Blind schema development, most metadata fields are defined as complex or simple types. This improves re-use for other frameworks developed at the DLESE Program Center (DPC) or within the DLESE community. As such, each schema has a complex and simple type section. Built-in simple types are defined when an elment is defined. Derived simple types are used when a metadata field appears more than once or if restrictions are needed on element content. </xsd:documentation>
	</xsd:annotation>
	<xsd:annotation>
		<xsd:documentation>*** LICENSE INFORMATION *****
		Copyright 2002, 2003 DLESE Program Center
		University Corporation for Atmospheric Research (UCAR)
		P.O. Box 3000, Boulder, CO 80307, United States of America
		email: support@dlese.org.</xsd:documentation>
	<xsd:documentation>These schemas are free software; you can redistribute them and/or modify them under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.  These schemas are distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this project; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</xsd:documentation>
	</xsd:annotation>
	<xsd:annotation>
		<xsd:documentation>*****  CATEGORY schemas to include  *************************</xsd:documentation>
	</xsd:annotation>
	<xsd:annotation>
		<xsd:documentation>*****  VOCABULARY schemas to include  *************************</xsd:documentation>
	</xsd:annotation>
	<xsd:include schemaLocation="vocabs/libraryArea.xsd"/>
	<xsd:include schemaLocation="vocabs/nameTitle.xsd"/>
	<xsd:include schemaLocation="vocabs/role.xsd"/>
	<xsd:include schemaLocation="vocabs/topic.xsd"/>
	<xsd:include schemaLocation="vocabs/typeOfDate.xsd"/>
	<xsd:include schemaLocation="vocabs/typeOfRecord.xsd"/>
	<xsd:annotation>
		<xsd:documentation>*****  ROOT element  *************************</xsd:documentation>
	</xsd:annotation>
	<xsd:element name="objectsRecord" type="objectsType"/>
	<xsd:annotation>
		<xsd:documentation>faq-glossaryType is complex</xsd:documentation>
	</xsd:annotation>
	<xsd:annotation>
		<xsd:documentation>*****  Other Elements  *************************</xsd:documentation>
	</xsd:annotation>
	<xsd:annotation>
		<xsd:documentation>*****  Complex Types  (alpha order) *************************</xsd:documentation>
	</xsd:annotation>
	<xsd:complexType name="contributorType">
		<xsd:annotation>
			<xsd:documentation>*****  contributorType  *************************</xsd:documentation>
			<xsd:documentation>organization is complex - the information about an institution</xsd:documentation>				
			<xsd:documentation>person is complex - the information about a person</xsd:documentation>				
			<xsd:documentation>role is simple; see role.xsd; the function performed by the contributor</xsd:documentation>
			<xsd:documentation>display is boolean - indication if contributor information can be displayed</xsd:documentation>
			<xsd:documentation>date is simple - the date of the contributor's contribution</xsd:documentation>			
		</xsd:annotation>
		<xsd:choice>
			<xsd:element name="organization" type="organizationType"/>
			<xsd:element name="person" type="personType"/>
		</xsd:choice>
		<xsd:attribute name="role" type="roleType" use="required"/>
		<xsd:attribute name="share" type="xsd:boolean" use="optional" default="false"/>
		<xsd:attribute name="date" type="union.dateType" use="optional"/> 
	</xsd:complexType>
	<xsd:complexType name="contributorsType">
		<xsd:annotation>
			<xsd:documentation>*****  contributorsType  *************************</xsd:documentation>
			<xsd:documentation>contributor is complex - either an organization or person who has provided information about or cataloged the object</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="contributor" type="contributorType" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="dateType">
		<xsd:annotation>
			<xsd:documentation>*****  dateType  *************************</xsd:documentation>
			<xsd:documentation>type is simple; see typeOfDate.xsd - a description for the kind of date</xsd:documentation>
		</xsd:annotation>
		<xsd:simpleContent>
			<xsd:extension base="union.dateType">
				<xsd:attribute name="type" type="typeOfDateType" use="required"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="datesType">
		<xsd:annotation>
			<xsd:documentation>*****  datesType  *************************</xsd:documentation>
			<xsd:documentation>date is complex - a date associated with some aspect of the object or metadata record</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="date" type="dateType" minOccurs="1" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="objectsType">
		<xsd:annotation>
			<xsd:documentation>*****  objectsType  *************************</xsd:documentation>
			<xsd:documentation>recordID is complex - the catalog record number</xsd:documentation>
			<xsd:documentation>libraryAreas is complex - the broad area of DLESE to which the cataloged object belongs</xsd:documentation>
			<xsd:documentation>topics is complex - the more specific area of DLESE to which the cataloged object belongs</xsd:documentation>
			<xsd:documentation>description is complex - a narrative using HTML that is about the cataloged object</xsd:documentation>
			<xsd:documentation>moreInfoEmail is simple - the email address to contact for more information about the cataloged object</xsd:documentation>
			<xsd:documentation>relations is complex - the associations to another object through a catalog record number ONLY</xsd:documentation>
			<xsd:documentation>dates is complex - a date associated with some aspect of the object or metadata record</xsd:documentation>
			<xsd:documentation>contributors is complex - either organizations or persons who provide information about or catalog the object</xsd:documentation>
		</xsd:annotation>
		<xsd:all>
			<xsd:element name="recordID" type="recordIDType" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="libraryAreas" type="libraryAreasType" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="topics" type="topicsType" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="object" type="XHTMLType" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="description" type="XHTMLType" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="moreInfoEmail" type="stringTextType" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="relations" type="relationsType" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="dates" type="datesType" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="contributors" type="contributorsType" minOccurs="1" maxOccurs="1"/>
		</xsd:all>
	</xsd:complexType>
	<xsd:complexType name="libraryAreasType">
		<xsd:annotation>
			<xsd:documentation>*****  libraryAreasType  *************************</xsd:documentation>
			<xsd:documentation>libraryArea is simple; see libraryArea.xsd - the broad area of DLESE to which the cataloged object belongs</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="libraryArea" type="libraryAreaType" minOccurs="1" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="organizationType">
		<xsd:annotation>
			<xsd:documentation>*****  organizationType  *************************</xsd:documentation>
			<xsd:documentation>instName is built-in - an organization's name</xsd:documentation>				
			<xsd:documentation>instDept is simple - an organization's department name</xsd:documentation>				
			<xsd:documentation>instPosition is simple - an aribitrary job positions in the organization (e.g. librarian)</xsd:documentation>				
			<xsd:documentation>instUrl is simple - the organization web address</xsd:documentation>				
			<xsd:documentation>instEmail is simple - the organization's email address</xsd:documentation>				
			<xsd:documentation>contactID is simple - not used - an internal DPC tracking number to the contributor</xsd:documentation>				
		</xsd:annotation>
		<xsd:all>
			<xsd:element name="instName" type="xsd:string" minOccurs="1" maxOccurs="1" /> 
			<xsd:element name="instDept" type="stringTextType" minOccurs="0" maxOccurs="1" /> 
			<xsd:element name="instPosition" type="stringTextType" minOccurs="0" maxOccurs="1" /> 
			<xsd:element name="instUrl" type="stringTextType" minOccurs="0" maxOccurs="1" /> 
			<xsd:element name="instEmail" type="stringTextType" minOccurs="0" maxOccurs="1" /> 
			<xsd:element name="contactID" type="stringTextType" minOccurs="0" maxOccurs="1" /> 
		</xsd:all>
	</xsd:complexType>
	<xsd:complexType name="personType">
		<xsd:annotation>
			<xsd:documentation>*****  personType  *************************</xsd:documentation>
			<xsd:documentation>nameTitle is simple; see nameTitle.xsd; the salutation of a person contributor</xsd:documentation>
			<xsd:documentation>nameFirst is built-in - the first name of a person contributor</xsd:documentation>
			<xsd:documentation>nameMiddle is built-in - the middle name of a person contributor</xsd:documentation>
			<xsd:documentation>nameLast is built-in - the last name of a person contributor</xsd:documentation>
			<xsd:documentation>instName is built-in - an organization's name</xsd:documentation>				
			<xsd:documentation>instDept is simple - an organization's department name</xsd:documentation>				
			<xsd:documentation>emailPrimary is simple - the main email address for a person contributor</xsd:documentation>
			<xsd:documentation>emailAlt is simple - the alternate email address for a person contributor</xsd:documentation>
			<xsd:documentation>contactID is simple - not used - an internal DPC tracking number to the contributor</xsd:documentation>				
		</xsd:annotation>
		<xsd:all>
			<xsd:element name="nameTitle" type="nameTitleType" minOccurs="0" maxOccurs="1" /> 
			<xsd:element name="nameFirst" type="xsd:string" minOccurs="1" maxOccurs="1" /> 
			<xsd:element name="nameMiddle" type="xsd:string" minOccurs="0" maxOccurs="1" /> 
			<xsd:element name="nameLast" type="xsd:string" minOccurs="1" maxOccurs="1" /> 
			<xsd:element name="instName" type="xsd:string" minOccurs="1" maxOccurs="1" /> 
			<xsd:element name="instDept" type="xsd:string" minOccurs="0" maxOccurs="1" /> 
			<xsd:element name="emailPrimary" type="stringTextType" minOccurs="1" maxOccurs="1" /> 
			<xsd:element name="emailAlt" type="stringTextType" minOccurs="0" maxOccurs="1" /> 
			<xsd:element name="contactID" type="stringTextType" minOccurs="0" maxOccurs="1" /> 
		</xsd:all>
	</xsd:complexType>
	<xsd:complexType name="recordIDType">
		<xsd:annotation>
			<xsd:documentation>*****  recordIDType  *************************</xsd:documentation>
			<xsd:documentation>type is simple; see typeOfRecord.xsd; the kind of metadata record (object) to be cataloged</xsd:documentation>
		</xsd:annotation>
		<xsd:simpleContent>
			<xsd:extension base="stringTextType">
				<xsd:attribute name="type" type="typeOfRecordType" use="required"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="relationsType">
		<xsd:annotation>
			<xsd:documentation>*****  relationsType  *************************</xsd:documentation>
			<xsd:documentation>relation is simple - the association to another object through a catalog record number ONLY</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="relation" type="stringTextType" minOccurs="1" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="topicsType">
		<xsd:annotation>
			<xsd:documentation>*****  topicsType  *************************</xsd:documentation>
			<xsd:documentation>topics is simple; see topic.xsd - the more specific area of DLESE to which the cataloged object belongs</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="topic" type="union.topicType" minOccurs="1" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="XHTMLType">
		<xsd:annotation>
			<xsd:documentation>*****  XHTMLType  *************************</xsd:documentation>
			<xsd:documentation>uses the W3C namespace in order to allow HTML tags to be child elments on the objects and description elements</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:any namespace="http://www.w3.org/1999/xhtml" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
		</xsd:sequence>
		<xsd:anyAttribute namespace="http://www.w3.org/1999/xhtml"/>
	</xsd:complexType>






	<xsd:annotation>
		<xsd:documentation>***** Simple Types (alpha order) *************************</xsd:documentation>
	</xsd:annotation>
	<xsd:simpleType name="stringTextType">
		<xsd:annotation>
			<xsd:documentation>*****  stringTextType  *************************</xsd:documentation>
			<xsd:documentation>Use this patterned string to ensure that a null tag is not valid string content. Note: that xsd:string allows content to be null even if the element is required.</xsd:documentation>		
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="\s*.[\S\s]*"/> <!-- allows leading blank lines -->
			<!-- 		<xsd:pattern value=".[\S\s]*"/>  does not allow leading blank lines -->
			<!--			<xsd:pattern value="(.)+"/> does not allow carriage returns -->
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="union.dateType">
		<xsd:annotation>
			<xsd:documentation>*****  union.dateType  *************************</xsd:documentation>
			<xsd:documentation>Allows for a multitude of date formats to use for the date element. Uses all built-in types.</xsd:documentation>
		</xsd:annotation>
		<xsd:union memberTypes="xsd:date xsd:gYearMonth xsd:gYear xsd:dateTime"/>
	</xsd:simpleType>
	<xsd:simpleType name="union.topicType">
		<xsd:annotation>
			<xsd:documentation>*****  union.topicType  *************************</xsd:documentation>
			<xsd:documentation>Allows for the element topic to be free text but also has a vocabulary to help generat content</xsd:documentation>
			<xsd:documentation>For topicType see topic.xsd</xsd:documentation>
		</xsd:annotation>
		<xsd:union memberTypes="topicType stringTextType"/>
	</xsd:simpleType>
</xsd:schema>

