[Bedework-commit] bwxml r1 - / trunk trunk/exsynchws trunk/exsynchws/wsdlbindings trunk/schemas trunk/schemas/icalendar trunk/schemas/tzsvr trunk/timezones trunk/xjcbindings

svnadmin at bedework.org svnadmin at bedework.org
Thu Feb 17 16:15:46 EST 2011


Author: douglm
Date: 2011-02-17 16:15:44 -0500 (Thu, 17 Feb 2011)
New Revision: 1

Added:
   trunk/
   trunk/build.properties
   trunk/build.xml
   trunk/exsynchws/
   trunk/exsynchws/gensrc/
   trunk/exsynchws/patch-errors.xsd
   trunk/exsynchws/patch.xsd
   trunk/exsynchws/wsdlbindings/
   trunk/exsynchws/wsdlbindings/custom-binding.xml
   trunk/exsynchws/wsdlbindings/simplebinding.xml
   trunk/exsynchws/wsmessages.xsd
   trunk/exsynchws/wssvc.wsdl
   trunk/schemas/
   trunk/schemas/icalendar/
   trunk/schemas/icalendar/iCalendar-availability-extension.xsd
   trunk/schemas/icalendar/iCalendar-bw-extensions.xsd
   trunk/schemas/icalendar/iCalendar-link-extension.xsd
   trunk/schemas/icalendar/iCalendar-ms-extensions.xsd
   trunk/schemas/icalendar/iCalendar-params.xsd
   trunk/schemas/icalendar/iCalendar-props.xsd
   trunk/schemas/icalendar/iCalendar-valtypes.xsd
   trunk/schemas/icalendar/iCalendar-wscal-extensions.xsd
   trunk/schemas/icalendar/iCalendar.xsd
   trunk/schemas/tzsvr/
   trunk/schemas/tzsvr/tzservice.xsd
   trunk/schemas/xml.xsd
   trunk/timezones/
   trunk/timezones/gensrc/
   trunk/xjcbindings/
   trunk/xjcbindings/simplebinding.xml
Log:
Import of new project



Added: trunk/build.properties
===================================================================
--- trunk/build.properties	                        (rev 0)
+++ trunk/build.properties	2011-02-17 21:15:44 UTC (rev 1)
@@ -0,0 +1,14 @@
+#
+# Properties for the xml schemas build.
+#
+
+# Name of this package
+org.bedework.package.name=xmlschema package
+
+# Version we are building
+org.bedework.xmlschema.version=3.7
+
+# Name of generated jar files
+org.bedework.module.exsynchwsschema.jar=bw-exsynchwsschema
+org.bedework.module.tzschema.jar=bw-tzschema
+

Added: trunk/build.xml
===================================================================
--- trunk/build.xml	                        (rev 0)
+++ trunk/build.xml	2011-02-17 21:15:44 UTC (rev 1)
@@ -0,0 +1,132 @@
+<?xml version="1.0"?>
+
+<!-- This is the main build file for the XML schemas module.
+
+     Authors: Mike Douglass   douglm  rpi.edu
+-->
+
+<project name="xmlschema" default="build">
+  <taskdef resource="net/sf/antcontrib/antcontrib.properties" />
+	
+  <property environment="env"/>
+  <dirname property="project.home" file="${ant.file}"/>
+  
+  <property file="${project.home}/build.properties" />
+
+  <property name="bedework.home"
+            location="${project.home}/../bedework" />
+
+  <property name="build.dir" location="${bedework.home}/build"/>
+
+  <import file="${build.dir}/buildTools/deftasks.xml"/>
+
+  <deftasks/>
+
+  <projectDefs name="${org.bedework.package.name}"
+               version="${org.bedework.xmlschema.version}" 
+               deployment-name="xmlschema"
+  />
+
+  <import file="${build.dir}/loadDeployConfig.xml"/>
+  <import file="${build.dir}/buildTools/wsimport.xml"/>
+  <import file="${build.dir}/buildTools/xjc.xml"/>
+
+  <!-- =================================================================
+       init:
+       ================================================================= -->
+
+  <target name="init">
+    <projectInit/>
+    
+    <property name="org.bedework.project.bedework"
+              location="${project.home}/../bedework" />
+
+    <loadDeployConfig/>
+
+  	<property name="org.bedework.options.file"
+  	          value="${org.bedework.config.options}" />
+
+    <property name="org.bedework.schemas.base"
+              location="${project.home}/schemas" />
+
+    <property name="org.bedework.exsynchws.base"
+              location="${project.home}/exsynchws" />
+
+    <property name="org.bedework.tzsvc.base"
+              location="${project.home}/timezones" />
+
+    <property name="exsynchws.jar"
+              location="${dist.home}/${org.bedework.module.exsynchwsschema.jar}-${project.version}.jar" />
+
+    <property name="tzsvc.jar"
+              location="${dist.home}/${org.bedework.module.tzschema.jar}-${project.version}.jar" />
+  </target>
+  
+  <target name="deploy-init" depends="init">
+    <!-- No deployment -->
+  </target>
+
+  <!-- ===================== build-source Target ===============================
+     This target builds jar files ready for the deploy target.
+     =================================================================== -->
+
+  <target name="build-source" >
+    <!-- Exsynch - web service -->
+    <wsimport wsdl="${org.bedework.exsynchws.base}/wssvc.wsdl"
+              module-base="${org.bedework.exsynchws.base}/gensrc"
+              jar-file="${exsynchws.jar}"
+              bindingsdir="${org.bedework.exsynchws.base}/wsdlbindings"
+    />
+
+    <!-- Timezones - XML data -->
+    <xjc schema="${org.bedework.schemas.base}/tzsvr/tzservice.xsd"
+         module-base="${org.bedework.tzsvc.base}/gensrc"
+         jar-file="${tzsvc.jar}"
+         bindingsdir="${project.home}/xjcbindings"
+    />
+    
+    <build-jar-stats />
+  </target>
+
+  <!-- ===================== deploy Target ===============================
+     Deploy if an application server is defined.
+     =================================================================== -->
+
+  <target name="deploy" depends="deploy-init,build"
+               description="Deploy generated files">
+    <!-- No deployment -->
+  </target>
+
+<!-- ==================== Javadoc Target ===============================
+     The "javadoc" target creates Javadoc API documentation for the Java
+     classes included in your application.  Normally, this is only required
+     when preparing a distribution release, but is available as a separate
+     target in case the developer wants to create Javadocs independently.
+     =================================================================== -->
+
+  <target name="javadoc" depends="init"
+          description="Create Javadoc API documentation">
+    <property name="destdir" location="${dist.home}/docs/api"/>
+    <mkdir dir="${destdir}"/>
+
+    <javadoc sourcepath="${org.bedework.module.common.base}/src:${org.bedework.module.service.base}/src:${org.bedework.module.server.base}/src:"
+           classpathref="compile.classpath"
+                destdir="${destdir}"
+           packagenames="org.bedework.*,
+                         edu.rpi.*"
+                 access="public"
+                 author="true"
+                version="true"
+          breakiterator="yes"
+            windowtitle="${project.name} ${project.version} API Documentation">
+      <doctitle><![CDATA[${project.name} ${project.version}<br/>API Documentation]]></doctitle>
+      <header><![CDATA[${project.name} ${project.version}<br/>API Documentation]]></header>
+      <link href="../../access/api" />
+      <link href="../../calendarapi/api" />
+      <link href="../../davutil/api" />
+      <link href="../../rpiutil/api" />
+      <link href="../../webdav/api" />
+      <link href="${env.JAVA_HOME}/docs/api" />
+    </javadoc>
+  </target>
+</project>

Added: trunk/exsynchws/patch-errors.xsd
===================================================================
--- trunk/exsynchws/patch-errors.xsd	                        (rev 0)
+++ trunk/exsynchws/patch-errors.xsd	2011-02-17 21:15:44 UTC (rev 1)
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This is the schema for the XML patch errors defined in RFC 5261
+-->
+
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            xmlns:tns="urn:ietf:params:xml:ns:patch-ops-error"
+            targetNamespace="urn:ietf:params:xml:ns:patch-ops-error"
+            elementFormDefault="qualified"
+            attributeFormDefault="unqualified">
+
+  <!-- This import brings in the XML language attribute xml:lang-->
+  <xsd:import namespace="http://www.w3.org/XML/1998/namespace"
+              schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+
+  <!-- ROOT document element for signaling patch-ops errors -->
+  <xsd:element name="patch-ops-error">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:any namespace="##any" processContents="lax"
+                 minOccurs="0" maxOccurs="unbounded"/>
+      </xsd:sequence>
+      <xsd:anyAttribute processContents="lax"/>
+    </xsd:complexType>
+  </xsd:element>
+
+  <!-- patch-ops error elements:
+       not intended to be used as root documnet elements -->
+  <xsd:element name="invalid-attribute-value"
+               type="tns:patch-error"/>
+  <xsd:element name="invalid-character-set"
+               type="tns:patch-error-simple"/>
+  <xsd:element name="invalid-diff-format"
+               type="tns:patch-error-simple"/>
+  <xsd:element name="invalid-entity-declaration"
+               type="tns:patch-error"/>
+  <xsd:element name="invalid-namespace-prefix"
+               type="tns:patch-error"/>
+  <xsd:element name="invalid-namespace-uri"
+               type="tns:patch-error"/>
+  <xsd:element name="invalid-node-types"
+               type="tns:patch-error"/>
+  <xsd:element name="invalid-patch-directive"
+               type="tns:patch-error"/>
+  <xsd:element name="invalid-root-element-operation"
+               type="tns:patch-error"/>
+  <xsd:element name="invalid-xml-prolog-operation"
+               type="tns:patch-error"/>
+  <xsd:element name="invalid-whitespace-directive"
+               type="tns:patch-error"/>
+  <xsd:element name="unlocated-node"
+               type="tns:patch-error"/>
+  <xsd:element name="unsupported-id-function"
+               type="tns:patch-error"/>
+  <xsd:element name="unsupported-xml-id"
+               type="tns:patch-error"/>
+
+  <!-- simple patch-ops error type  -->
+  <xsd:complexType name="patch-error-simple">
+    <xsd:attribute name="phrase" type="xsd:string"/>
+    <xsd:attribute ref="xml:lang"/>
+    <xsd:anyAttribute processContents="lax"/>
+  </xsd:complexType>
+
+  <!-- error type which includes patch operation -->
+  <xsd:complexType name="patch-error">
+    <xsd:sequence>
+      <xsd:any namespace="##any" processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="phrase" type="xsd:string"/>
+    <xsd:attribute ref="xml:lang"/>
+    <xsd:anyAttribute processContents="lax"/>
+  </xsd:complexType>
+</xsd:schema>

Added: trunk/exsynchws/patch.xsd
===================================================================
--- trunk/exsynchws/patch.xsd	                        (rev 0)
+++ trunk/exsynchws/patch.xsd	2011-02-17 21:15:44 UTC (rev 1)
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE schema [
+  <!ENTITY ncname "\i\c*">
+  <!ENTITY qname  "(&ncname;:)?&ncname;">
+  <!ENTITY aname  "@&qname;">
+  <!ENTITY pos    "\[\d+\]">
+  <!ENTITY attr   "\[&aname;='(.)*'\]|\[&aname;=&quot;(.)*&quot;\]">
+  <!ENTITY valueq "\[(&qname;|\.)=&quot;(.)*&quot;\]">
+  <!ENTITY value  "\[(&qname;|\.)='(.)*'\]|&valueq;">
+  <!ENTITY cond   "&attr;|&value;|&pos;">
+  <!ENTITY step   "(&qname;|\*)(&cond;)*">
+  <!ENTITY piq    "processing-instruction\((&quot;&ncname;&quot;)\)">
+  <!ENTITY pi     "processing-instruction\(('&ncname;')?\)|&piq;">
+  <!ENTITY id     "id\(('&ncname;')?\)|id\((&quot;&ncname;&quot;)?\)">
+  <!ENTITY com    "comment\(\)">
+  <!ENTITY text   "text\(\)">
+  <!ENTITY nspa   "namespace::&ncname;">
+  <!ENTITY cnodes "(&text;(&pos;)?)|(&com;(&pos;)?)|((&pi;)(&pos;)?)">
+  <!ENTITY child  "&cnodes;|&step;">
+  <!ENTITY last   "(&child;|&aname;|&nspa;)">
+ ]>
+<!-- This is the schema for the XML patch operations defined in RFC 5261 as 
+  modified for xcalendar updates and according to appropriate conventions.
+  
+  As this is intended for use in a SOAP environment the xs:any for the new or
+  replacement value is going to be a problem.
+  
+  For icalendar patching we can restrict the value to be an icalendar element.
+  
+  We select the outer vcalendar is we wish to add a component
+
+  We select a component if we wish to add a property or a component to that 
+  component or if we wish to delete that component 
+
+  We select a property to change it's parameters or it's value or delete it. The 
+  value can be a parameter to add, a new value for the property or nothing to delete
+  
+  We select a parameter to delete it or change its value. The value is a value-type
+  element
+  
+-->
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+           xmlns:xcal="urn:ietf:params:xml:ns:icalendar-2.0" 
+           xmlns="urn:ietf:params:xml:ns:pidf-diff" 
+           targetNamespace="urn:ietf:params:xml:ns:pidf-diff" 
+           elementFormDefault="qualified">
+
+  <xs:import schemaLocation="../schemas/icalendar/iCalendar.xsd" 
+             namespace="urn:ietf:params:xml:ns:icalendar-2.0" />
+
+  <xs:simpleType name="XpathType">
+    <xs:restriction base="xs:string">
+      <xs:pattern
+             value="(/)?((&id;)((/&step;)*(/&last;))?|(&step;/)*(&last;))"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:simpleType name="XpathAddType">
+    <xs:restriction base="xs:string">
+      <xs:pattern
+             value="(/)?((&id;)((/&step;)*(/&child;))?|(&step;/)*(&child;))"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:simpleType name="PosType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="before"/>
+      <xs:enumeration value="after"/>
+      <xs:enumeration value="prepend"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:simpleType name="AddValueType">
+    <xs:restriction base="xs:string">
+      <xs:pattern value="&aname;|&nspa;"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:complexType name="BaseUpdateType" abstract="true">
+    <xs:attribute name="sel" type="XpathAddType"
+                  use="required"/>
+  </xs:complexType>
+  
+  <xs:complexType name="NewValueType" abstract="true">
+    <xs:complexContent mixed="false">
+      <xs:extension base="BaseUpdateType">
+        <xs:choice> 
+          <xs:element name="component" type="xcal:BaseComponentType"/>
+          <xs:element name="property" type="xcal:BasePropertyType"/>
+          <xs:element name="parameter" type="xcal:BaseParameterType"/>
+        </xs:choice>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:simpleType name="WhitespaceType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="before"/>
+      <xs:enumeration value="after"/>
+      <xs:enumeration value="both"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:complexType name="AddType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="NewValueType">
+        <xs:attribute name="pos" type="PosType"/>
+        <xs:attribute name="type" type="AddValueType"/>
+     </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="ReplaceType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="NewValueType">
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="RemoveType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="BaseUpdateType">
+        <xs:attribute name="ws" type="WhitespaceType"/>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+</xs:schema>
+           

Added: trunk/exsynchws/wsdlbindings/custom-binding.xml
===================================================================
--- trunk/exsynchws/wsdlbindings/custom-binding.xml	                        (rev 0)
+++ trunk/exsynchws/wsdlbindings/custom-binding.xml	2011-02-17 21:15:44 UTC (rev 1)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bindings xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+          wsdlLocation="../wssvc.wsdl"
+          xmlns="http://java.sun.com/xml/ns/jaxws">
+  <!-- Disable default wrapper style -->
+  <enableWrapperStyle>false</enableWrapperStyle>
+</bindings>
\ No newline at end of file

Added: trunk/exsynchws/wsdlbindings/simplebinding.xml
===================================================================
--- trunk/exsynchws/wsdlbindings/simplebinding.xml	                        (rev 0)
+++ trunk/exsynchws/wsdlbindings/simplebinding.xml	2011-02-17 21:15:44 UTC (rev 1)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
+               jaxb:version="2.0"
+               xmlns:xjc= "http://java.sun.com/xml/ns/jaxb/xjc" 
+               jaxb:extensionBindingPrefixes="xjc">
+  <jaxb:globalBindings>
+    <xjc:simple />
+  </jaxb:globalBindings>
+</jaxb:bindings>

Added: trunk/exsynchws/wsmessages.xsd
===================================================================
--- trunk/exsynchws/wsmessages.xsd	                        (rev 0)
+++ trunk/exsynchws/wsmessages.xsd	2011-02-17 21:15:44 UTC (rev 1)
@@ -0,0 +1,377 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" 
+        xmlns:tns="http://www.bedework.org/exsynch/wsmessages" 
+        xmlns:xcal="urn:ietf:params:xml:ns:icalendar-2.0"
+        xmlns:p="urn:ietf:params:xml:ns:pidf-diff" 
+        xmlns:perr="urn:ietf:params:xml:ns:patch-ops-error" 
+        targetNamespace="http://www.bedework.org/exsynch/wsmessages" 
+        elementFormDefault="qualified">
+        
+  <import schemaLocation="../schemas/icalendar/iCalendar.xsd" 
+          namespace="urn:ietf:params:xml:ns:icalendar-2.0" />
+
+  <!-- The schemas for RFC 5261 patch operations and errors. -->        
+  <import schemaLocation="patch.xsd"  
+          namespace="urn:ietf:params:xml:ns:pidf-diff" />
+  <import schemaLocation="patch-errors.xsd" 
+          namespace="urn:ietf:params:xml:ns:patch-ops-error" />
+          
+  <!-- Schema for messages passed from exsynch processor to the remote service. -->
+  
+  <simpleType name="SynchType">
+    <annotation>
+      <documentation xml:lang="en">
+           from... synch from that end
+           both  both ways - server tries to resolve conflicts
+           both...Master - Named service wins in conflicts.
+      </documentation>
+    </annotation>
+    <restriction base="string">
+      <enumeration value="fromExchange" />
+      <enumeration value="toExchange" />
+      <enumeration value="both" />
+      <enumeration value="bothExchangeMaster" />
+      <enumeration value="bothRemoteMaster" />
+    </restriction>
+  </simpleType>
+  
+  <simpleType name="StatusType">
+    <restriction base="string">
+      <enumeration value="OK" />
+      <enumeration value="Already subscribed" />
+      <enumeration value="Unknown Exchange calendar" />
+      <enumeration value="Invalid token" />
+      <enumeration value="Unknown subscription" />
+      <enumeration value="No Access" />
+      <enumeration value="Service Stopped" />
+      <enumeration value="Error" />
+    </restriction>
+  </simpleType>
+  
+  <complexType name="BaseSynchRequestType">
+    <annotation>
+      <documentation xml:lang="en">
+           Requests have this as the base type.
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="calendar-href" type="string" minOccurs="1" />
+      <element name="principal-href" type="string" minOccurs="1" />
+      <element name="synch-token" type="string" minOccurs="1" />
+    </sequence>
+  </complexType>
+  
+  <complexType name="BaseSynchEntityRequestType">
+    <annotation>
+      <documentation xml:lang="en">
+           Message from remote service identifying an entity by it's UID and
+           optionally its recurrenceid.
+      </documentation>
+    </annotation>
+    <complexContent mixed="false">
+      <extension base="tns:BaseSynchRequestType">
+        <sequence >
+          <element name="uid" type="string" minOccurs="1" />
+          <element name="recurrence-id" type="string" />
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  
+  <complexType name="BaseSynchResponseType">
+    <annotation>
+      <documentation xml:lang="en">
+           Responses have this as the base type.
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="subscribe-status" type="tns:StatusType" />
+    </sequence>
+  </complexType>
+  
+  <!-- *********************************************************************
+       Remote system to syncher
+       subscribe: set up a new subscription for a principal to a calendar
+       unsubscribe: remove a new subscription for a principal to a calendar
+       ********************************************************************* -->
+  
+  <complexType name="SubscribeRequestType">
+    <annotation>
+      <documentation xml:lang="en">
+           Message from remote service requesting new subscription.
+           token
+                 Sent in initial startup request
+           principal-href
+                 Principal requesting the subscription.
+           synch-token
+                 Passed back for operations on the calendar
+           exchange-user
+                 Userid for exchange
+           exchange-encpw
+                 Encoded password for exchange
+      </documentation>
+    </annotation>
+    <complexContent mixed="false">
+      <extension base="tns:BaseSynchRequestType">
+        <sequence >
+          <element name="token" type="string" />
+          <element name="exchange-folder-id" type="string" />
+          <element name="exchange-uri" type="string" />
+          <element name="synch-type" type="tns:SynchType" />
+          <element name="exchange-user" type="string" />
+          <element name="exchange-encpw" type="string" />
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+
+  <element name="subscribe" type="tns:SubscribeRequestType" />
+  
+  <complexType name="SubscribeResponseType">
+    <annotation>
+      <documentation xml:lang="en">
+           Response to message from remote service requesting new subscription.
+      </documentation>
+    </annotation>
+    <complexContent mixed="false">
+      <extension base="tns:BaseSynchResponseType">
+        <sequence >
+          <element name="subscription-id" type="string" />
+          <element minOccurs="0" name="message" type="string" />
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+
+  <element name="subscribe-response" type="tns:SubscribeResponseType" />
+  
+  <complexType name="UnsubscribeRequestType">
+    <annotation>
+      <documentation xml:lang="en">
+           Message from remote service unsubscribing.
+      </documentation>
+    </annotation>
+    <complexContent mixed="false">
+      <extension base="tns:BaseSynchRequestType">
+        <sequence >
+          <element name="subscription-id" type="string" />
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+
+  <element name="unsubscribe" type="tns:UnsubscribeRequestType" />
+  
+  <complexType name="UnsubscribeResponseType">
+    <annotation>
+      <documentation xml:lang="en">
+           Response to message from remote service requesting unsubscription.
+      </documentation>
+    </annotation>
+    <complexContent mixed="false">
+      <extension base="tns:BaseSynchResponseType">
+      </extension>
+    </complexContent>
+  </complexType>
+
+  <element name="unsubscribe-response" type="tns:UnsubscribeResponseType" />
+  
+  <!-- *********************************************************************
+       Syncher to Remote system 
+       start-service-notification; sent to (re)initialise the service
+       get-sycnch-info: return info used to synch
+       fetch: fetch one or more calendar items
+       add: add a new calendar item
+       update: update a calendar item
+       delete: delete a calendar item
+       ********************************************************************* -->
+  
+  <complexType name="StartServiceNotificationType">
+    <annotation>
+      <documentation xml:lang="en">
+           (Re)initialize the service
+           subscribe-url: callback url for notifications and subscribe requests
+           token: random token for subscribe requests. If token is unchanged this
+               is just a keep alive ping
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="subscribe-url" type="string" />
+      <element name="token" type="string" />
+    </sequence>
+  </complexType>
+  
+  <element name="start-service-notification" 
+           type="tns:StartServiceNotificationType" />
+  
+  <complexType name="StartServiceResponseType">
+    <annotation>
+      <documentation xml:lang="en">
+           Respond to the ping
+           token: sent in initial request
+           status: OK
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="token" type="string" />
+      <element name="status" type="tns:StatusType" />
+    </sequence>
+  </complexType>
+
+  <element name="start-service-response" type="tns:StartServiceResponseType" />
+  
+  <complexType name="GetSynchInfoType">
+    <annotation>
+      <documentation xml:lang="en">
+           Message to remote service requesting synchronization info.
+      </documentation>
+    </annotation>
+    <complexContent mixed="false">
+      <extension base="tns:BaseSynchRequestType"/>
+    </complexContent>
+  </complexType>
+  
+  <element name="get-sycnch-info" type="tns:GetSynchInfoType" />
+  
+  <complexType name="SynchInfoType">
+    <sequence>
+      <element name="uid" type="string" />
+      <element name="exchange-lastmod" type="string" />
+    </sequence>
+  </complexType>
+  
+  <complexType name="SynchInfoResponseType">
+    <annotation>
+      <documentation xml:lang="en">
+           Response to message to remote service requesting synchronization info.
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="calendar-href" type="string" />
+      <element name="synch-info-responses">
+        <complexType>
+          <sequence>
+            <element maxOccurs="unbounded" name="synch-info" 
+                     type="tns:SynchInfoType" />
+          </sequence>
+        </complexType>
+      </element>
+    </sequence>
+  </complexType>
+  
+  <element name="synch-info-response" type="tns:SynchInfoResponseType" />
+
+  <!-- ============================ add-item =============================== -->
+  
+  <complexType name="AddItemType">
+    <annotation>
+      <documentation xml:lang="en">
+           Message to add a calendar item.
+      </documentation>
+    </annotation>
+    <complexContent mixed="false">
+      <extension base="tns:BaseSynchEntityRequestType">
+        <sequence>
+          <element name="icalendar" type="xcal:IcalendarType" />
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  
+  <element name="add-item" type="tns:AddItemType" />
+  
+  <complexType name="AddItemResponseType">
+    <annotation>
+      <documentation xml:lang="en">
+           Response to message to add an item.
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="status" type="tns:StatusType" />
+      <element name="message" type="string" />
+    </sequence>
+  </complexType>
+  
+  <element name="add-item-response" type="tns:AddItemResponseType" />
+
+  <!-- ============================ add-item =============================== -->
+  
+  <complexType name="FetchItemType">
+    <annotation>
+      <documentation xml:lang="en">
+           Message to fetch a calendar item.
+      </documentation>
+    </annotation>
+    <complexContent mixed="false">
+      <extension base="tns:BaseSynchEntityRequestType"/>
+    </complexContent>
+  </complexType>
+  
+  <element name="fetch-item" type="tns:FetchItemType" />
+  
+  <complexType name="FetchItemResponseType">
+    <annotation>
+      <documentation xml:lang="en">
+           Response to message to fetch an item.
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="icalendar" type="xcal:IcalendarType" />
+      <element name="status" type="tns:StatusType" />
+      <element name="message" type="string" />
+    </sequence>
+  </complexType>
+  
+  <element name="fetch-item-response" type="tns:FetchItemResponseType" />
+
+  <!-- ========================== update-item ============================== -->
+  
+  <element name="baseUpdate" type="p:BaseUpdateType" />
+  
+  <complexType name="ArrayOfUpdates">
+    <sequence>
+      <element ref="tns:baseUpdate" maxOccurs="unbounded"/>
+    </sequence>
+  </complexType>
+
+  <element name="add" type="p:AddType"
+           substitutionGroup="tns:baseUpdate"/>
+
+  <element name="replace" type="p:ReplaceType"
+           substitutionGroup="tns:baseUpdate"/>
+
+  <element name="remove" type="p:RemoveType"
+           substitutionGroup="tns:baseUpdate"/>
+
+  <complexType name="UpdateItemType">
+    <annotation>
+      <documentation xml:lang="en">
+           Message to update a calendar item.
+      </documentation>
+    </annotation>
+    <complexContent mixed="false">
+      <extension base="tns:BaseSynchEntityRequestType">
+        <sequence>
+          <element name="updates" type="tns:ArrayOfUpdates" />
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  
+  <element name="update-item" type="tns:UpdateItemType" />
+  
+  <complexType name="UpdateItemResponseType">
+    <annotation>
+      <documentation xml:lang="en">
+           Response to message to update an item.
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="status" type="tns:StatusType" />
+      <element ref="perr:patch-ops-error" />
+      <element name="message" type="string" />
+    </sequence>
+  </complexType>
+  
+  <element name="update-item-response" type="tns:UpdateItemResponseType" />
+</schema>

Added: trunk/exsynchws/wssvc.wsdl
===================================================================
--- trunk/exsynchws/wssvc.wsdl	                        (rev 0)
+++ trunk/exsynchws/wssvc.wsdl	2011-02-17 21:15:44 UTC (rev 1)
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:tns="http://www.bedework.org/exsynch/wsmessages" 
+                  xmlns:s="http://www.w3.org/2001/XMLSchema" 
+                  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
+                  targetNamespace="http://www.bedework.org/exsynch/wsmessages" 
+                  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:types>
+    <s:schema>
+      <s:import schemaLocation="wsmessages.xsd" 
+                namespace="http://www.bedework.org/exsynch/wsmessages" />
+    </s:schema>
+  </wsdl:types> 
+
+  <!-- ====================== startServiceNotification ===================== -->  
+
+  <wsdl:message name="StartServiceIn">
+    <wsdl:part name="request" element="tns:start-service-notification" />
+  </wsdl:message>
+  
+  <wsdl:message name="StartServiceOut">
+    <wsdl:part name="response" element="tns:start-service-response" />
+  </wsdl:message>
+
+  <!-- ============================ getSynchInfo =========================== -->  
+
+  <wsdl:message name="GetSynchInfoIn">
+    <wsdl:part name="request" element="tns:get-sycnch-info" />
+  </wsdl:message>
+  
+  <wsdl:message name="GetSynchInfoOut">
+    <wsdl:part name="response" element="tns:synch-info-response" />
+  </wsdl:message>
+
+  <!-- ============================= addItem =============================== -->  
+
+  <wsdl:message name="AddItemIn">
+    <wsdl:part name="addItemRequest" element="tns:add-item" />
+  </wsdl:message>
+  
+  <wsdl:message name="AddItemOut">
+    <wsdl:part name="addItemResponse" element="tns:add-item-response" />
+  </wsdl:message>
+
+  <!-- ============================= fetchItem =============================== -->  
+
+  <wsdl:message name="FetchItemIn">
+    <wsdl:part name="fetchItemRequest" element="tns:fetch-item" />
+  </wsdl:message>
+  
+  <wsdl:message name="FetchItemOut">
+    <wsdl:part name="fetchItemResponse" element="tns:fetch-item-response" />
+  </wsdl:message>
+
+  <!-- ============================= UpdateItem =============================== -->  
+
+  <wsdl:message name="UpdateItemIn">
+    <wsdl:part name="request" element="tns:update-item" />
+  </wsdl:message>
+  
+  <wsdl:message name="UpdateItemOut">
+    <wsdl:part name="response" element="tns:update-item-response" />
+  </wsdl:message>
+
+  <!-- ============================== port ================================= -->  
+  
+  <wsdl:portType name="ExsynchRemoteServicePortType">
+    <wsdl:operation name="NotifyRemoteService">
+      <wsdl:input message="tns:StartServiceIn" />
+      <wsdl:output message="tns:StartServiceOut" />
+    </wsdl:operation>
+    
+    <wsdl:operation name="GetSynchInfo">
+      <wsdl:input message="tns:GetSynchInfoIn" />
+      <wsdl:output message="tns:GetSynchInfoOut" />
+    </wsdl:operation>
+    
+    <wsdl:operation name="AddItem">
+      <wsdl:input message="tns:AddItemIn" />
+      <wsdl:output message="tns:AddItemOut" />
+    </wsdl:operation>
+    
+    <wsdl:operation name="FetchItem">
+      <wsdl:input message="tns:FetchItemIn" />
+      <wsdl:output message="tns:FetchItemOut" />
+    </wsdl:operation>
+    
+    <wsdl:operation name="UpdateItem">
+      <wsdl:input message="tns:UpdateItemIn" />
+      <wsdl:output message="tns:UpdateItemOut" />
+    </wsdl:operation>
+  </wsdl:portType>
+  
+  <!-- ============================ binding ================================ -->  
+  
+  <wsdl:binding name="ExsynchRemoteServiceBinding" 
+                type="tns:ExsynchRemoteServicePortType">
+    <wsdl:documentation>
+      <wsi:Claim conformsTo="http://ws-i.org/profiles/basic/1.0" 
+                 xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/" />
+    </wsdl:documentation>
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
+    
+    <wsdl:operation name="NotifyRemoteService">
+      <soap:operation soapAction="http://www.bedework.org/exsynch/wsmessages/notify-remote-service" />
+      <wsdl:input>
+        <soap:body use="literal" parts="request" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" parts="response" />
+      </wsdl:output>
+    </wsdl:operation>
+    
+    <wsdl:operation name="GetSynchInfo">
+      <soap:operation soapAction="http://www.bedework.org/exsynch/wsmessages/get-synch-info" />
+      <wsdl:input>
+        <soap:body use="literal" parts="request" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" parts="response" />
+      </wsdl:output>
+    </wsdl:operation>
+    
+    <wsdl:operation name="AddItem">
+      <soap:operation soapAction="http://www.bedework.org/exsynch/wsmessages/add-item" />
+      <wsdl:input>
+        <soap:body use="literal" parts="addItemRequest" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" parts="addItemResponse" />
+      </wsdl:output>
+    </wsdl:operation>
+    
+    <wsdl:operation name="FetchItem">
+      <soap:operation soapAction="http://www.bedework.org/exsynch/wsmessages/fetch-item" />
+      <wsdl:input>
+        <soap:body use="literal" parts="fetchItemRequest" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" parts="fetchItemResponse" />
+      </wsdl:output>
+    </wsdl:operation>
+    
+    <wsdl:operation name="UpdateItem">
+      <soap:operation soapAction="http://www.bedework.org/exsynch/wsmessages/update-item" />
+      <wsdl:input>
+        <soap:body use="literal" parts="request" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" parts="response" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+
+  <wsdl:service name="ExsynchRemoteService">
+    <wsdl:port name="ExsynchRSPort" binding="tns:ExsynchRemoteServiceBinding">
+       <soap:address location="http://localhost:8080/pubcaldav/exsynchws/"></soap:address>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>  
\ No newline at end of file

Added: trunk/schemas/icalendar/iCalendar-availability-extension.xsd
===================================================================
--- trunk/schemas/icalendar/iCalendar-availability-extension.xsd	                        (rev 0)
+++ trunk/schemas/icalendar/iCalendar-availability-extension.xsd	2011-02-17 21:15:44 UTC (rev 1)
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+           xmlns:xcal="urn:ietf:params:xml:ns:icalendar-2.0" 
+           targetNamespace="urn:ietf:params:xml:ns:icalendar-2.0" 
+           elementFormDefault="qualified">
+
+<!-- This schema extension defines properties and components for the availability
+     components defined in draft-daboo-calendar-availability -->
+
+  <!-- ===================== Value-types ================================  -->
+  <xs:include schemaLocation="iCalendar-valtypes.xsd" />
+            
+  <!-- ===================== Components =================================  -->
+  <xs:include schemaLocation="iCalendar.xsd" />
+            
+  <!-- ===================== Properties =================================  -->
+  <xs:include schemaLocation="iCalendar-props.xsd" />
+          
+  <!-- =====================================================================
+       Calendar Properties
+       ===================================================================== -->  
+  
+  <!-- The BUSYTYPE property is used to specify the default busy time
+      type.  The values correspond to those used by the "FBTYPE"
+      parameter used on a "FREEBUSY" property, with the exception that
+      the "FREE" value is not used.  If not specified on a component
+      that allows this property, the default is "BUSY-UNAVAILABLE".
+      
+      busytypevalue = "BUSY" / "BUSY-UNAVAILABLE" /
+                        "BUSY-TENTATIVE" / iana-token / x-name
+                        ; Default is "BUSY-UNAVAILABLE"
+      
+   -->
+   
+  <xs:simpleType name="BusytypeValueType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="BUSY"/>
+      <xs:enumeration value="BUSY-UNAVAILABLE"/> <!-- default -->
+      <xs:enumeration value="BUSY-TENTATIVE"/> 
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:complexType name="BusytypePropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+   
+  <!-- =====================================================================
+       Calendar Components
+       ===================================================================== -->  
+       
+  <xs:complexType name="VavailabilityType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BaseComponentType"/>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:element name="vavailability" type="xcal:VavailabilityType"
+              substitutionGroup="xcal:baseComponent"/>
+       
+  <xs:complexType name="AvailableType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BaseComponentType"/>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:element name="available" type="xcal:AvailableType"
+              substitutionGroup="xcal:baseComponent"/>
+</xs:schema>

Added: trunk/schemas/icalendar/iCalendar-bw-extensions.xsd
===================================================================
--- trunk/schemas/icalendar/iCalendar-bw-extensions.xsd	                        (rev 0)
+++ trunk/schemas/icalendar/iCalendar-bw-extensions.xsd	2011-02-17 21:15:44 UTC (rev 1)
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Bedework extensions to icalendar -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+           xmlns:xcal="urn:ietf:params:xml:ns:icalendar-2.0" 
+           targetNamespace="urn:ietf:params:xml:ns:icalendar-2.0" 
+           elementFormDefault="qualified">
+
+  <xs:include schemaLocation="iCalendar-valtypes.xsd" />
+            
+  <!-- ===================== Properties =================================  -->
+  <xs:include schemaLocation="iCalendar-props.xsd" />
+          
+  <!-- =====================================================================
+       3.2 Property parameter definitions
+       ===================================================================== -->
+  
+  <!-- Bedework x-parameters -->
+  <xs:element name="x-bedework-uid" type="xcal:XBedeworkUidParamType" 
+              substitutionGroup="xcal:baseParameter" />
+              
+  <xs:complexType name="XBedeworkUidParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextParameterType"/>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <!-- =====================================================================
+       3.7 Calendar Properties
+       ===================================================================== -->  
+
+  <xs:element name="x-bedework-cost" 
+              type="xcal:XBedeworkCostPropType"
+              substitutionGroup="xcal:baseProperty" />
+
+  <xs:element name="x-bedework-exsynch-endtzid" 
+              type="xcal:XBedeworkExsynchEndtzidPropType"
+              substitutionGroup="xcal:baseProperty" />
+
+  <xs:element name="x-bedework-exsynch-lastmod" 
+              type="xcal:XBedeworkExsynchLastmodPropType"
+              substitutionGroup="xcal:baseProperty" />
+
+  <xs:element name="x-bedework-exsynch-organizer" 
+              type="xcal:OrganizerPropType"
+              substitutionGroup="xcal:baseProperty" />
+
+  <xs:element name="x-bedework-exsynch-starttzid" 
+              type="xcal:XBedeworkExsynchStarttzidPropType"
+              substitutionGroup="xcal:baseProperty" />
+  
+  <xs:complexType name="XBedeworkCostPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="XBedeworkExsynchEndtzidPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="XBedeworkExsynchLastmodPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="XBedeworkExsynchStarttzidPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+</xs:schema>

Added: trunk/schemas/icalendar/iCalendar-link-extension.xsd
===================================================================
--- trunk/schemas/icalendar/iCalendar-link-extension.xsd	                        (rev 0)
+++ trunk/schemas/icalendar/iCalendar-link-extension.xsd	2011-02-17 21:15:44 UTC (rev 1)
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+           xmlns:xcal="urn:ietf:params:xml:ns:icalendar-2.0" 
+           targetNamespace="urn:ietf:params:xml:ns:icalendar-2.0" 
+           elementFormDefault="qualified">
+
+<!--Definition for the LINK extension property for icalendar -->
+
+  <xs:include schemaLocation="iCalendar-valtypes.xsd" />
+            
+  <!-- ===================== Properties =================================  -->
+  <xs:include schemaLocation="iCalendar-params.xsd" />
+            
+  <!-- ===================== Properties =================================  -->
+  <xs:include schemaLocation="iCalendar-props.xsd" />
+          
+  <!-- =====================================================================
+       3.2 Property parameter definitions
+       ===================================================================== -->
+
+  <!-- REL defines the type of relationship and may be a predefined value as
+       below or a URI which is globally unique and understood within the context
+       of its use.
+       
+       The standard relation types are:
+             "PARENT"    ; Parent relationship - Default
+             "CHILD"     ; Child relationship
+             "SIBLING"   ; Sibling relationship
+   -->
+   
+  <xs:element name="rel" type="xcal:TextParameterType" 
+              substitutionGroup="xcal:baseParameter" />
+ 
+  <!-- =====================================================================
+       3.7 Calendar Properties
+       ===================================================================== -->  
+  
+  <xs:complexType name="LinkPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BasePropertyType">
+        <xs:choice> 
+          <xs:element ref="xcal:uri"/>
+          <xs:element name="uid" type="xs:string"/>
+          <xs:element name="reference" type="xs:string"/>
+        </xs:choice>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:element name="link" 
+              type="xcal:LinkPropType"
+              substitutionGroup="xcal:baseProperty" />
+</xs:schema>

Added: trunk/schemas/icalendar/iCalendar-ms-extensions.xsd
===================================================================
--- trunk/schemas/icalendar/iCalendar-ms-extensions.xsd	                        (rev 0)
+++ trunk/schemas/icalendar/iCalendar-ms-extensions.xsd	2011-02-17 21:15:44 UTC (rev 1)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Bedework extensions to icalendar -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+           xmlns:xcal="urn:ietf:params:xml:ns:icalendar-2.0" 
+           targetNamespace="urn:ietf:params:xml:ns:icalendar-2.0" 
+           elementFormDefault="qualified">
+
+  <!-- =====================================================================
+       3.7 Calendar Properties
+       ===================================================================== -->  
+            
+  <!-- ===================== Properties =================================  -->
+  <xs:include schemaLocation="iCalendar-props.xsd" />
+
+  <xs:element name="x-microsoft-cdo-busystatus" 
+              type="xcal:XMicrosoftCdoBusystatusPropType"
+              substitutionGroup="xcal:baseProperty" />
+
+  <xs:element name="x-microsoft-cdo-intendedstatus" 
+              type="xcal:XMicrosoftCdoIntendedstatusPropType"
+              substitutionGroup="xcal:baseProperty" />
+  
+  <xs:complexType name="XMicrosoftCdoBusystatusPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="XMicrosoftCdoIntendedstatusPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+</xs:schema>

Added: trunk/schemas/icalendar/iCalendar-params.xsd
===================================================================
--- trunk/schemas/icalendar/iCalendar-params.xsd	                        (rev 0)
+++ trunk/schemas/icalendar/iCalendar-params.xsd	2011-02-17 21:15:44 UTC (rev 1)
@@ -0,0 +1,395 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2010 rel. 3 sp1 (x64) (http://www.altova.com) by Toby Considine (TC9) -->
+<!--non-normative, to support development of WS-Calendar - 2010/10/30. Refer to rfc5545 and xCal in the IETF for normative description-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+           xmlns:xcal="urn:ietf:params:xml:ns:icalendar-2.0" 
+           targetNamespace="urn:ietf:params:xml:ns:icalendar-2.0" 
+           elementFormDefault="qualified">
+
+  <xs:include schemaLocation="iCalendar-valtypes.xsd" />
+          
+  <!-- =====================================================================
+       3.2 Property parameter definitions
+       ===================================================================== -->
+
+  <xs:complexType name="BaseParameterType" abstract="true" >
+  </xs:complexType>
+
+  <xs:element name="baseParameter" type="xcal:BaseParameterType" />
+
+  <xs:complexType name="ArrayOfParameters">
+    <xs:sequence>
+      <xs:element ref="xcal:baseParameter" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+         
+  <!-- =====================================================================
+       Define all the standard properties. By using a substitutionGroup we
+       make it easy to extend the list of parameters. As an example see 
+       the parameters defined in iCalendar-caldavsched-extensions.xsd
+       ===================================================================== -->  
+
+  <xs:element name="altrep" type="xcal:AltrepParamType"
+              substitutionGroup="xcal:baseParameter" />
+  <xs:element name="cn" type="xcal:CnParamType"
+              substitutionGroup="xcal:baseParameter" />
+  <xs:element name="cutype" type="xcal:CutypeParamType"
+              substitutionGroup="xcal:baseParameter" />
+  <xs:element name="delegated-from" type="xcal:DelegatedFromParamType"
+              substitutionGroup="xcal:baseParameter" />
+  <xs:element name="delegated-to" type="xcal:DelegatedToParamType"
+              substitutionGroup="xcal:baseParameter" />
+  <xs:element name="dir" type="xcal:DirParamType"
+              substitutionGroup="xcal:baseParameter" />
+  <xs:element name="encoding" type="xcal:EncodingParamType"
+              substitutionGroup="xcal:baseParameter" />
+  <xs:element name="fmttype" type="xcal:FmttypeParamType"
+              substitutionGroup="xcal:baseParameter" />
+  <xs:element name="fbtype" type="xcal:FbtypeParamType"
+              substitutionGroup="xcal:baseParameter" />
+  <xs:element name="language" type="xcal:LanguageParamType"
+              substitutionGroup="xcal:baseParameter" />
+  <xs:element name="member" type="xcal:MemberParamType"
+              substitutionGroup="xcal:baseParameter" />
+  <xs:element name="partstat" type="xcal:PartstatParamType"
+              substitutionGroup="xcal:baseParameter" />
+  <xs:element name="range" type="xcal:RangeParamType"
+              substitutionGroup="xcal:baseParameter" />
+  <xs:element name="related" type="xcal:RelatedParamType"
+              substitutionGroup="xcal:baseParameter" />
+  <xs:element name="reltype" type="xcal:ReltypeParamType"
+              substitutionGroup="xcal:baseParameter" />
+  <xs:element name="role" type="xcal:RoleParamType"
+              substitutionGroup="xcal:baseParameter" />
+  <xs:element name="rsvp" type="xcal:RsvpParamType"
+              substitutionGroup="xcal:baseParameter" />
+  <xs:element name="sent-by" type="xcal:SentByParamType"
+              substitutionGroup="xcal:baseParameter" />
+  <xs:element name="tzid" type="xcal:TzidParamType"
+              substitutionGroup="xcal:baseParameter" />
+              
+  
+  <!-- Scheduling parameters for attendee or organizer -->
+  <xs:element name="schedule-agent" type="xcal:ScheduleAgentParamType"
+              substitutionGroup="xcal:baseParameter" />
+  <xs:element name="schedule-force-send" type="xcal:ScheduleForceSendParamType"
+              substitutionGroup="xcal:baseParameter" />
+  <xs:element name="schedule-status" type="xcal:ScheduleStatusParamType"
+              substitutionGroup="xcal:baseParameter" />
+  
+  <!-- Parameters that take a simple text value -->
+  <xs:complexType name="TextParameterType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BaseParameterType">
+        <xs:sequence> 
+          <xs:element ref="xcal:text" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- Parameters that take a uri value -->
+  <xs:complexType name="UriParameterType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BaseParameterType">
+        <xs:sequence>
+          <xs:element ref="xcal:uri"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="CalAddressListParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BaseParameterType">
+        <xs:sequence>
+          <xs:element ref="xcal:cal-address" maxOccurs="unbounded"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="CalAddressParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BaseParameterType">
+        <xs:sequence>
+          <xs:element ref="xcal:cal-address" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+ 
+  <!-- 3.2.1 Alternate Text Representation -->
+  <xs:complexType name="AltrepParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:UriParameterType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.2.2 Common Name -->
+  <xs:complexType name="CnParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextParameterType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.2.3 Calendar User Type -->
+  <xs:simpleType name="CutypeValueType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="INDIVIDUAL"/>
+      <xs:enumeration value="GROUP"/>
+      <xs:enumeration value="RESOURCE"/>
+      <xs:enumeration value="ROOM"/>
+      <xs:enumeration value="UNKNOWN"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:complexType name="CutypeParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextParameterType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.2.4 Delegators -->
+  <xs:complexType name="DelegatedFromParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:CalAddressListParamType">
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <!-- 3.2.5 Delegatees -->
+  <xs:complexType name="DelegatedToParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:CalAddressListParamType">
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.2.6 Directory Entry Reference -->
+  <xs:complexType name="DirParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:UriParameterType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.2.7 Inline Encoding -->
+
+  <xs:simpleType name="EncodingValueType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="8BIT"/>
+      <xs:enumeration value="BASE64"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:complexType name="EncodingParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextParameterType"/>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <!-- 3.2.8 Format Type -->
+  <xs:complexType name="FmttypeParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextParameterType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.2.9 Free/Busy Time Type -->
+  <xs:simpleType name="FbtypeValueType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="FREE"/>
+      <xs:enumeration value="BUSY"/>
+      <xs:enumeration value="BUSY-UNAVAILABLE"/>
+      <xs:enumeration value="BUSY-TENTATIVE"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:complexType name="FbtypeParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextParameterType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.2.10 Language -->
+  <xs:complexType name="LanguageParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextParameterType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.2.11 Group or List Membership -->
+  <xs:complexType name="MemberParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:CalAddressListParamType">
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.2.12 Participation Status -->
+  <xs:simpleType name="PartstatValueType">
+    <xs:union memberTypes="xcal:TypePartstatEvent xcal:TypePartstatTodo xcal:TypePartstatJour"/>
+  </xs:simpleType>
+  
+  <xs:simpleType name="TypePartstatEvent">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="NEEDS-ACTION"/>
+      <xs:enumeration value="ACCEPTED"/>
+      <xs:enumeration value="DECLINED"/>
+      <xs:enumeration value="TENTATIVE"/>
+      <xs:enumeration value="DELEGATED"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:simpleType name="TypePartstatTodo">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="NEEDS-ACTION"/>
+      <xs:enumeration value="ACCEPTED"/>
+      <xs:enumeration value="DECLINED"/>
+      <xs:enumeration value="TENTATIVE"/>
+      <xs:enumeration value="DELEGATED"/>
+      <xs:enumeration value="COMPLETED"/>
+      <xs:enumeration value="IN-PROCESS"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:simpleType name="TypePartstatJour">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="NEEDS-ACTION"/>
+      <xs:enumeration value="ACCEPTED"/>
+      <xs:enumeration value="DECLINED"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:complexType name="PartstatParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextParameterType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.2.13 Recurrence Identifier Range -->
+  <xs:simpleType name="RangeValueType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="THISANDFUTURE"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:complexType name="RangeParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BaseParameterType">
+        <xs:sequence>
+          <xs:element name="text" type="xcal:RangeValueType"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.2.14 Alarm Trigger Relationship -->
+  <xs:simpleType name="RelatedValueType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="START"/>
+      <xs:enumeration value="END"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:complexType name="RelatedParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextParameterType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.2.15 Relationship Type -->
+  <xs:simpleType name="ReltypeValueType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="PARENT"/>
+      <xs:enumeration value="CHILD"/>
+      <xs:enumeration value="SIBLING"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:complexType name="ReltypeParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextParameterType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.2.16 Participation Role -->
+  <xs:simpleType name="RoleValueType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="CHAIR"/>
+      <xs:enumeration value="REQ-PARTICIPANT"/>
+      <xs:enumeration value="OPT-PARTICIPANT"/>
+      <xs:enumeration value="NON-PARTICIPANT"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:complexType name="RoleParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextParameterType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.2.17 RSVP Expectation -->
+  <xs:simpleType name="RsvpValueType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="TRUE"/>
+      <xs:enumeration value="FALSE"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:complexType name="RsvpParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextParameterType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.2.18 Sent By -->
+  <xs:complexType name="SentByParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:CalAddressParamType">
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.2.19 Time Zone Identifier -->
+  <xs:complexType name="TzidParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextParameterType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- Scheduling parameters - Defined by CalDAV scheduling -->
+  
+  <xs:simpleType name="ScheduleAgentValueType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="SERVER"/>
+      <xs:enumeration value="CLIENT"/>
+      <xs:enumeration value="NONE"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:complexType name="ScheduleAgentParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextParameterType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:simpleType name="ScheduleForceSendValueType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="REQUEST"/>
+      <xs:enumeration value="REPLY"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:complexType name="ScheduleForceSendParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextParameterType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="ScheduleStatusParamType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextParameterType"/>
+    </xs:complexContent>
+  </xs:complexType>
+</xs:schema>

Added: trunk/schemas/icalendar/iCalendar-props.xsd
===================================================================
--- trunk/schemas/icalendar/iCalendar-props.xsd	                        (rev 0)
+++ trunk/schemas/icalendar/iCalendar-props.xsd	2011-02-17 21:15:44 UTC (rev 1)
@@ -0,0 +1,770 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--non-normative, to support development of WS-Calendar - 2010/10/30. 
+    Refer to rfc5545 and xCal in the IETF for normative description -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+           xmlns:xcal="urn:ietf:params:xml:ns:icalendar-2.0" 
+           targetNamespace="urn:ietf:params:xml:ns:icalendar-2.0" 
+           elementFormDefault="qualified">
+
+  <!-- =====================================================================
+       3.7 Calendar Properties
+       ===================================================================== -->  
+            
+  <!-- ===================== Parameters =================================  -->
+  <xs:include schemaLocation="iCalendar-params.xsd" />
+
+  <!-- =====================================================================
+        BasePropertyType 
+        All properties are based off this type which defines a property as 
+        nothing more than a list of parameters. 
+        
+        We make no attempt to define valid parameters for each property as this
+        would complicate the schema significantly. Consumers can ignore 
+        property parameters they do not understand or expect. 
+       ===================================================================== -->  
+  <xs:complexType name="BasePropertyType" abstract="true" >
+    <xs:sequence>
+      <xs:element name="parameters" type="xcal:ArrayOfParameters"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:element name="baseProperty" type="xcal:BasePropertyType" />
+
+  <xs:complexType name="ArrayOfProperties">
+    <xs:sequence>
+      <xs:element ref="xcal:baseProperty" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+  
+  <!-- =====================================================================
+       Define all the standard properties. By using a substitutionGroup we
+       make it easy to extend the list of properties. As an example see 
+       the properties defined in iCalendar-ms-extensions.xsd
+       ===================================================================== -->  
+  <xs:element name="calscale" type="xcal:CalscalePropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="method" type="xcal:MethodPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="prodid" type="xcal:ProdidPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="version" type="xcal:VersionPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="attach" type="xcal:AttachPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="categories" type="xcal:CategoriesPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="class" type="xcal:ClassPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="comment" type="xcal:CommentPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="description" type="xcal:DescriptionPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="geo" type="xcal:GeoPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="location" type="xcal:LocationPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="percent-complete" type="xcal:PercentCompletePropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="priority" type="xcal:PriorityPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="resources" type="xcal:ResourcesPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="status" type="xcal:StatusPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="summary" type="xcal:SummaryPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="completed" type="xcal:CompletedPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="dtend" type="xcal:DtendPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="dtstart" type="xcal:DtstartPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="due" type="xcal:DuePropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="duration" type="xcal:DurationPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="freebusy" type="xcal:FreebusyPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="transp" type="xcal:TranspPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <!-- Comment out tzid for the moment. It has the same name as the parameter
+       and this is causing me some issues
+  <xs:element name="tzid" type="xcal:TzidPropType"
+              substitutionGroup="xcal:baseProperty" /> -->
+  <xs:element name="tzname" type="xcal:TznamePropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="tzoffsetfrom" type="xcal:TzoffsetfromPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="tzoffsetto" type="xcal:TzoffsettoPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="tzurl" type="xcal:TzurlPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="attendee" type="xcal:AttendeePropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="contact" type="xcal:ContactPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="organizer" type="xcal:OrganizerPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="recurrence-id" type="xcal:RecurrenceIdPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="url" type="xcal:UrlPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="uid" type="xcal:UidPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="exdate" type="xcal:ExdatePropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="rdate" type="xcal:RdatePropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="related-to" type="xcal:RelatedToPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="exrule" type="xcal:ExrulePropType"
+              substitutionGroup="xcal:baseProperty" /> 
+              
+  <xs:element name="rrule" type="xcal:RrulePropType"
+              substitutionGroup="xcal:baseProperty" /> 
+              
+  <xs:element name="action" type="xcal:ActionPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="repeat" type="xcal:RepeatPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="trigger" type="xcal:TriggerPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="created" type="xcal:CreatedPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="dtstamp" type="xcal:DtstampPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="last-modified" type="xcal:LastModifiedPropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="sequence" type="xcal:SequencePropType"
+              substitutionGroup="xcal:baseProperty" />
+              
+  <xs:element name="request-status" type="xcal:RequestStatusPropType"
+              substitutionGroup="xcal:baseProperty" />
+
+  <!-- Properties that take a simple text value -->
+  <xs:complexType name="TextPropertyType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BasePropertyType">
+        <xs:sequence> 
+          <xs:element ref="xcal:text" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="TextListPropertyType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BasePropertyType">
+        <xs:sequence>
+          <xs:element ref="xcal:text" maxOccurs="unbounded"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <!-- Properties that take a calendar address value -->
+  <xs:complexType name="CalAddressPropertyType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BasePropertyType">
+        <xs:sequence>
+          <xs:element ref="xcal:cal-address" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+ 
+  <!-- Properties that take a simple integer value -->
+  <xs:complexType name="IntegerPropertyType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BasePropertyType">
+        <xs:sequence>
+          <xs:element ref="xcal:integer"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <!-- Properties that take a uri value -->
+  <xs:complexType name="UriPropertyType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BasePropertyType">
+        <xs:sequence>
+          <xs:element ref="xcal:uri"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <!-- Properties that take a utc offset value -->
+  <xs:complexType name="UtcOffsetPropertyType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BasePropertyType">
+        <xs:sequence>
+          <xs:element ref="xcal:utc-offset"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <!-- Properties that take a date-time value -->
+  <xs:complexType name="DatetimePropertyType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BasePropertyType">
+        <xs:sequence>
+          <xs:element ref="xcal:date-time"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <!-- Properties that take a utc-date-time value -->
+  <xs:complexType name="UtcDatetimePropertyType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BasePropertyType">
+        <xs:sequence>
+          <xs:element ref="xcal:utc-date-time"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <!-- Properties that take a date or date-time value -->
+  <xs:complexType name="DateDatetimePropertyType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BasePropertyType">
+        <xs:sequence>
+          <xs:choice>
+            <xs:element ref="xcal:date-time"/>
+            <xs:element ref="xcal:date"/>
+          </xs:choice>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <!-- Properties that take a recurrence value -->
+  <xs:complexType name="RecurPropertyType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BasePropertyType">
+        <xs:sequence>
+          <xs:element name="recur" type="xcal:RecurType"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+     
+  <!-- 3.7.1 Calendar Scale -->
+  <xs:simpleType name="CalscaleValueType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="GREGORIAN"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:complexType name="CalscalePropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BasePropertyType">
+        <xs:sequence>
+          <xs:element name="text" type="xcal:CalscaleValueType"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.7.2 Method -->
+  <xs:complexType name="MethodPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <!-- 3.7.3 Product Identifier -->
+  <xs:complexType name="ProdidPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <!-- 3.7.4 Version -->
+  <xs:complexType name="VersionPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.8 Component Properties -->
+  <!-- 3.8.1 Descriptive Component Properties -->
+  <!-- 3.8.1.1 Attachment -->
+  <xs:complexType name="AttachPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BasePropertyType">
+        <xs:choice> 
+          <xs:element ref="xcal:uri"/>
+          <xs:element ref="xcal:binary"/>
+        </xs:choice>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.1.2 Categories -->
+  <xs:complexType name="CategoriesPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextListPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>  
+
+  <!-- 3.8.1.3 Classification -->
+  <!-- Would like something lie this but not extensible
+  <xs:simpleType name="ClassValueType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="PUBLIC"/>
+      <xs:enumeration value="PRIVATE"/>
+      <xs:enumeration value="CONFIDENTIAL"/>
+    </xs:restriction>
+  </xs:simpleType>
+   
+  <xs:complexType name="ClassPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BasePropertyType">
+        <xs:sequence>
+          <xs:element name="text" type="xcal:ClassValueType"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+ -->
+  <xs:simpleType name="ClassValueType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="PUBLIC"/>
+      <xs:enumeration value="PRIVATE"/>
+      <xs:enumeration value="CONFIDENTIAL"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:complexType name="ClassPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.1.4 Comment -->
+  <xs:complexType name="CommentPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.1.5 Description -->
+  <xs:complexType name="DescriptionPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.1.6 Geographic Position -->
+  <xs:complexType name="GeoPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BasePropertyType">
+        <xs:sequence>
+          <xs:element ref="xcal:latitude"/>
+          <xs:element ref="xcal:longitude"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <xs:element name="latitude" type="xs:string"/>
+  <xs:element name="longitude" type="xs:string"/>
+  
+  <!-- 3.8.1.7 Location -->
+  <xs:complexType name="LocationPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.1.8 Percent Complete -->
+  <xs:complexType name="PercentCompletePropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:IntegerPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <!-- 3.8.1.9 Priority -->
+  <xs:complexType name="PriorityPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:IntegerPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.1.10 Resources -->
+  <xs:complexType name="ResourcesPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextListPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <!-- 3.8.1.11 Status -->
+  <xs:simpleType name="StatusValueType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="TENTATIVE"/> <!-- event -->
+      <xs:enumeration value="CONFIRMED"/> <!-- event -->
+      <xs:enumeration value="CANCELLED"/> <!-- event, task, journal -->
+      <xs:enumeration value="NEEDS-ACTION"/> <!-- task -->
+      <xs:enumeration value="COMPLETED"/> <!-- task -->
+      <xs:enumeration value="IN-PROCESS"/> <!-- task -->
+      <xs:enumeration value="DRAFT"/> <!-- journal -->
+      <xs:enumeration value="FINAL"/> <!-- journal -->
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:complexType name="StatusPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.8.1.12 Summary -->
+  <xs:complexType name="SummaryPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.2 Date and Time Component Properties -->
+  <!-- 3.8.2.1 Date/Time Completed -->
+  <xs:complexType name="CompletedPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:UtcDatetimePropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.2.2 Date/Time End -->
+  <xs:complexType name="DtendPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:DateDatetimePropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.2.3 Date/Time Due -->
+  <xs:complexType name="DuePropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:DateDatetimePropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.2.4 Date/Time Start -->
+  <xs:complexType name="DtstartPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:DateDatetimePropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.2.5 Duration -->
+  <xs:complexType name="DurationPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BasePropertyType">
+        <xs:sequence>
+          <xs:element  name="duration" type="xs:string"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.2.6 Free/Busy Time -->
+  <xs:complexType name="FreebusyPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BasePropertyType">
+        <xs:sequence>
+          <xs:element ref="xcal:period" maxOccurs="unbounded"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.2.7 Time Transparency -->
+  <xs:simpleType name="TranspValueType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="OPAQUE"/>
+      <xs:enumeration value="TRANSPARENT"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:complexType name="TranspPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.2.8 Schedules - - >
+  < ! - - 3.8.2.8.1 Scheduled-by-start - - >
+  <xs:group name="schedule-by-start-end">
+    <xs:sequence>
+      <xs:element ref="xcal:dtstart"/>
+      <xs:element ref="xcal:dtend"/>
+    </xs:sequence>
+  </xs:group>
+  < ! - - 3.8.2.8.2 Scheduled-by-end - - >
+  <xs:group name="schedule-by-end">
+    <xs:sequence>
+      <xs:group ref="xcal:property-duration"/>
+      <xs:element ref="xcal:dtend"/>
+    </xs:sequence>
+  </xs:group>
+  < ! - -  3.8.2.8.3 Scheduled-by-start - - >
+  <xs:group name="schedule-by-start">
+    <xs:sequence>
+      <xs:group ref="xcal:property-duration"/>
+      <xs:element ref="xcal:dtstart"/>
+    </xs:sequence>
+  </xs:group>
+  -->
+  
+  <!-- 3.8.3 Time Zone Component Properties -->
+  <!-- 3.8.3.1 Time Zone Identifier -->
+  <xs:complexType name="TzidPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+        
+  <!-- 3.8.3.2 Time Zone Name -->
+  <xs:complexType name="TznamePropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.3.3 Time Zone Offset From -->
+  <xs:complexType name="TzoffsetfromPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:UtcOffsetPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.3.4 Time Zone Offset To -->
+  <xs:complexType name="TzoffsettoPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:UtcOffsetPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.3.5 Time Zone URL -->
+  <xs:complexType name="TzurlPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:UriPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.4 Relationship Component Properties -->
+  <!-- 3.8.4.1 Attendee -->
+  <xs:complexType name="AttendeePropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:CalAddressPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.4.2 Contact -->
+  <xs:complexType name="ContactPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.4.3 Organizer -->
+  <xs:complexType name="OrganizerPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:CalAddressPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.4.4 Recurrence ID -->
+  <xs:complexType name="RecurrenceIdPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:DateDatetimePropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.4.5 Related-To -->
+  <!-- 3.8.4.6 Uniform Resource Locator -->
+  <xs:complexType name="UrlPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:UriPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.4.7 Unique Identifier -->
+  <xs:complexType name="UidPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.5 Recurrence Component Properties -->
+  <!-- 3.8.5.1 Exception Date/Times -->
+  <xs:complexType name="ExdatePropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:DateDatetimePropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.5.2 Recurrence Date/Times -->
+  <xs:complexType name="RdatePropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:DateDatetimePropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <xs:complexType name="RelatedToPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.5.3 Recurrence Rule -->
+  <xs:complexType name="RrulePropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:RecurPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- x.x.x.x Deprecated ExRule -->
+  <xs:complexType name="ExrulePropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:RecurPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.6 Alarm Component Properties -->
+  <!-- 3.8.6.1 Action -->
+  <xs:simpleType name="ActionValueType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="AUDIO"/>
+      <xs:enumeration value="DISPLAY"/>
+      <xs:enumeration value="EMAIL"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:complexType name="ActionPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.8.6.2 Repeat Count -->
+  <xs:complexType name="RepeatPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:IntegerPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.8.6.3 Trigger -->
+  <xs:complexType name="TriggerPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BasePropertyType">
+        <xs:sequence>
+          <xs:choice>
+            <xs:element name="duration" type="xs:string"/>
+            <xs:element ref="xcal:date-time"/>
+          </xs:choice>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <!-- 3.8.7 Change Management Component Properties -->
+  <!-- 3.8.7.1 Date/Time Created -->
+  <xs:complexType name="CreatedPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:UtcDatetimePropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <!-- 3.8.7.2 Date/Time Stamp -->
+  <xs:complexType name="DtstampPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:UtcDatetimePropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <!-- 3.8.7.3 Last Modified -->
+  <xs:complexType name="LastModifiedPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:UtcDatetimePropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <!-- 3.8.7.4 Sequence Number -->
+  <xs:complexType name="SequencePropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:IntegerPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <!-- 3.8.8 Miscellaneous Component Properties -->
+  <!-- 3.8.8.3 Request Status -->
+  <xs:complexType name="RequestStatusPropType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BasePropertyType">
+        <xs:sequence>
+          <xs:element name="code" type="xs:string" />
+          <xs:element name="description" type="xs:string"/>
+          <xs:element name="extdata" type="xs:string"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+    
+    <!-- 
+           statcode   = 1*DIGIT 1*2("." 1*DIGIT)
+       ;Hierarchical, numeric return status code
+
+       statdesc   = text
+       ;Textual status description
+
+       extdata    = text
+       ;Textual exception data.  For example, the offending property
+       ;name and value or complete property line.
+     -->
+</xs:schema>

Added: trunk/schemas/icalendar/iCalendar-valtypes.xsd
===================================================================
--- trunk/schemas/icalendar/iCalendar-valtypes.xsd	                        (rev 0)
+++ trunk/schemas/icalendar/iCalendar-valtypes.xsd	2011-02-17 21:15:44 UTC (rev 1)
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2010 rel. 3 sp1 (x64) (http://www.altova.com) by Toby Considine (TC9) -->
+<!--non-normative, to support development of WS-Calendar - 2010/10/30. Refer to rfc5545 and xCal in the IETF for normative description-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+           xmlns:xcal="urn:ietf:params:xml:ns:icalendar-2.0" 
+           targetNamespace="urn:ietf:params:xml:ns:icalendar-2.0" 
+           elementFormDefault="qualified">
+          
+  <!-- =====================================================================
+       3.3 Property Value Data Types 
+       ===================================================================== -->
+          
+	<!-- 3.3.1 BINARY -->
+	<xs:element name="binary" type="xs:string"/>
+  
+	<!-- 3.3.2 BOOLEAN -->
+	<xs:element name="boolean" type="xcal:BooleanType" />
+  
+  <xs:simpleType name="BooleanType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="TRUE"/>
+      <xs:enumeration value="FALSE"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+	<!-- 3.3.3 CAL-ADDRESS -->
+  <xs:simpleType name="CalAddressType">
+    <xs:restriction base="xs:string"/>
+  </xs:simpleType>
+  
+  <xs:element name="cal-address" type="xcal:CalAddressType" />  
+  
+	<!-- 3.3.4 DATE -->
+	<xs:element name="date" type="xs:string"/>
+  
+	<!-- 3.3.5 DATE-TIME -->
+	<xs:element name="date-time" type="xs:string"/>
+  
+  <!-- Patterns should allow us to restrict this 
+     e.g.     19980119T070000Z
+  -->
+  <xs:element name="utc-date-time" type="xs:string"/>
+  
+	<!-- 3.3.6 DURATION 
+	<xs:element name="duration" type="xs:string"/>-->
+  
+	<!-- 3.3.7 FLOAT -->
+	<xs:element name="float" type="xs:string"/>
+  
+	<!-- 3.3.8 INTEGER -->
+	<xs:element name="integer" type="xs:string"/>
+  
+	<!-- 3.3.9 PERIOD -->
+	<xs:element name="period" type="xs:string"/>
+  
+  <!-- 3.3.10 RECUR -->
+  <xs:complexType name="RecurType">
+    <xs:sequence>
+      <xs:element name="freq" type="xcal:FreqRecurType"/>
+      <xs:sequence>
+        <xs:choice>
+          <xs:element ref="xcal:until" />
+          <xs:element ref="xcal:count" />
+        </xs:choice>
+      </xs:sequence>
+      <xs:element name="interval" type="xs:string"/>
+      <xs:element name="bysecond" type="xs:string" maxOccurs="unbounded"/>
+      <xs:element name="byminute" type="xs:string" maxOccurs="unbounded"/>
+      <xs:element name="byhour" type="xs:string" maxOccurs="unbounded"/>
+      <xs:element name="byday" type="xs:string" maxOccurs="unbounded"/>
+      <xs:element name="byyearday" type="xs:string" maxOccurs="unbounded"/>
+      <xs:element name="bymonthday" type="xcal:BymonthdayRecurType" maxOccurs="unbounded"/>
+      <xs:element name="byweekno" type="xs:string" maxOccurs="unbounded"/>
+      <xs:element name="bymonth" type="xcal:BymonthRecurType" maxOccurs="unbounded"/>
+      <xs:element name="bysetpos" type="xs:integer" maxOccurs="unbounded"/>
+      <xs:element name="wkst" type="xcal:WeekdayRecurType" />
+    </xs:sequence>
+  </xs:complexType>
+  
+	<xs:simpleType name="FreqRecurType">
+		<xs:restriction base="xs:token">
+			<xs:enumeration value="SECONDLY"/>
+			<xs:enumeration value="MINUTELY"/>
+			<xs:enumeration value="HOURLY"/>
+			<xs:enumeration value="DAILY"/>
+			<xs:enumeration value="WEEKLY"/>
+			<xs:enumeration value="MONTHLY"/>
+			<xs:enumeration value="YEARLY"/>
+		</xs:restriction>
+	</xs:simpleType>
+  
+  <xs:element name="until" type="xcal:UntilRecurType"/>
+  
+  <xs:complexType name="UntilRecurType" >
+    <xs:sequence>
+      <xs:choice>
+        <xs:element ref="xcal:date" />
+        <xs:element ref="xcal:date-time" />
+      </xs:choice>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:element name="count" type="xs:integer"/>
+  
+	<xs:simpleType name="WeekdayRecurType">
+		<xs:restriction base="xs:token">
+			<xs:enumeration value="SU"/>
+			<xs:enumeration value="MO"/>
+			<xs:enumeration value="TU"/>
+			<xs:enumeration value="WE"/>
+			<xs:enumeration value="TH"/>
+			<xs:enumeration value="FR"/>
+			<xs:enumeration value="SA"/>
+		</xs:restriction>
+	</xs:simpleType>
+  
+  <xs:simpleType name="BymonthdayRecurType">
+    <xs:restriction base="xs:integer">
+      <xs:minInclusive value="-31"/>
+      <xs:maxInclusive value="31"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:simpleType name="BymonthRecurType">
+    <xs:restriction base="xs:integer">
+      <xs:minInclusive value="1"/>
+      <xs:maxInclusive value="12"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+	<!-- 3.3.11 TEXT -->
+	<xs:element name="text" type="xs:string"/>
+  
+	<!-- 3.3.12 TIME -->
+	<xs:element name="time" type="xs:string"/>
+  
+	<!-- 3.3.13 URI -->
+	<xs:simpleType name="UriType">
+    <xs:restriction base="xs:string"/>
+  </xs:simpleType>
+  
+  <xs:element name="uri" type="xcal:UriType" />  
+  
+	<!-- 3.3.14 UTC-OFFSET -->
+  <xs:simpleType name="UtcOffsetType">
+    <xs:restriction base="xs:string"/>
+  </xs:simpleType>
+  
+  <xs:element name="utc-offset" type="xcal:UtcOffsetType" />  
+  
+</xs:schema>

Added: trunk/schemas/icalendar/iCalendar-wscal-extensions.xsd
===================================================================
--- trunk/schemas/icalendar/iCalendar-wscal-extensions.xsd	                        (rev 0)
+++ trunk/schemas/icalendar/iCalendar-wscal-extensions.xsd	2011-02-17 21:15:44 UTC (rev 1)
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS WS-Calendar extensions to icalendar -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+           xmlns:xcal="urn:ietf:params:xml:ns:icalendar-2.0" 
+           targetNamespace="urn:ietf:params:xml:ns:icalendar-2.0" 
+           elementFormDefault="qualified">
+
+  <xs:include schemaLocation="iCalendar-valtypes.xsd" />
+            
+  <!-- ===================== Properties =================================  -->
+  <xs:include schemaLocation="iCalendar-props.xsd" />
+            
+  <!-- ===================== Components =================================  -->
+  <xs:include schemaLocation="iCalendar.xsd" />
+          
+  <!-- =====================================================================
+       3.2 Property parameter definitions
+       ===================================================================== -->
+
+  <!-- Parameters that take a duration value -->
+  <xs:complexType name="DurationParameterType" >
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BaseParameterType">
+        <xs:sequence>
+          <xs:element ref="xcal:duration"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <!-- Gap is used in the LINK property -->
+  <xs:element name="gap" type="xcal:DurationParameterType" 
+              substitutionGroup="xcal:baseParameter" />
+
+  <!-- The following are used with attach -->
+  
+  <xs:element name="startbeforetolerance" type="xcal:DurationParameterType" 
+              substitutionGroup="xcal:baseParameter" />
+
+  <xs:element name="startaftertolerance" type="xcal:DurationParameterType" 
+              substitutionGroup="xcal:baseParameter" />
+
+  <xs:element name="endtbeforetolerance" type="xcal:DurationParameterType" 
+              substitutionGroup="xcal:baseParameter" />
+
+  <xs:element name="endaftertolerance" type="xcal:DurationParameterType" 
+              substitutionGroup="xcal:baseParameter" />
+
+  <xs:element name="durationlongtolerance" type="xcal:DurationParameterType" 
+              substitutionGroup="xcal:baseParameter" />
+
+  <xs:element name="durationshorttolerance" type="xcal:DurationParameterType" 
+              substitutionGroup="xcal:baseParameter" />
+
+  <xs:element name="granularity" type="xcal:DurationParameterType" 
+              substitutionGroup="xcal:baseParameter" />
+           
+  <!-- =====================================================================
+       3.4 Calendar Components
+       ===================================================================== -->  
+
+  <xs:complexType name="WsCalendarGluonType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BaseComponentType"/>
+    </xs:complexContent>
+  </xs:complexType>
+              
+  <xs:element name="gluon" type="xcal:WsCalendarGluonType"
+              substitutionGroup="xcal:baseComponent"/>
+
+  <xs:complexType name="WsCalendarIntervalType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BaseComponentType"/>
+    </xs:complexContent>
+  </xs:complexType>
+              
+  <xs:element name="interval" type="xcal:WsCalendarIntervalType"
+              substitutionGroup="xcal:baseComponent"/>
+
+  <!-- =====================================================================
+       3.7 Calendar Properties
+       ===================================================================== -->  
+
+  <xs:complexType name="WscalendarTypeType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:TextPropertyType"/>
+    </xs:complexContent>
+  </xs:complexType>
+    
+  <xs:complexType name="WscalendarAttachType">
+    <xs:annotation>
+      <xs:documentation>types the content of the xCal attach element</xs:documentation>
+    </xs:annotation>
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BasePropertyType">
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="artifact" block="">
+            <xs:complexType>
+              <xs:annotation>
+                <xs:documentation>The artifact is here for use in extending by other specifications, to to allow attributes from other namespaces to be added to ws-calendar-based schemas.</xs:documentation>
+              </xs:annotation>
+              <xs:complexContent>
+                <xs:restriction base="xs:anyType">
+                  <xs:anyAttribute namespace="##other" processContents="lax"/>
+                </xs:restriction>
+              </xs:complexContent>
+            </xs:complexType>
+          </xs:element>
+          <xs:element ref="xcal:uri"/>
+          <xs:element ref="xcal:text"/>
+        </xs:choice>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>  
+
+  <xs:element name="x-wscalendar-attach" 
+              type="xcal:WscalendarAttachType"
+              substitutionGroup="xcal:baseProperty" />
+
+  <xs:element name="x-wscalendar-type" 
+              type="xcal:WscalendarTypeType"
+              substitutionGroup="xcal:baseProperty" />
+</xs:schema>

Added: trunk/schemas/icalendar/iCalendar.xsd
===================================================================
--- trunk/schemas/icalendar/iCalendar.xsd	                        (rev 0)
+++ trunk/schemas/icalendar/iCalendar.xsd	2011-02-17 21:15:44 UTC (rev 1)
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2010 rel. 3 sp1 (x64) (http://www.altova.com) by Toby Considine (TC9) -->
+<!--non-normative, to support development of WS-Calendar - 2010/10/30. Refer to rfc5545 and xCal in the IETF for normative description-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+           xmlns:xcal="urn:ietf:params:xml:ns:icalendar-2.0" 
+           targetNamespace="urn:ietf:params:xml:ns:icalendar-2.0" 
+           elementFormDefault="qualified">
+            
+  <!-- ===================== Standard Extensions =======================  -->
+  <xs:include schemaLocation="iCalendar-link-extension.xsd" />
+            
+  <!-- ===================== Proprietary Extensions =======================  -->
+  <xs:include schemaLocation="iCalendar-bw-extensions.xsd" />
+  <xs:include schemaLocation="iCalendar-ms-extensions.xsd" />
+  <xs:include schemaLocation="iCalendar-wscal-extensions.xsd" />
+           
+  <!-- =====================================================================
+       3.4 Calendar Components
+       ===================================================================== -->  
+            
+  <xs:include schemaLocation="iCalendar-props.xsd" />
+          
+  <xs:complexType name="BaseComponentType" abstract="true" >
+    <xs:sequence>
+      <xs:element name="properties" type="xcal:ArrayOfProperties"/>
+      <xs:element name="components" type="xcal:ArrayOfComponents"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:element name="baseComponent" type="xcal:BaseComponentType" />
+
+  <xs:complexType name="ArrayOfComponents">
+    <xs:sequence>
+      <xs:element ref="xcal:baseComponent" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:element name="vevent" type="xcal:VeventType"
+              substitutionGroup="xcal:baseComponent"/>
+              
+  <xs:element name="vtodo" type="xcal:VtodoType"
+              substitutionGroup="xcal:baseComponent"/>
+              
+  <xs:element name="vjournal" type="xcal:VjournalType"
+              substitutionGroup="xcal:baseComponent"/>
+              
+  <xs:element name="vfreebusy" type="xcal:VfreebusyType"
+              substitutionGroup="xcal:baseComponent"/>
+              
+  <xs:element name="vtimezone" type="xcal:VtimezoneType"
+              substitutionGroup="xcal:baseComponent"/>
+              
+  <xs:element name="standard" type="xcal:StandardType"
+              substitutionGroup="xcal:baseComponent"/>
+              
+  <xs:element name="daylight" type="xcal:DaylightType"
+              substitutionGroup="xcal:baseComponent"/>
+              
+  <xs:element name="valarm" type="xcal:ValarmType"
+              substitutionGroup="xcal:baseComponent"/>
+  
+	<!-- 3.4 iCalendar Stream -->
+	<xs:complexType name="IcalendarType">
+		<xs:sequence>
+			<xs:element name="vcalendar" type="xcal:VcalendarType" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+  
+	<!-- 3.6 Calendar Components -->
+	<xs:complexType name="VcalendarType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BaseComponentType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+	<!-- 3.6.1 Event Component -->
+  <xs:complexType name="VeventType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BaseComponentType"/>
+    </xs:complexContent>
+  </xs:complexType>
+
+	<!-- 3.6.2 To-do Component -->
+  <xs:complexType name="VtodoType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BaseComponentType"/>
+    </xs:complexContent>
+  </xs:complexType>
+
+	<!-- 3.6.3 Journal Component -->
+  <xs:complexType name="VjournalType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BaseComponentType"/>
+    </xs:complexContent>
+  </xs:complexType>
+  
+	<!-- 3.6.4 Free/Busy Component -->
+  <xs:complexType name="VfreebusyType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BaseComponentType"/>
+    </xs:complexContent>
+  </xs:complexType>
+
+	<!-- 3.6.5 timezone -->
+  <xs:complexType name="VtimezoneType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BaseComponentType"/>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="StandardType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BaseComponentType"/>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="DaylightType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BaseComponentType"/>
+    </xs:complexContent>
+  </xs:complexType>
+
+	<!-- 3.6.6 Alarm Component -->
+  <xs:complexType name="ValarmType">
+    <xs:complexContent mixed="false">
+      <xs:extension base="xcal:BaseComponentType"/>
+    </xs:complexContent>
+  </xs:complexType>
+</xs:schema>

Added: trunk/schemas/tzsvr/tzservice.xsd
===================================================================
--- trunk/schemas/tzsvr/tzservice.xsd	                        (rev 0)
+++ trunk/schemas/tzsvr/tzservice.xsd	2011-02-17 21:15:44 UTC (rev 1)
@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" 
+        xmlns:tns="urn:ietf:params:xml:ns:timezone-service" 
+        xmlns:xcal="urn:ietf:params:xml:ns:icalendar-2.0"
+        targetNamespace="urn:ietf:params:xml:ns:timezone-service" 
+        elementFormDefault="qualified">
+  <!-- =====================================================================
+       Timezones service XML schema 
+       ===================================================================== -->
+        
+  <import schemaLocation="../xml.xsd" 
+          namespace="http://www.w3.org/XML/1998/namespace" />
+        
+  <import schemaLocation="../icalendar/iCalendar.xsd" 
+          namespace="urn:ietf:params:xml:ns:icalendar-2.0" />
+  
+  <!-- *********************************************************************
+                             basic types
+       ********************************************************************* -->
+          
+  <simpleType name="CalscaleType">
+    <annotation>
+      <documentation xml:lang="en">
+        The calendar system defines how rules, dates and times are to be 
+        interpreted. Currently only the value "Gregorian" is supported, 
+        referring to the Gregorian calendar scale. If this element is not 
+        present in its normal context, then the value "Gregorian" MUST be assumed. 
+      </documentation>
+    </annotation>
+    <restriction base="string"/>
+  </simpleType>
+
+  <simpleType name="DtstampType">
+    <annotation>
+      <documentation xml:lang="en">
+        Provides the UTC date and time when a substantive change was made to the 
+        timezone data.  
+      </documentation>
+    </annotation>
+    <restriction base="string"/>
+  </simpleType>
+
+  <simpleType name="LastmodifiedType">
+    <annotation>
+      <documentation xml:lang="en">
+        Provides the UTC date and time that the timezone data was last modified. 
+      </documentation>
+    </annotation>
+    <restriction base="string"/>
+  </simpleType>
+  
+  <complexType name="LocalNameType">
+    <annotation>
+      <documentation xml:lang="en">
+        Defines one or more localized names that are used when a timezone 
+        identifier needs to be presented to a user. The xml:lang attribute is 
+        used to indicate the language associated with each value. If multiple 
+        names are provided for the same locale the first is considered the 
+        preferred name.
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="string">
+        <attribute ref="xml:lang" />
+      </extension>
+    </simpleContent>
+  </complexType>
+              
+  <simpleType name="OnsetType">
+    <annotation>
+      <documentation xml:lang="en">
+        The onset element defines the local time at which the observance takes effect.   
+      </documentation>
+    </annotation>
+    <restriction base="string"/>
+  </simpleType>
+              
+  <simpleType name="TzidType">
+    <annotation>
+      <documentation xml:lang="en">
+        The text value is the identifier of the timezone being referred to.  
+      </documentation>
+    </annotation>
+    <restriction base="string"/>
+  </simpleType>
+              
+  <simpleType name="UtcOffsetFromType">
+    <annotation>
+      <documentation xml:lang="en">
+        The utc-offset-from element defines the UTC offset in hours and minutes 
+        before the start of this observance.   
+      </documentation>
+    </annotation>
+    <restriction base="string"/>
+  </simpleType>
+              
+  <simpleType name="UtcOffsetToType">
+    <annotation>
+      <documentation xml:lang="en">
+        The utc-offset-to element defines the UTC offset in hours and minutes at 
+        and after the start of this observance.   
+      </documentation>
+    </annotation>
+    <restriction base="string"/>
+  </simpleType>
+  
+  <complexType name="AliasType">
+    <annotation>
+      <documentation xml:lang="en">
+        Defines alternative identifiers that can be used for the timezone. This 
+        feature allows mapping of old identifiers onto new. 
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="string">
+        <attribute ref="xml:lang" />
+      </extension>
+    </simpleContent>
+  </complexType>
+  
+  <complexType name="BaseResultType" abstract="true" />
+  
+  <!-- *********************************************************************
+                             capabilities response
+       ********************************************************************* -->
+  
+  <complexType name="CapabilitiesAcceptParameterType">
+    <annotation>
+      <documentation xml:lang="en">
+        This defines the name, type and characteristics of an operation parameter. 
+      </documentation>
+    </annotation>
+    <sequence> 
+      <element name="name" type="string" />
+      <element name="required" type="boolean" />
+      <element name="multi" type="boolean" />
+      <element name="value" type="string" />
+      <element name="description" type="string" />
+    </sequence>
+  </complexType>
+  
+  <complexType name="CapabilitiesOperationType">
+    <annotation>
+      <documentation xml:lang="en">
+        The element used as the container for information defining an operation 
+        and its parameters. .
+      </documentation>
+    </annotation>
+    <sequence> 
+      <element name="action" type="string" />
+      <element name="description" type="string" />
+      <element name="accept-parameter" type="tns:CapabilitiesAcceptParameterType" 
+               maxOccurs="unbounded" />
+    </sequence>
+  </complexType>
+  
+  <complexType name="CapabilitiesType">
+    <annotation>
+      <documentation xml:lang="en">
+           The root (top-level) element used as the container for capabilities information.
+      </documentation>
+    </annotation>
+    <complexContent mixed="false">
+      <extension base="tns:BaseResultType">
+        <sequence> 
+          <element name="operation" type="tns:CapabilitiesOperationType"
+                    maxOccurs="unbounded" />
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  
+  <element name="capabilities" type="tns:CapabilitiesType" />
+  
+  <!-- *********************************************************************
+                             list response
+       ********************************************************************* -->
+  
+  <complexType name="SummaryType">
+    <annotation>
+      <documentation xml:lang="en">
+        This defines the element that provides summary information for a timezone 
+        in the timezones list. 
+      </documentation>
+    </annotation>
+    <sequence >
+      <element name="tzid" type="tns:TzidType" minOccurs="1" />
+      <element name="last-modified" type="tns:LastmodifiedType" />
+      <element name="local-name" type="tns:LocalNameType"
+               maxOccurs="unbounded" />
+      <element name="alias" type="tns:AliasType"
+               maxOccurs="unbounded" />
+    </sequence>
+  </complexType>
+  
+  <complexType name="TimezoneListType">
+    <annotation>
+      <documentation xml:lang="en">
+        This defines the root (top-level) element used as the container for 
+        a timezone listing.  
+      </documentation>
+    </annotation>
+    <complexContent mixed="false">
+      <extension base="tns:BaseResultType">
+        <sequence >
+          <element name="dtstamp" type="tns:DtstampType" minOccurs="1" />
+          <element name="summary" type="tns:SummaryType"
+                   maxOccurs="unbounded"  />
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  
+  <element name="timezone-list" type="tns:TimezoneListType" />
+  
+  <!-- *********************************************************************
+                            expand response
+       ********************************************************************* -->
+  
+  <complexType name="ObservanceType">
+    <annotation>
+      <documentation xml:lang="en">
+        In an expanded timezone, the observance element specifies a single 
+        timezone observance.  
+      </documentation>
+    </annotation>
+    <sequence> 
+      <element name="name" type="string" />
+      <element name="local-name" type="tns:LocalNameType"
+               maxOccurs="unbounded" />
+      <element name="onset" type="tns:OnsetType" minOccurs="1" />
+      <element name="utc-offset-from" type="tns:UtcOffsetFromType" minOccurs="1" />
+      <element name="utc-offset-to" type="tns:UtcOffsetToType" minOccurs="1" />
+    </sequence>
+  </complexType>
+  
+  <complexType name="TzdataType">
+    <annotation>
+      <documentation xml:lang="en">
+        This element specifies expanded timezone data for the range specified in 
+        a request. 
+      </documentation>
+    </annotation>
+    <sequence> 
+      <element name="tzid" type="tns:TzidType" minOccurs="1" />
+      <element name="calscale" type="tns:CalscaleType" />
+      <element name="observance" type="tns:ObservanceType" 
+               maxOccurs="unbounded" />
+    </sequence>
+  </complexType>
+  
+  <complexType name="TimezonesType">
+    <annotation>
+      <documentation xml:lang="en">
+        This defines the root (top-level) element used as the container for 
+        expanded timezone data.  
+      </documentation>
+    </annotation>
+    <complexContent mixed="false">
+      <extension base="tns:BaseResultType">
+        <sequence >
+          <element name="dtstamp" type="tns:DtstampType" minOccurs="1" />
+          <element name="tzdata" type="tns:TzdataType"
+                   maxOccurs="unbounded"  />
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  
+  <element name="timezones" type="tns:TimezonesType" />
+</schema>

Added: trunk/schemas/xml.xsd
===================================================================
--- trunk/schemas/xml.xsd	                        (rev 0)
+++ trunk/schemas/xml.xsd	2011-02-17 21:15:44 UTC (rev 1)
@@ -0,0 +1,134 @@
+<?xml version='1.0'?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en">
+
+ <xs:annotation>
+  <xs:documentation>
+   See http://www.w3.org/XML/1998/namespace.html and
+   http://www.w3.org/TR/REC-xml for information about this namespace.
+
+    This schema document describes the XML namespace, in a form
+    suitable for import by other schema documents.  
+
+    Note that local names in this namespace are intended to be defined
+    only by the World Wide Web Consortium or its subgroups.  The
+    following names are currently defined in this namespace and should
+    not be used with conflicting semantics by any Working Group,
+    specification, or document instance:
+
+    base (as an attribute name): denotes an attribute whose value
+         provides a URI to be used as the base for interpreting any
+         relative URIs in the scope of the element on which it
+         appears; its value is inherited.  This name is reserved
+         by virtue of its definition in the XML Base specification.
+
+    id   (as an attribute name): denotes an attribute whose value
+         should be interpreted as if declared to be of type ID.
+         The xml:id specification is not yet a W3C Recommendation,
+         but this attribute is included here to facilitate experimentation
+         with the mechanisms it proposes.  Note that it is _not_ included
+         in the specialAttrs attribute group.
+
+    lang (as an attribute name): denotes an attribute whose value
+         is a language code for the natural language of the content of
+         any element; its value is inherited.  This name is reserved
+         by virtue of its definition in the XML specification.
+  
+    space (as an attribute name): denotes an attribute whose
+         value is a keyword indicating what whitespace processing
+         discipline is intended for the content of the element; its
+         value is inherited.  This name is reserved by virtue of its
+         definition in the XML specification.
+
+    Father (in any context at all): denotes Jon Bosak, the chair of 
+         the original XML Working Group.  This name is reserved by 
+         the following decision of the W3C XML Plenary and 
+         XML Coordination groups:
+
+             In appreciation for his vision, leadership and dedication
+             the W3C XML Plenary on this 10th day of February, 2000
+             reserves for Jon Bosak in perpetuity the XML name
+             xml:Father
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>This schema defines attributes and an attribute group
+        suitable for use by
+        schemas wishing to allow xml:base, xml:lang or xml:space attributes
+        on elements they define.
+
+        To enable this, such a schema must import this schema
+        for the XML namespace, e.g. as follows:
+        &lt;schema . . .>
+         . . .
+         &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                    schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
+
+        Subsequently, qualified reference to any of the attributes
+        or the group defined below will have the desired effect, e.g.
+
+        &lt;type . . .>
+         . . .
+         &lt;attributeGroup ref="xml:specialAttrs"/>
+ 
+         will define a type which will schema-validate an instance
+         element with any of those attributes</xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>In keeping with the XML Schema WG's standard versioning
+   policy, this schema document will persist at
+   http://www.w3.org/2004/10/xml.xsd.
+   At the date of issue it can also be found at
+   http://www.w3.org/2001/xml.xsd.
+   The schema document at that URI may however change in the future,
+   in order to remain compatible with the latest version of XML Schema
+   itself, or with the XML namespace itself.  In other words, if the XML
+   Schema or XML namespaces change, the version of this document at
+   http://www.w3.org/2001/xml.xsd will change
+   accordingly; the version at
+   http://www.w3.org/2004/10/xml.xsd will not change.
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang" type="xs:language">
+  <xs:annotation>
+   <xs:documentation>Attempting to install the relevant ISO 2- and 3-letter
+         codes as the enumerated possible values is probably never
+         going to be a realistic possibility.  See
+         RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry
+         at http://www.iana.org/assignments/lang-tag-apps.htm for
+         further information.</xs:documentation>
+  </xs:annotation>
+ </xs:attribute>
+
+ <xs:attribute name="space">
+  <xs:simpleType>
+   <xs:restriction base="xs:NCName">
+    <xs:enumeration value="default"/>
+    <xs:enumeration value="preserve"/>
+   </xs:restriction>
+  </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="base" type="xs:anyURI">
+  <xs:annotation>
+   <xs:documentation>See http://www.w3.org/TR/xmlbase/ for
+                     information about this attribute.</xs:documentation>
+  </xs:annotation>
+ </xs:attribute>
+ 
+ <xs:attribute name="id" type="xs:ID">
+  <xs:annotation>
+   <xs:documentation>See http://www.w3.org/TR/xml-id/ for
+                     information about this attribute.</xs:documentation>
+  </xs:annotation>
+ </xs:attribute>
+
+ <xs:attributeGroup name="specialAttrs">
+  <xs:attribute ref="xml:base"/>
+  <xs:attribute ref="xml:lang"/>
+  <xs:attribute ref="xml:space"/>
+ </xs:attributeGroup>
+
+</xs:schema>

Added: trunk/xjcbindings/simplebinding.xml
===================================================================
--- trunk/xjcbindings/simplebinding.xml	                        (rev 0)
+++ trunk/xjcbindings/simplebinding.xml	2011-02-17 21:15:44 UTC (rev 1)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
+               jaxb:version="2.0"
+               xmlns:xjc= "http://java.sun.com/xml/ns/jaxb/xjc" 
+               jaxb:extensionBindingPrefixes="xjc">
+  <jaxb:globalBindings>
+    <xjc:simple />
+  </jaxb:globalBindings>
+</jaxb:bindings>



More information about the Bedework-commit mailing list