<?xml version="1.0" encoding="UTF-8"?>
<!--  $Id: nsdl_anno.xsd,v 1.5 2010/05/25 17:35:13 ginger Exp $--> 
<xs:schema 
targetNamespace="http://ns.nsdl.org/ncs/nsdl_anno" 
xmlns="http://ns.nsdl.org/ncs/nsdl_anno" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
elementFormDefault="qualified" 
attributeFormDefault="unqualified" 
version="1.00">
	<xs:annotation>
		<xs:documentation>********************************************</xs:documentation>
		<xs:documentation>***** SCHEMA DEVELOPMENT  *****</xs:documentation>
		<xs:documentation>********************************************</xs:documentation>
		<xs:documentation>Created: 2010-04-12</xs:documentation>
		<xs:documentation>Modified: 2010-05-25</xs:documentation>
		<xs:documentation>Author: Katy Ginger, University Corporation for Atmospheric Research (UCAR), ginger@ucar.edu</xs:documentation>
		<xs:documentation>Purpose: support annotations of learning resources with the ability to capture such information as educational standards, comments, teaching tips, reviews, structured text, tagging context. This annotation metadata framework as captures who said.</xs:documentation>
		<xs:documentation>Copyright for this file: See LICENSE AND COPYRIGHT at the end of this file.</xs:documentation>
	</xs:annotation>
		
	<xs:annotation>
		<xs:documentation>******************************************************</xs:documentation>
		<xs:documentation>***** INCLUDED/ IMPORTED SCHEMAS  *****</xs:documentation>
		<xs:documentation>******************************************************</xs:documentation>
	</xs:annotation>
	<xs:include schemaLocation="vocabs/alignment.xsd"/>
	<xs:include schemaLocation="vocabs/authority.xsd"/>
	<xs:include schemaLocation="vocabs/idType.xsd"/>
	<xs:include schemaLocation="vocabs/nameTitle.xsd"/>
	<xs:include schemaLocation="vocabs/rating.xsd"/>
	<xs:include schemaLocation="vocabs/roleAnnotation.xsd"/>
	<xs:include schemaLocation="vocabs/type.xsd"/>
	<xs:include schemaLocation="vocabs/userIDtype.xsd"/>
	<xs:include schemaLocation="vocabs/idStandardType.xsd"/>

	<xs:annotation>
		<xs:documentation>***************************************************</xs:documentation>
		<xs:documentation>*****  COMPLEX TYPES (alpha order)   *****</xs:documentation>
		<xs:documentation>***************************************************</xs:documentation>
		<xs:documentation>annotationRecordType - is the ROOT type</xs:documentation>
		<xs:documentation>annotatedIDType - is part of annotationRecordType</xs:documentation>
		<xs:documentation>ASNstandardType - is part of annotationRecordType</xs:documentation>
		<xs:documentation>contributorType - part of contributorsType</xs:documentation>		
		<xs:documentation>contributorsType - part annotationType</xs:documentation>		
		<xs:documentation>dateType - part of annotationType</xs:documentation>		
		<xs:documentation>idElementType - is part of annotationRecordType</xs:documentation>
		<xs:documentation>organizationType - part of contributorType</xs:documentation>		
		<xs:documentation>outlineType - part of structuredOutlineType</xs:documentation>		
		<xs:documentation>personType - part of contributorType</xs:documentation>		
		<xs:documentation>standardIDtType - is part of annotationRecordType</xs:documentation>
		<xs:documentation>standardTextType - is part of annotationRecordType</xs:documentation>
		<xs:documentation>standardURLType - is part of annotationRecordType</xs:documentation>
		<xs:documentation>structuredOutlineType - is part of annotationRecordType</xs:documentation>
		<xs:documentation>textElementType - is part of annotationRecordType</xs:documentation>
		<xs:documentation>urlElementType - is part of annotationRecordType</xs:documentation>
		<xs:documentation>userIDType - is part of personType and organizationType</xs:documentation>
	</xs:annotation>

	<xs:annotation>
		<xs:documentation>*********************************</xs:documentation>
		<xs:documentation>*****  ROOT ELEMENT *****</xs:documentation>
		<xs:documentation>*********************************</xs:documentation>
		<xs:documentation>None.</xs:documentation>
	</xs:annotation>
	<xs:element name="nsdl_anno" type="annotationRecordType"/>


	<xs:complexType name="annotationRecordType">
		<xs:annotation>
			<xs:documentation>*****  annotationRecordType  *****</xs:documentation>
			<xs:documentation>annotationRecordType - the type for the root element of the annotation record</xs:documentation>
			<xs:documentation>recordID - a unique identification number used to identify an individual record</xs:documentation>
			<xs:documentation>date - calendar date for the creation or modification of the metadata record</xs:documentation>
			<xs:documentation>annotatedID - a URL, NSDL handle or free text identification number indicating another id scheme of the item being annotated</xs:documentation>
			<xs:documentation>title - the title of the annotation if one exists or is appropriate</xs:documentation>
			<xs:documentation>rating - an overall judgment of a resource by using a number of stars wtih 1 meaning poor, 2 meaning okay, 3 meaning good, 4 meaning very good, 5 meaning excellent</xs:documentation>
			<xs:documentation>text - narrative/texutal information that annotates a resource</xs:documentation>
			<xs:documentation>id - an identification number for the content or thing that annotates a resource</xs:documentation>
			<xs:documentation>url - an Internet address that resolves to the annotation content for a resource that is being annotated</xs:documentation>
			<xs:documentation>ASNstandard - an ASN identification of the educational standard that is related to or aligned to the content of a resource</xs:documentation>
			<xs:documentation>standardText - the text of an educational standard that is related to or aligned to the content of a resource</xs:documentation>
			<xs:documentation>standardID - an identification number of the educational standard that is related to or aligned to the content of the resource</xs:documentation>
			<xs:documentation>standardURL - an Internet address that resolves to the educational standard that is related to or aligned to the content of the resource</xs:documentation>
			<xs:documentation>structuredOutline - an outline form that constructs the content of an annotation</xs:documentation>
			<xs:documentation>contributors - a list of persons or organizations making the annotation</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="recordID" type="xs:string" minOccurs="1" maxOccurs="1"/>
			<xs:element name="date" type="dateType" minOccurs="1" maxOccurs="1"/>
			<xs:element name="annotatedID" type="annotatedIDType" minOccurs="1" maxOccurs="1"/>
 			<xs:element name="title" type="stringTextType" minOccurs="0" maxOccurs="1"/>
 			<xs:element name="rating" type="ratingType" minOccurs="0" maxOccurs="1"/>
			<xs:element name="text" type="textElementType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="id" type="idElementType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="url" type="urlElementType" minOccurs="0" maxOccurs="unbounded"/>
 			<xs:element name="ASNstandard" type="ASNstandardType" minOccurs="0" maxOccurs="unbounded"/>
 			<xs:element name="standardText" type="standardTextType" minOccurs="0" maxOccurs="unbounded"/>
 			<xs:element name="standardID" type="standardIDType" minOccurs="0" maxOccurs="unbounded"/>
 			<xs:element name="standardURL" type="standardURLType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="structuredOutline" type="structuredOutlineType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="contributors" type="contributorsType" minOccurs="0" maxOccurs="1"/>
		</xs:sequence>
	</xs:complexType>


	<xs:complexType name="annotatedIDType">
		<xs:annotation>
			<xs:documentation>*****  annotatedIDType  *****</xs:documentation>
			<xs:documentation>annotatedID - a URL, NSDL handle or free text identification number indicating another id scheme of the item being annotated</xs:documentation>
			<xs:documentation>idType - indicates the type of identification number for the content of annotatedID element (e.g. URL, NSDL handle, or free text indicating another id scheme like DLESE)</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="stringTextType">
				<xs:attribute name="idType" type="union.idTypeType" use="required"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<xs:complexType name="ASNstandardType">
		<xs:annotation>
			<xs:documentation>*****  ASNstandardType  *****</xs:documentation>
			<xs:documentation>ASNstardardsType - the ASN identification id (url) to an educational standard that is related to or aligned to the content of the resource</xs:documentation>
			<xs:documentation>alignment - an indication to the strength of fit of the standard to the resource</xs:documentation>
			<xs:documentation>alignmentComment - a comment about the strength of fit of the standard to the resource</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="urlType" >
				<xs:attribute name="alignment" type="alignmentType" use="optional"/>
				<xs:attribute name="alignmentComment" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<xs:complexType name="contributorType">
		<xs:annotation>
			<xs:documentation>*****  contributorType  *****</xs:documentation>
			<xs:documentation>contributorType - an individual person or individual ogranization making the annotation</xs:documentation>
			<xs:documentation>date - the calendar date the contributor made the annotation (may only be known to the year)</xs:documentation>
			<xs:documentation>organization - the organization making the annotation</xs:documentation>
			<xs:documentation>person - the individual making the annotation</xs:documentation>
			<xs:documentation>role - the role of the annotator in making the annotation; simple type</xs:documentation>
			<xs:documentation>share - an indication of whether the contributor inforamtion can be made public</xs:documentation>
		</xs:annotation>
		<xs:choice>
			<xs:element name="person" type="personType" maxOccurs="1"/>
			<xs:element name="organization" type="organizationType" maxOccurs="1"/>
		</xs:choice>
		<xs:attribute name="role" type="roleAnnotationType" use="required"/>
		<xs:attribute name="date" type="union.dateType" use="required"/>
		<xs:attribute name="share" type="xs:boolean" use="optional" default="false"/>
	</xs:complexType>

	<xs:complexType name="contributorsType">
		<xs:annotation>
			<xs:documentation>*****  contributorsType  *****</xs:documentation>
			<xs:documentation>contributorsType - a list persons or organizations making the annotation</xs:documentation>
			<xs:documentation>contributor - an individual person or individual ogranization making the annotation</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="contributor" type="contributorType" minOccurs="1" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="dateType">
		<xs:annotation>
			<xs:documentation>*****  dateType  *****</xs:documentation>
			<xs:documentation>dateType - calendar date for the creation or modification of the metadata record</xs:documentation>
			<xs:documentation>created - the creation date of the annotation metadata record</xs:documentation>
			<xs:documentation>modified	- the modification date of the annoation metadata record</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="created" type="union.dateType" use="required"/>
				<xs:attribute name="modified" type="union.dateType" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<xs:complexType name="idElementType">
		<xs:annotation>
			<xs:documentation>*****    *****</xs:documentation>
			<xs:documentation>idElementType - a URL, NSDL handle or free text identification number indicating another id scheme of the item being annotated</xs:documentation>
			<xs:documentation>idType - indicates the type of identification number for the content of id element (e.g. URL, NSDL handle, or free text indicating another id scheme like DLESE)</xs:documentation>
			<xs:documentation>type - the kind of annotation</xs:documentation>			
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="stringTextType">
				<xs:attribute name="type" type="typeType" use="required"/>
				<xs:attribute name="idType" type="union.idTypeType" use="required"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<xs:complexType name="organizationType">
		<xs:annotation>
			<xs:documentation>*****  organizationType  *****</xs:documentation>
			<xs:documentation>organizationType - information about the organization making the annotation</xs:documentation>
			<xs:documentation>instName - the name of the institution</xs:documentation>
			<xs:documentation>instDept - the department name within the institution</xs:documentation>
			<xs:documentation>instPosition - a professional position within the institution</xs:documentation>
			<xs:documentation>url  - the url of the institution</xs:documentation>
			<xs:documentation>email - an email address for the institution</xs:documentation>
			<xs:documentation>userID - a user identification number associated with an organization making the annotation about the resource</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="instName" type="stringTextType" minOccurs="1" maxOccurs="1"/>
			<xs:element name="instDept" type="stringTextType" minOccurs="0" maxOccurs="1"/>
			<xs:element name="instPosition" type="stringTextType" minOccurs="0" maxOccurs="1"/>
			<xs:element name="url" type="stringTextType" minOccurs="0" maxOccurs="1"/>
			<xs:element name="email" type="stringTextType" minOccurs="0" maxOccurs="1"/>
			<xs:element name="userID" type="userIDType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="outlineType">
		<xs:annotation>
			<xs:documentation>*****  outlineType  *****</xs:documentation>
			<xs:documentation>outlineType - the statements that construct the structured content of the annotation about a resource</xs:documentation>
			<xs:documentation>order - the ordering for the outline content of the annotation</xs:documentation>
			<xs:documentation>text - textual content of the structured outline for the annotation</xs:documentation>
			<xs:documentation>url - web-based content of the structured outline for the annotation</xs:documentation>
			<xs:documentation>label - a label for the URL</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="outline" type="outlineType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
			<xs:attribute name="order" type="xs:nonNegativeInteger" use="optional"/>
			<xs:attribute name="text" type="xs:string" use="optional"/>
			<xs:attribute name="url" type="urlType" use="optional"/>
			<xs:attribute name="label" type="xs:string" use="optional"/>
	</xs:complexType>

	<xs:complexType name="personType">
		<xs:annotation>
			<xs:documentation>*****  personType  *****</xs:documentation>
			<xs:documentation>personType - information about an individual person</xs:documentation>
			<xs:documentation>nameTitle - the form of address of the individual person</xs:documentation>
			<xs:documentation>nameFirst - the first name of the individual person</xs:documentation>
			<xs:documentation>nameMiddle - the middle name of the individual person</xs:documentation>
			<xs:documentation>nameLast - the last name or family name of the individual person</xs:documentation>
			<xs:documentation>instName - the institutional affiliation of the individual person</xs:documentation>
			<xs:documentation>instDept - the department of the institution the individual person is associated with</xs:documentation>
			<xs:documentation>instPosition - the professional position of the individual person in their affiliated institution</xs:documentation>
			<xs:documentation>email - the email of the inidividual person</xs:documentation>
			<xs:documentation>userID - a user identification number associated with a person making the annotation about the resource</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="nameTitle" type="nameTitleType" minOccurs="0" maxOccurs="1"/>
			<xs:element name="nameFirst" type="stringTextType" minOccurs="1" maxOccurs="1"/>
			<xs:element name="nameMiddle" type="stringTextType" minOccurs="0" maxOccurs="1"/>
			<xs:element name="nameLast" type="stringTextType" minOccurs="1" maxOccurs="1"/>
			<xs:element name="instName" type="stringTextType" minOccurs="0" maxOccurs="1" default="No institutional affiliation"/>
			<xs:element name="instDept" type="stringTextType" minOccurs="0" maxOccurs="1"/>
			<xs:element name="instPosition" type="stringTextType" minOccurs="0" maxOccurs="1" />
			<xs:element name="email" type="stringTextType" minOccurs="0" maxOccurs="1"/>
			<xs:element name="userID" type="userIDType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="standardIDType">
		<xs:annotation>
			<xs:documentation>*****  standardIDType  *****</xs:documentation>
			<xs:documentation>stardardIDType - an identification number to an educational standard that is related to or aligned to the content of the resource</xs:documentation>
			<xs:documentation>alignment - an indication to the strength of fit of the standard to the resource</xs:documentation>
			<xs:documentation>alignmentComment - a comment about the strength of fit of the standard to the resource</xs:documentation>
			<xs:documentation>idType - the kind of identification number that will be used to associate a standard with the resource</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="stringTextType" >
				<xs:attribute name="idType" type="union.idStandardType" use="required"/>
				<xs:attribute name="alignment" type="alignmentType" use="optional"/>
				<xs:attribute name="alignmentComment" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<xs:complexType name="standardTextType">
		<xs:annotation>
			<xs:documentation>*****  standardTextType  *****</xs:documentation>
			<xs:documentation>standardTextType - the text of an educational standard that is related to or aligned to the content of the resource</xs:documentation>
			<xs:documentation>alignment - an indication to the strength of fit of the standard to the resource</xs:documentation>
			<xs:documentation>alignmentComment - a comment about the strength of fit of the standard to the resource</xs:documentation>
			<xs:documentation>standardsName - the name of the set of standards being used to annotate the resource</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="stringTextType" >
				<xs:attribute name="standardsName" type="xs:string" use="required"/>
				<xs:attribute name="alignment" type="alignmentType" use="optional"/>
				<xs:attribute name="alignmentComment" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<xs:complexType name="standardURLType">
		<xs:annotation>
			<xs:documentation>*****  standardURLType  *****</xs:documentation>
			<xs:documentation>standardURLType - a URL of an educational standard that is related to or aligned to the content of the resource</xs:documentation>
			<xs:documentation>alignment - an indication to the strength of fit of the standard to the resource</xs:documentation>
			<xs:documentation>alignmentComment - a comment about the strength of fit of the standard to the resource</xs:documentation>
			<xs:documentation>label - a label to apply to the URL standard</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="stringTextType" >
				<xs:attribute name="label" type="xs:string" use="optional"/>
				<xs:attribute name="alignment" type="alignmentType" use="optional"/>
				<xs:attribute name="alignmentComment" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<xs:complexType name="structuredOutlineType">
		<xs:annotation>
			<xs:documentation>*****  structuredOutlineType  *****</xs:documentation>
			<xs:documentation>structuredOutlineType - an outline form that constructs the content of an annotation using an oultine structure of indents and ordering of the outline child element</xs:documentation>
			<xs:documentation>type - the kind of annotation</xs:documentation>
			<xs:documentation>outline - the statements that construct the content of the annotation about a resource</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="outline" type="outlineType" minOccurs="1" maxOccurs="unbounded"/>
		</xs:sequence>
			<xs:attribute name="type" type="typeType" use="required"/>
	</xs:complexType>


	<xs:complexType name="textElementType">
		<xs:annotation>
			<xs:documentation>*****  textType  *****</xs:documentation>
			<xs:documentation>textElementType - the textual content of the annotation</xs:documentation>
			<xs:documentation>type - the kind of annotation</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="stringTextType">
				<xs:attribute name="type" type="typeType" use="required"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<xs:complexType name="urlElementType">
		<xs:annotation>
			<xs:documentation>*****  urlElementType  *****</xs:documentation>
			<xs:documentation>urlElementType - an Internet address that resolves to the annotation content for a resource that is being annotated</xs:documentation>
			<xs:documentation>type - the kind of annotation</xs:documentation>
			<xs:documentation>url - an Internet address that resolves to the page within a resource that is being annotated</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="urlType">
				<xs:attribute name="type" type="typeType" use="required"/>
				<xs:attribute name="label" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<xs:complexType name="userIDType">
		<xs:annotation>
			<xs:documentation>*****  userIDType  *****</xs:documentation>
			<xs:documentation>userIDType - a user identification number associated with an organization or person making the annotation about the resource</xs:documentation>
			<xs:documentation>type - the kind of user indentification number from a controlled vocabulary or from a user-supplied identification scheme</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="stringTextType" >
				<xs:attribute name="type" type="union.userIDtypeType" use="required"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<xs:annotation>
		<xs:documentation>***********************************************</xs:documentation>
		<xs:documentation>***** Simple Types (alpha order) *********</xs:documentation>
		<xs:documentation>***********************************************</xs:documentation>
		<xs:documentation>stringTextType - a pattern used to exclude null content from strings</xs:documentation>
		<xs:documentation>union.dateType - calendar dates of the form YYYY, YYYY-MM, YYYY-MM-DD; part of annotationRecordType</xs:documentation>
		<xs:documentation>union.idTypeType - see definition below; part of idElementType</xs:documentation>
		<xs:documentation>union.idStandardType - see definition below; part of standardIDType</xs:documentation>
		<xs:documentation>union.userIDtypeType - see definition below; part of userIDType</xs:documentation>
		<xs:documentation>urlType - enforces a URL format as content</xs:documentation>
	</xs:annotation>

	<xs:simpleType name="stringTextType">
		<xs:annotation>
			<xs:documentation>stringTextType - a regular expression that enforce the presence of content (text or elements)</xs:documentation>
			<xs:documentation>Pattern \s*.[\S\s]* ensures that a null tag is not valid string content</xs:documentation>
			<xs:documentation>Pattern \s*.[\S\s]* allows leading blank characters and leading carriage returns</xs:documentation>
			<xs:documentation>Pattern .[\S\s]* ensures that a null tag is not valid string content</xs:documentation>
			<xs:documentation>Pattern .[\S\s]* does not allow leading blank characters or carriage returns</xs:documentation>
			<xs:documentation>Pattern .*\S+[\s\S]* ensures that a null tag is not valid string content</xs:documentation>
			<xs:documentation>Pattern .*\S+[\s\S]* allows leading blank characters but not leading carriage returns</xs:documentation>
			<xs:documentation>Note: that xs:string allows content to be null even if the element is required</xs:documentation>
			<xs:documentation>Note: that xs:string with nillable equal false allows content to be null even if the element is required</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value=".[\S\s]*"/>
<!--		<xs:pattern value="\s*.[\S\s]*" />-->
<!--		<xs:pattern value=".[\S\s]*"/>-->
<!--		<xs:pattern value=".*\S+[\s\S]*"/> -->
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="union.dateType">
		<xs:annotation>
			<xs:documentation>union.dateType - calendar dates of the form YYYY, YYYY-MM, YYYY-MM-DD or YYYY-MM-DDThh:mm:ss</xs:documentation>
		</xs:annotation>
		<xs:union memberTypes="xs:date xs:gYearMonth xs:gYear xs:dateTime"/>
	</xs:simpleType>

	<xs:simpleType name="union.idTypeType">
		<xs:annotation>
			<xs:documentation>union.idTypeType - union of idTypeType and free text so that a user-supplied id scheme may also be used</xs:documentation>
		</xs:annotation>
		<xs:union memberTypes="idTypeType xs:string"/>
	</xs:simpleType>

	<xs:simpleType name="union.idStandardType">
		<xs:annotation>
			<xs:documentation>union.idStandardType - union of idStandardType and free text so that a user-supplied id scheme may also be used</xs:documentation>
		</xs:annotation>
		<xs:union memberTypes="idStandardType xs:string"/>
	</xs:simpleType>

	<xs:simpleType name="union.userIDtypeType">
		<xs:annotation>
			<xs:documentation>union.userIDtypeType - union of userIDtypeType and free text so that a user-supplied id scheme may also be used</xs:documentation>
		</xs:annotation>
		<xs:union memberTypes="userIDtypeType xs:string"/>
	</xs:simpleType>

	<xs:simpleType name="urlType">
		<xs:annotation>
			<xs:documentation>Sources for constructing the pattern</xs:documentation>
			<xs:documentation>http://geekswithblogs.net/casualjim/archive/2005/12/01/61722.aspx; ^((ht|f)tp(s?)\:\/\/|~/|/)?([\w]+:\w+@)?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?((/?\w+/)+|/?)(\w+\.[\w]{3,4})?((\?\w+=\w+)?(&amp;\w+=\w+)*)?</xs:documentation>
			<xs:documentation>http://www.nshb.net/node/252; /^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$/ix
</xs:documentation>
			<xs:documentation>http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html</xs:documentation>
			<xs:documentation>http://www.dotnetcoders.com/web/Learning/Regex/exHrefExtractor.aspx</xs:documentation>
			<xs:documentation>In XML schema, there are no ^ or $ characters to limit a match to the beginning or end of of a line as there are in Perl. So removed ^, $ and escaped slashes.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="(http://|https://|ftp://)+([a-zA-Z0-9])+([\-\.]{1}[a-zA-Z0-9]+)*\.[a-zA-Z]{2,5}((:[0-9]{1,5})?/.*)?"/> 
			<!--allows port numbers, dashes but no spaces or underscores in domain or directory part-->
		</xs:restriction>
	</xs:simpleType> 

</xs:schema>
<!--LICENSE AND COPYRIGHT
The contents of this file are subject to the Educational Community License v1.0 (the "License"); you may not use this file except in compliance with the License. You should obtain a copy of the License from http://www.opensource.org/licenses/ecl1.php. Files distributed under the License are distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Copyright 2002-2009 by Digital Learning Sciences, University Corporation for Atmospheric Research (UCAR). All rights reserved.-->
