[Bedework-commit] bwxml r52 - in trunk: . .settings caldav calws-soap schemas/caldav schemas/icalendar schemas/tzsvr

svnadmin at bedework.org svnadmin at bedework.org
Fri Jul 15 16:04:53 EDT 2011


Author: douglm
Date: 2011-07-15 16:04:51 -0400 (Fri, 15 Jul 2011)
New Revision: 52

Added:
   trunk/.settings/
   trunk/.settings/org.eclipse.wst.validation.prefs
   trunk/calws-soap/calquery-dav.xsd
   trunk/calws-soap/wserrors.xsd
Modified:
   trunk/.classpath
   trunk/.project
   trunk/build.properties
   trunk/build.xml
   trunk/caldav/
   trunk/calws-soap/wsmessages.xsd
   trunk/schemas/caldav/caldav.xsd
   trunk/schemas/icalendar/iCalendar-props.xsd
   trunk/schemas/tzsvr/tzservice.xsd
Log:
Many changes to CalWs-SOAP 

A few changes to the build to better handle changes to dependent projects

Added CalWs-SOAP spec to docs for the moment

Modified: trunk/.classpath
===================================================================
--- trunk/.classpath	2011-06-28 03:05:46 UTC (rev 51)
+++ trunk/.classpath	2011-07-15 20:04:51 UTC (rev 52)
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
 	<classpathentry kind="src" path="exsynchws/gensrc/src"/>
+	<classpathentry kind="src" path="appleServer/gensrc/src"/>
+	<classpathentry excluding="ietf/params/xml/ns/icalendar_2/" kind="src" path="caldav/gensrc/src"/>
 	<classpathentry kind="src" path="catdav/gensrc/src"/>
 	<classpathentry excluding="ietf/params/xml/ns/icalendar_2/|org/oasis_open/docs/ns/xri/" kind="src" path="calws-soap/gensrc/src"/>
 	<classpathentry kind="src" path="exchangews/gensrc/src"/>

Modified: trunk/.project
===================================================================
--- trunk/.project	2011-06-28 03:05:46 UTC (rev 51)
+++ trunk/.project	2011-07-15 20:04:51 UTC (rev 52)
@@ -10,6 +10,11 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.validation.validationbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.jdt.core.javanature</nature>

Added: trunk/.settings/org.eclipse.wst.validation.prefs
===================================================================
--- trunk/.settings/org.eclipse.wst.validation.prefs	                        (rev 0)
+++ trunk/.settings/org.eclipse.wst.validation.prefs	2011-07-15 20:04:51 UTC (rev 52)
@@ -0,0 +1,18 @@
+#Tue Jun 28 11:36:40 EDT 2011
+DELEGATES_PREFERENCE=delegateValidatorList
+USER_BUILD_PREFERENCE=enabledBuildValidatorList
+USER_MANUAL_PREFERENCE=enabledManualValidatorList
+USER_PREFERENCE=overrideGlobalPreferencestruedisableAllValidationfalseversion1.2.300.v201104190230
+eclipse.preferences.version=1
+override=true
+suspend=false
+vals/org.eclipse.jst.jsp.core.JSPBatchValidator/global=FF01
+vals/org.eclipse.jst.jsp.core.JSPContentValidator/global=FF01
+vals/org.eclipse.jst.jsp.core.TLDValidator/global=FF01
+vals/org.eclipse.wst.dtd.core.dtdDTDValidator/global=FF01
+vals/org.eclipse.wst.html.ui.HTMLValidator/global=FF01
+vals/org.eclipse.wst.wsdl.validation.wsdl/global=FF02158org.eclipse.wst.wsdl.validation.internal.eclipse.Validator
+vals/org.eclipse.wst.xml.core.xml/global=FF03
+vals/org.eclipse.wst.xsd.core.xsd/global=TF02162org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator
+vals/org.eclipse.wst.xsl.core.xsl/global=FF02
+vf.version=3

Modified: trunk/build.properties
===================================================================
--- trunk/build.properties	2011-06-28 03:05:46 UTC (rev 51)
+++ trunk/build.properties	2011-07-15 20:04:51 UTC (rev 52)
@@ -16,6 +16,7 @@
 org.bedework.module.vcardschema.jar=bw-vcardschema
 org.bedework.module.icalschema.jar=bw-icalschema
 org.bedework.module.catschema.jar=bw-catschema
+org.bedework.module.caldavschema.jar=bw-caldavschema
 org.bedework.module.catdavschema.jar=bw-catdavschema
 org.bedework.module.calws-soapschema.jar=bw-calws-soapschema
 

Modified: trunk/build.xml
===================================================================
--- trunk/build.xml	2011-06-28 03:05:46 UTC (rev 51)
+++ trunk/build.xml	2011-07-15 20:04:51 UTC (rev 52)
@@ -67,6 +67,9 @@
     <property name="org.bedework.category.base"
               location="${project.home}/category" />
 
+    <property name="org.bedework.caldav.base"
+              location="${project.home}/caldav" />
+
     <property name="org.bedework.catdav.base"
               location="${project.home}/catdav" />
 
@@ -100,6 +103,9 @@
     <property name="category.jar"
               location="${dist.home}/${org.bedework.module.catschema.jar}-${project.version}.jar" />
 
+    <property name="caldavschema.jar"
+              location="${dist.home}/${org.bedework.module.caldavschema.jar}-${project.version}.jar" />
+
     <property name="catdavschema.jar"
               location="${dist.home}/${org.bedework.module.catdavschema.jar}-${project.version}.jar" />
     
@@ -182,6 +188,13 @@
          bindingsdir="${project.home}/xjcbindings"
     />
 
+    <!-- caldav -->
+    <xjc schema="${org.bedework.schemas.base}/caldav/caldav.xsd"
+         module-base="${org.bedework.caldav.base}/gensrc"
+         jar-file="${caldavschema.jar}"
+         bindingsdir="${project.home}/xjcbindings"
+    />
+
     <!-- catdav -->
     <xjc schema="${org.bedework.schemas.base}/catdav/catdav.xsd"
          module-base="${org.bedework.catdav.base}/gensrc"


Property changes on: trunk/caldav
___________________________________________________________________
Name: svn:ignore
   + gensrc


Added: trunk/calws-soap/calquery-dav.xsd
===================================================================
--- trunk/calws-soap/calquery-dav.xsd	                        (rev 0)
+++ trunk/calws-soap/calquery-dav.xsd	2011-07-15 20:04:51 UTC (rev 52)
@@ -0,0 +1,546 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" 
+        xmlns:tns="http://docs.oasis-open.org/ns/wscal/calws-soap" 
+        xmlns:xcal="urn:ietf:params:xml:ns:icalendar-2.0"
+        targetNamespace="http://docs.oasis-open.org/ns/wscal/calws-soap" 
+        elementFormDefault="qualified">
+  <!-- =============================================================
+       This query is functionally equivalent to the CalDAV XML query.
+       
+       It differs in that date/time and boolean attributes must all be XML 
+       schema types.  
+       
+       Note: this schema is incomplete. It currently only defines 
+       elements required for CalWS.
+       ============================================================= -->
+        
+  <import schemaLocation="../schemas/icalendar/iCalendar.xsd" 
+          namespace="urn:ietf:params:xml:ns:icalendar-2.0" />
+<!--   
+  <complexType name="UTCTimeRangeType">
+    <annotation>
+      <documentation xml:lang="en">
+        A type used by a number of filter elements.
+      </documentation>
+    </annotation>
+    <attribute name="start" type="xcal:UTCDateTimeType" />
+    <attribute name="end" type="xcal:UTCDateTimeType" />
+  </complexType>
+       -->  
+  <complexType name="AllcompType">
+    <annotation>
+      <documentation xml:lang="en">
+        The allcomp XML element can be used when the
+        client wants all types of components returned by a calendaring
+        REPORT request.
+      </documentation>
+    </annotation>
+  </complexType>
+  
+  <element name="allcomp" type="tns:AllcompType" />
+<!--         
+  <complexType name="AllpropType">
+    <annotation>
+      <documentation xml:lang="en">
+        The allprop XML element can be used when the
+        client wants all properties of components returned by a
+        calendaring REPORT request.
+      </documentation>
+    </annotation>
+  </complexType>
+  
+  <element name="allprop" type="tns:AllpropType" />
+   -->
+  <complexType name="PropType">
+    <annotation>
+      <documentation xml:lang="en">
+        The "name" attribute specifies the name of the calendar
+        property to return (e.g., ATTENDEE).  The "novalue" attribute can
+        be used by clients to request that the actual value of the
+        property not be returned (if the "novalue" attribute is set to
+        "yes").  In that case, the server will return just the iCalendar
+        property name and any iCalendar parameters and a trailing ":"
+        without the subsequent value data.
+      </documentation>
+    </annotation>
+    <attribute name="name" type="string" use="required" />
+    <attribute name="novalue" type="boolean" default="false" />
+  </complexType>
+  
+  <element name="prop" type="tns:PropType" />
+
+  <complexType name="CompType">
+    <annotation>
+      <documentation xml:lang="en">
+        The name value is a calendar component name (e.g., VEVENT).
+      </documentation>
+    </annotation>
+    <sequence> 
+      <choice minOccurs="0">
+        <element ref="tns:allprop" />
+        <element ref="tns:prop" maxOccurs="unbounded" />
+      </choice>
+      <choice>
+        <element ref="tns:allcomp" />
+        <element ref="tns:comp" maxOccurs="unbounded" />
+      </choice>
+    </sequence>
+    <attribute name="name" type="string" use="required" />
+  </complexType>  
+  
+  <element name="comp" type="tns:CompType" />
+
+  <complexType name="ExpandType">
+    <annotation>
+      <documentation xml:lang="en">
+        The expand XML element specifies that for a
+        given calendaring REPORT request, the server MUST expand the
+        recurrence set into calendar components that define exactly one
+        recurrence instance, and MUST return only those whose scheduled
+        time intersect a specified time range.
+  
+        The "start" attribute specifies the inclusive start of the time
+        range, and the "end" attribute specifies the non-inclusive end of
+        the time range.  Both attributes are specified as date with UTC
+        time value.  The value of the "end" attribute MUST be greater than
+        the value of the "start" attribute.
+  
+        The server MUST use the same logic as defined for time-range 
+        to determine if a recurrence instance intersects the
+        specified time range.
+  
+        Recurring components, other than the initial instance, MUST
+        include a RECURRENCE-ID property indicating which instance they
+        refer to.
+  
+        The returned calendar components MUST NOT use recurrence
+        properties (i.e., EXDATE, EXRULE, RDATE, and RRULE) and MUST NOT
+        have reference to or include VTIMEZONE components.  Date and local
+        time with reference to time zone information MUST be converted
+        into date with UTC time.
+      </documentation>
+    </annotation>
+    <complexContent mixed="false">
+      <extension base="tns:UTCTimeRangeType"/>
+    </complexContent>
+  </complexType>
+  
+  <element name="expand" type="tns:ExpandType" />
+  
+  <complexType name="LimitRecurrenceSetType">
+    <annotation>
+      <documentation xml:lang="en">
+        The limit-recurrence-set XML element specifies
+        that for a given calendaring REPORT request, the server MUST
+        return, in addition to the "master component", only the
+        "overridden components" that impact a specified time range.  An
+        overridden component impacts a time range if its current start and
+        end times overlap the time range, or if the original start and end
+        times - the ones that would have been used if the instance were
+        not overridden - overlap the time range.
+  
+        The "start" attribute specifies the inclusive start of the time
+        range, and the "end" attribute specifies the non-inclusive end of
+        the time range.  Both attributes are specified as date with UTC
+        time value.  The value of the "end" attribute MUST be greater than
+        the value of the "start" attribute.
+  
+        The server MUST use the same logic as defined for time-range 
+        to determine if the current or original scheduled time of an
+        "overridden" recurrence instance intersects the specified time
+        range.
+  
+        Overridden components that have a RANGE parameter on their
+        RECURRENCE-ID property may specify one or more instances in the
+        recurrence set, and some of those instances may fall within the
+        specified time range or may have originally fallen within the
+        specified time range prior to being overridden.  If that is the
+        case, the overridden component MUST be included in the results, as
+        it has a direct impact on the interpretation of instances within
+        the specified time range.
+      </documentation>
+    </annotation>
+    <complexContent mixed="false">
+      <extension base="tns:UTCTimeRangeType"/>
+    </complexContent>
+  </complexType>
+  
+  <element name="limit-recurrence-set" type="tns:LimitRecurrenceSetType" />
+  
+  <complexType name="LimitFreebusySetType">
+    <annotation>
+      <documentation xml:lang="en">
+        The limit-freebusy-set XML element specifies
+        that for a given calendaring REPORT request, the server MUST only
+        return the FREEBUSY property values of a VFREEBUSY component that
+        intersects a specified time range.
+  
+        The "start" attribute specifies the inclusive start of the time
+        range, and the "end" attribute specifies the non-inclusive end of
+        the time range.  Both attributes are specified as "date with UTC
+        time" value.  The value of the "end" attribute MUST be greater
+        than the value of the "start" attribute.
+  
+        The server MUST use the same logic as defined for time-range 
+        to determine if a FREEBUSY property value intersects the
+        specified time range.
+      </documentation>
+    </annotation>
+    <complexContent mixed="false">
+      <extension base="tns:UTCTimeRangeType"/>
+    </complexContent>
+  </complexType>
+  
+  <element name="limit-freebusy-set" type="tns:LimitFreebusySetType" />
+  
+  <group name="ExpandOrLimitType">
+    <sequence>
+      <choice minOccurs="0">
+        <element ref="tns:expand" />
+        <element ref="tns:limit-recurrence-set" />
+      </choice>
+    </sequence> 
+  </group>
+  
+  <complexType name="CalendarDataType">
+    <annotation>
+      <documentation xml:lang="en">
+        When nested in the supported-calendar-data element,
+        the calendar-data XML element specifies a media
+        type supported by the server for calendar object resources.
+  
+        When used in a calendaring REPORT request, the calendar-data 
+        XML element specifies which parts of calendar object
+        resources need to be returned in the response.  If the 
+        calendar-data XML element doesn't contain any comp element,
+        calendar object resources will be returned in their entirety.
+  
+        Finally, when used in a calendaring REPORT response, the 
+        calendar-data XML element specifies the content of a calendar
+        object resource.  Given that XML parsers normalize the two-
+        character sequence CRLF (US-ASCII decimal 13 and US-ASCII decimal
+        10) to a single LF character (US-ASCII decimal 10), the CR
+        character (US-ASCII decimal 13) MAY be omitted in calendar object
+        resources specified in the calendar-data XML element.
+        Furthermore, calendar object resources specified in the 
+        calendar-data XML element MAY be invalid per their media type
+        specification if the calendar-data XML element part of the
+        calendaring REPORT request did not specify required properties
+        (e.g., UID, DTSTAMP, etc.), or specified a prop XML element
+        with the "novalue" attribute set to "yes".
+        
+        NOTE: This schema type only applies to calendar-data used in
+        calendar-query requests. The response with String content is not
+        covered here as it requires mixed content.
+      </documentation>
+    </annotation>
+    
+    <!-- String content content-type text/calendar requested -->
+    
+    <sequence> 
+      <!-- EMPTY when nested in the supported-calendar-data property
+          to specify a supported media type for calendar object
+          resources; -->
+          
+      <!-- when nested in the DAV:prop XML element in a calendaring
+           REPORT request to specify which parts of calendar object
+           resources should be returned in the response;
+       -->
+      <element ref="tns:comp" minOccurs="0" />
+      <choice minOccurs="0">
+        <element ref="tns:expand" />
+        <element ref="tns:limit-recurrence-set" />
+      </choice>
+      <element ref="tns:limit-freebusy-set" minOccurs="0" />
+                  
+      <element ref="xcal:icalendar" minOccurs="0" />
+      <!-- When content-type application/calendar+xml requested -->
+    </sequence>
+    
+    <attribute name="content-type" type="string" default="text/calendar" />
+    <attribute name="version" type="string" default="2.0" />
+  </complexType>
+  
+  <element name="calendar-data" type="tns:CalendarDataType" />
+  
+  <complexType name="TextMatchType">
+    <annotation>
+      <documentation xml:lang="en">
+        The text-match XML element specifies text used
+        for a substring match against the property or parameter value
+        specified in a calendaring REPORT request.
+  
+        The "collation" attribute is used to select the collation that the
+        server MUST use for character string matching.  In the absence of
+        this attribute, the server MUST use the "i;ascii-casemap"
+        collation.
+  
+        The "negate-condition" attribute is used to indicate that this
+        test returns a match if the text matches when the attribute value
+        is set to "no", or return a match if the text does not match, if
+        the attribute value is set to "yes".  For example, this can be
+        used to match components with a STATUS property not set to
+        CANCELLED.
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="string">
+        <attribute name="collation" type="string" default="i;ascii-casemap" />
+        <attribute name="negate-condition" type="boolean" default="false" />
+      </extension>
+    </simpleContent>
+  </complexType>
+  
+  <element name="text-match" type="tns:TextMatchType" />
+  
+  <complexType name="IsNotDefinedType">
+    <annotation>
+      <documentation xml:lang="en">
+        The is-not-defined XML element specifies that a
+        match occurs if the enclosing component, property, or parameter
+        value specified in a calendaring REPORT request does not exist in
+        the calendar data being tested.
+      </documentation>
+    </annotation>
+  </complexType>
+  
+  <element name="is-not-defined" type="tns:IsNotDefinedType" />
+  
+  <complexType name="TimezoneType">
+    <annotation>
+      <documentation xml:lang="en">
+        The timezone XML element specifies that for a
+        given calendaring REPORT request, the server MUST rely on the
+        specified VTIMEZONE component instead of the calendar-timezone 
+        property of the calendar collection, in which the
+        calendar object resource is contained to resolve "date" values and
+        "date with local time" values (i.e., floating time) to "date with
+        UTC time" values.  The server will require this information to
+        determine if a calendar component scheduled with "date" values or
+        "date with local time" values intersects a time-range
+        specified in a calendar-query REPORT.
+  
+        Note:  The iCalendar data embedded within the timezone XML
+        element MUST follow the standard XML character data encoding
+        rules, including use of &lt;, &gt;, &amp; etc. entity encoding or
+        the use of a <![CDATA[ ... ]]> construct.  In the later case, the
+        iCalendar data cannot contain the character sequence ']' + ']' + '>', 
+        which is the end delimiter for the CDATA section.
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="string">
+      </extension>
+    </simpleContent>
+  </complexType>  
+  
+  <element name="timezone" type="tns:TimezoneType" />
+  
+  <complexType name="TimezoneIdType">
+    <annotation>
+      <documentation xml:lang="en">
+        The timezone-id XML element specifies that for a
+        given calendaring REPORT request, the server MUST rely on the
+        specified timezone instead of the calendar-timezone
+        property of the calendar collection, in which the
+        calendar object resource is contained to resolve "date" values and
+        "date with local time" values (i.e., floating time) to "date with
+        UTC time" values.  The server will require this information to
+        determine if a calendar component scheduled with "date" values or
+        "date with local time" values intersects a time-range
+        specified in a calendar-query REPORT.
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="string">
+      </extension>
+    </simpleContent>
+  </complexType>  
+  
+  <element name="timezone-id" type="tns:TimezoneIdType" />
+  
+  <element name="time-range" type="tns:UTCTimeRangeType" >
+    <annotation>
+      <documentation xml:lang="en">
+        The time-range XML element specifies that for a
+        given calendaring REPORT request, the server MUST only return the
+        calendar object resources that, depending on the context, have a
+        component or property whose value intersects a specified time
+        range.
+  
+        The "start" attribute specifies the inclusive start of the time
+        range, and the "end" attribute specifies the non-inclusive end of
+        the time range.  Both attributes MUST be specified as "date with
+        UTC time" value.  Time ranges open at one end can be specified by
+        including only one attribute; however, at least one attribute MUST
+        always be present in the time-range element.  If either the
+        "start" or "end" attribute is not specified in the time-range 
+        XML element, assume "-infinity" and "+infinity" as their
+        value, respectively.  If both "start" and "end" are present, the
+        value of the "end" attribute MUST be greater than the value of the
+        "start" attribute.
+      </documentation>
+    </annotation>
+  </element>  
+  
+  <complexType name="ParamFilterType">
+    <annotation>
+      <documentation xml:lang="en">
+        The param-filter XML element specifies a query
+        targeted at a specific calendar property parameter (e.g.,
+        PARTSTAT) in the scope of the calendar property on which it is
+        defined.  A calendar property parameter is said to match a 
+        param-filter if:
+  
+        *  The param-filter XML element is empty and a parameter of
+           the type specified by the "name" attribute exists on the
+           calendar property being examined;
+  
+        or:
+  
+        *  The param-filter XML element contains a is-not-defined 
+           XML element and no parameter of the type specified by
+           the "name" attribute exists on the calendar property being
+           examined;
+      </documentation>
+    </annotation>
+    <sequence> 
+      <choice minOccurs="0">
+        <element ref="tns:is-not-defined" />
+        <element ref="tns:text-match" />
+      </choice>
+    </sequence>
+    <attribute name="name" type="string" use="required" />
+  </complexType>  
+  
+  <element name="param-filter" type="tns:ParamFilterType" />
+  
+  <complexType name="PropFilterType">
+    <annotation>
+      <documentation xml:lang="en">
+        The prop-filter XML element specifies a query
+        targeted at a specific calendar property (e.g., CATEGORIES) in the
+        scope of the enclosing calendar component.  A calendar property is
+        said to match a prop-filter if:
+  
+        *  The prop-filter XML element is empty and a property of
+           the type specified by the "name" attribute exists in the
+           enclosing calendar component;
+  
+        or:
+  
+        *  The prop-filter XML element contains a is-not-defined 
+           XML element and no property of the type specified by
+           the "name" attribute exists in the enclosing calendar
+           component;
+  
+        or:
+  
+        *  The prop-filter XML element contains a time-range
+           XML element and the property value overlaps the specified time
+           range, and all specified param-filter child XML elements
+           also match the targeted property;
+  
+        or:
+  
+        *  The prop-filter XML element contains a text-match
+           XML element and the property value matches it, and all
+           specified param-filter child XML elements also match the
+           targeted property;
+      </documentation>
+    </annotation>
+    <sequence> 
+      <choice minOccurs="0">
+        <element ref="tns:is-not-defined" />
+        <sequence> 
+          <choice>
+            <element ref="tns:time-range" />
+            <element ref="tns:text-match" />
+          </choice>
+      
+          <element ref="tns:param-filter" minOccurs="0" maxOccurs="unbounded" />
+        </sequence>
+      </choice>
+    </sequence>
+    <attribute name="name" type="string" use="required" />
+  </complexType>  
+  
+  <element name="prop-filter" type="tns:PropFilterType" />
+  
+  <complexType name="CompFilterType">
+    <annotation>
+      <documentation xml:lang="en">
+        The comp-filter XML element specifies a query
+        targeted at the calendar object (i.e., VCALENDAR) or at a specific
+        calendar component type (e.g., VEVENT).  The scope of the
+        comp-filter XML element is the calendar object when used as
+        a child of the filter XML element.  The scope of the
+        comp-filter XML element is the enclosing calendar component
+        when used as a child of another comp-filter XML element.  A
+        comp-filter is said to match if:
+  
+        *  The comp-filter XML element is empty and the calendar
+           object or calendar component type specified by the "name"
+           attribute exists in the current scope;
+  
+        or:
+  
+        *  The comp-filter XML element contains a is-not-defined 
+           XML element and the calendar object or calendar
+           component type specified by the "name" attribute does not exist
+           in the current scope;
+  
+        or:
+  
+        *  The comp-filter XML element contains a time-range
+           XML element and at least one recurrence instance in the
+           targeted calendar component is scheduled to overlap the
+           specified time range, and all specified prop-filter and
+           comp-filter child XML elements also match the targeted
+           calendar component;
+  
+        or:
+  
+        *  The comp-filter XML element only contains prop-filter 
+           and comp-filter child XML elements that all match
+           the targeted calendar component.
+      </documentation>
+    </annotation>
+    <sequence> 
+      <choice minOccurs="0">
+        <element ref="tns:is-not-defined" />
+        <sequence> 
+          <element ref="tns:time-range" minOccurs="0" />
+          <element ref="tns:prop-filter" minOccurs="0" maxOccurs="unbounded" />
+          <element ref="tns:comp-filter" minOccurs="0" maxOccurs="unbounded" />
+        </sequence>
+      </choice>
+    </sequence>
+    <attribute name="name" type="string" use="required" />
+  </complexType>  
+  
+  <element name="comp-filter" type="tns:CompFilterType" />
+  
+  <complexType name="FilterType">
+    <annotation>
+      <documentation xml:lang="en">
+        The filter XML element specifies the search
+        filter used to limit the calendar components returned by a
+        calendaring REPORT request.
+      </documentation>
+    </annotation>
+    <sequence> 
+      <element ref="tns:comp-filter" />
+    </sequence>
+  </complexType>  
+  
+  <element name="filter" type="tns:FilterType" />
+  
+  <!-- 
+         <!ELEMENT calendar-query ((DAV:allprop |
+                                    DAV:propname |
+                                    DAV:prop)?, filter, timezone?, timezone-id?)>
+   -->
+
+</schema>
+

Added: trunk/calws-soap/wserrors.xsd
===================================================================
--- trunk/calws-soap/wserrors.xsd	                        (rev 0)
+++ trunk/calws-soap/wserrors.xsd	2011-07-15 20:04:51 UTC (rev 52)
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE schema >
+<schema xmlns="http://www.w3.org/2001/XMLSchema" 
+        xmlns:tns="http://docs.oasis-open.org/ns/wscal/calws-soap" 
+        xmlns:xcal="urn:ietf:params:xml:ns:icalendar-2.0"
+        xmlns:xrd="http://docs.oasis-open.org/ns/xri/xrd-1.0"
+        targetNamespace="http://docs.oasis-open.org/ns/wscal/calws-soap" 
+        elementFormDefault="qualified">
+  <annotation>
+    <documentation xml:lang="en">
+      This schema fragment defines the error codes and types for use by the 
+      CalWS SOAP web service.
+    </documentation>
+  </annotation>
+
+  <complexType name="ErrorCodeType" >
+  </complexType>
+
+  <element name="error" type="tns:ErrorCodeType" />
+  
+  <complexType name="ErrorResponseType">
+    <annotation>
+      <documentation xml:lang="en">
+           Message from service indicating an error.
+      </documentation>
+    </annotation>
+    <sequence >
+      <element ref="tns:error" />
+      <element name="description" type="string" minOccurs="0" />
+    </sequence>
+  </complexType>
+  
+  <!-- Error codes -->
+  <element name="targetExists" type="tns:ErrorCodeType"
+              substitutionGroup="tns:error" >
+    <annotation>
+      <documentation xml:lang="en">
+        This may not be possible...
+      </documentation>
+    </annotation>
+  </element>
+
+  <element name="targetDoesNotExist" type="tns:ErrorCodeType"
+              substitutionGroup="tns:error" >
+    <annotation>
+      <documentation xml:lang="en">
+        The supplied href does not reference an existing resource.
+      </documentation>
+    </annotation>
+  </element>
+
+  <element name="targetNotEntity" type="tns:ErrorCodeType"
+              substitutionGroup="tns:error" >
+    <annotation>
+      <documentation xml:lang="en">
+        The supplied href does not target an entity. For example a fetch item 
+        was attempted against a collection.
+      </documentation>
+    </annotation>
+  </element>
+
+  <element name="notCalendarData" type="tns:ErrorCodeType" 
+              substitutionGroup="tns:error" >
+    <annotation>
+      <documentation xml:lang="en">
+        The supplied entity is not calendar data.
+      </documentation>
+    </annotation>
+  </element>
+
+  <element name="invalidCalendarData" type="tns:ErrorCodeType"
+              substitutionGroup="tns:error" >
+    <annotation>
+      <documentation xml:lang="en">
+         The supplied entity does not represent valid calendar data.
+      </documentation>
+    </annotation>
+  </element>
+
+  <element name="invalidCalendarObjectResource" type="tns:ErrorCodeType"
+              substitutionGroup="tns:error" />
+  <element name="unsupportedCalendarComponent" type="tns:ErrorCodeType"
+              substitutionGroup="tns:error" >
+    <annotation>
+      <documentation xml:lang="en">
+         Indicates that the calendar collection does not accept components of the
+         type the client is attempting to store. The accepted component types can 
+         be determined by examining the calendar collection properties.
+      </documentation>
+    </annotation>
+  </element>
+
+  <element name="invalidCalendarCollectionLocation" type="tns:ErrorCodeType"
+              substitutionGroup="tns:error" >
+    <annotation>
+      <documentation xml:lang="en">
+         Error indicating at least one of two conditions:
+          1) the server does not allow the creation of calendar collections
+             at the given location in its namespace, or 
+          2) the parent collection of the Request-URI exists but cannot accept members;
+      </documentation>
+    </annotation>
+  </element>
+              
+  <element name="exceedsMaxResourceSize" type="tns:ErrorCodeType"
+              substitutionGroup="tns:error" >
+    <annotation>
+      <documentation xml:lang="en">
+           Error indicating that the total size of the event or task is too large.
+           The maximum date is set by the target system and can be determined
+           from the properties.
+      </documentation>
+    </annotation>
+  </element>
+
+  <element name="beforeMinDateTime" type="tns:ErrorCodeType"
+              substitutionGroup="tns:error" >
+    <annotation>
+      <documentation xml:lang="en">
+           Error indicating that the start or end of an event or task is too
+           far into the past.
+           The minimum date is set by the target system and can be determined
+           from the properties.
+      </documentation>
+    </annotation>
+  </element>
+              
+  <element name="afterMaxDateTime" type="tns:ErrorCodeType"
+              substitutionGroup="tns:error" >
+    <annotation>
+      <documentation xml:lang="en">
+           Error indicating that the start or end of an event or task is too
+           far into the future.
+           The maximum date is set by the target system and can be determined
+           from the properties.
+      </documentation>
+    </annotation>
+  </element>
+  
+  <element name="tooManyInstances" type="tns:ErrorCodeType"
+              substitutionGroup="tns:error" >
+    <annotation>
+      <documentation xml:lang="en">
+           Error indicating that a recurring event has too many instances.
+           The maximum number is set by the target system and can be determined
+           from the properties.
+      </documentation>
+    </annotation>
+  </element>
+              
+  <element name="tooManyAttendeesPerInstance" type="tns:ErrorCodeType"
+              substitutionGroup="tns:error" >
+    <annotation>
+      <documentation xml:lang="en">
+           Error indicating that a scheduling message has too many attendees.
+           The maximum number is set by the target system and can be determined
+           from the properties.
+      </documentation>
+    </annotation>
+  </element>
+              
+  <element name="partialSuccess" type="tns:ErrorCodeType"
+              substitutionGroup="tns:error" >
+    <annotation>
+      <documentation xml:lang="en">
+         Indicates that a MultiOpType operation was partially successful. Returned
+         when the operation is marked as non-atomic and one or more sub-operations
+         failed. The entire response needs to be examined to determine which 
+         operations failed.
+      </documentation>
+    </annotation>
+  </element>
+  
+  <element name="mismatchedEtoken" type="tns:ErrorCodeType"
+              substitutionGroup="tns:error" >
+    <annotation>
+      <documentation xml:lang="en">
+        An update operation was attempted with an etoken value which does not 
+        match that held by the service. The client must refetch the entity to
+        refresh its cached value and etoken.
+        
+        Note that matching of etokens is a server responsibility. The etoken is
+        opaque to the client but probably structured to the server. Certain 
+        non-conflicting updates may be allowed even if the etoken has changed. 
+      </documentation>
+    </annotation>
+  </element>
+
+  <complexType name="InvalidFilterType" >
+    <complexContent mixed="false">
+      <extension base="tns:ErrorCodeType">
+        <sequence> 
+          <element name="detail" type="string" />
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+
+  <element name="invalidFilter" type="tns:InvalidFilterType"
+              substitutionGroup="tns:error" />
+
+  <complexType name="UidConflictType" >
+    <complexContent mixed="false">
+      <extension base="tns:ErrorCodeType">
+        <sequence> 
+          <element name="href" type="string" />
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+
+  <element name="uidConflict" type="tns:UidConflictType"
+              substitutionGroup="tns:error" >
+    <annotation>
+      <documentation xml:lang="en">
+        An attempt was made to store an entity which would result in more than 
+        one entity having equal uids. The entity uid must be unique within a 
+        collection. Recurring event or taks overrides have the same uid and are 
+        considered part of a single entity.
+      </documentation>
+    </annotation>
+  </element>
+
+</schema>

Modified: trunk/calws-soap/wsmessages.xsd
===================================================================
--- trunk/calws-soap/wsmessages.xsd	2011-06-28 03:05:46 UTC (rev 51)
+++ trunk/calws-soap/wsmessages.xsd	2011-07-15 20:04:51 UTC (rev 52)
@@ -3,19 +3,18 @@
 <schema xmlns="http://www.w3.org/2001/XMLSchema" 
         xmlns:tns="http://docs.oasis-open.org/ns/wscal/calws-soap" 
         xmlns:xcal="urn:ietf:params:xml:ns:icalendar-2.0"
-        xmlns:cdav="urn:ietf:params:xml:ns:caldav"
         xmlns:xrd="http://docs.oasis-open.org/ns/xri/xrd-1.0"
         targetNamespace="http://docs.oasis-open.org/ns/wscal/calws-soap" 
         elementFormDefault="qualified">
     
   <import schemaLocation="../schemas/icalendar/iCalendar.xsd" 
           namespace="urn:ietf:params:xml:ns:icalendar-2.0" />
-        
-  <import schemaLocation="../schemas/caldav/caldav.xsd" 
-          namespace="urn:ietf:params:xml:ns:caldav" />
-        
+                 
   <import schemaLocation="../schemas/xrd/xrd-1.0-os.xsd" 
           namespace="http://docs.oasis-open.org/ns/xri/xrd-1.0" />
+        
+  <include schemaLocation="wserrors.xsd" />
+  <include schemaLocation="calquery-dav.xsd" />
 
   <!-- Schema for CalWS SOAP messages. -->
  
@@ -27,78 +26,7 @@
       <enumeration value="Error" />
     </restriction>
   </simpleType>
-
-  <complexType name="ErrorCodeType" >
-  </complexType>
-
-  <element name="error" type="tns:ErrorCodeType" />
   
-  <complexType name="ErrorResponseType">
-    <annotation>
-      <documentation xml:lang="en">
-           Message from service indicating an error.
-      </documentation>
-    </annotation>
-    <sequence >
-      <element ref="tns:error" />
-      <element name="description" type="string" minOccurs="0" />
-    </sequence>
-  </complexType>
-  
-  <!-- Error codes -->
-  <element name="targetExists" type="tns:ErrorCodeType"
-              substitutionGroup="tns:error" />
-  <element name="targetDoesNotExist" type="tns:ErrorCodeType"
-              substitutionGroup="tns:error" />
-  <element name="targetNotEntity" type="tns:ErrorCodeType"
-              substitutionGroup="tns:error" />
-  <element name="notCalendarData" type="tns:ErrorCodeType" 
-              substitutionGroup="tns:error" />
-  <element name="invalidCalendarData" type="tns:ErrorCodeType"
-              substitutionGroup="tns:error" />
-  <element name="invalidCalendarObjectResource" type="tns:ErrorCodeType"
-              substitutionGroup="tns:error" />
-  <element name="unsupportedCalendarComponent" type="tns:ErrorCodeType"
-              substitutionGroup="tns:error" />
-  <element name="invalidCalendarCollectionLocation" type="tns:ErrorCodeType"
-              substitutionGroup="tns:error" />
-  <element name="exceedsMaxResourceSize" type="tns:ErrorCodeType"
-              substitutionGroup="tns:error" />
-  <element name="beforeMinDateTime" type="tns:ErrorCodeType"
-              substitutionGroup="tns:error" />
-  <element name="afterMaxDateTime" type="tns:ErrorCodeType"
-              substitutionGroup="tns:error" />
-  <element name="tooManyInstances" type="tns:ErrorCodeType"
-              substitutionGroup="tns:error" />
-  <element name="tooManyAttendeesPerInstance" type="tns:ErrorCodeType"
-              substitutionGroup="tns:error" />
-
-  <complexType name="InvalidFilterType" >
-    <complexContent mixed="false">
-      <extension base="tns:ErrorCodeType">
-        <sequence> 
-          <element name="detail" type="string" />
-        </sequence>
-      </extension>
-    </complexContent>
-  </complexType>
-
-  <element name="invalidFilter" type="tns:InvalidFilterType"
-              substitutionGroup="tns:error" />
-
-  <complexType name="UidConflictType" >
-    <complexContent mixed="false">
-      <extension base="tns:ErrorCodeType">
-        <sequence> 
-          <element name="href" type="string" />
-        </sequence>
-      </extension>
-    </complexContent>
-  </complexType>
-
-  <element name="uidConflict" type="tns:UidConflictType"
-              substitutionGroup="tns:error" />
-  
   <simpleType name="DepthType">
     <restriction base="string">
     </restriction>
@@ -115,12 +43,15 @@
     <sequence>
       <element name="href" type="string" />
     </sequence>
+    
+    <attribute name="id" type="int" default="0" />
   </complexType>
   
-  <complexType name="BaseResponseType">
+  <complexType name="BaseResponseType" abstract="true">
     <annotation>
       <documentation xml:lang="en">
-           Responses have this as the base type.
+           Responses have this as the base type. If the request had an id 
+           attribute its value will be set as the response id attribute value.
       </documentation>
     </annotation>
     <sequence>
@@ -128,7 +59,11 @@
       <element name="message" type="string" minOccurs="0" />
       <element name="errorResponse" type="tns:ErrorResponseType" minOccurs="0" />
     </sequence>
+    
+    <attribute name="id" type="int" default="0" />
   </complexType>
+  
+  <element name="baseResponse" type="tns:BaseResponseType" abstract="true"/>
 
   <complexType name="UTCTimeRangeType">
     <sequence>
@@ -161,9 +96,13 @@
            Respond to the get-properties request
       </documentation>
     </annotation>
-    <sequence>
-      <element ref="xrd:XRD" />
-    </sequence>
+    <complexContent mixed="false">
+      <extension base="tns:BaseResponseType">
+        <sequence>
+          <element ref="xrd:XRD" />
+        </sequence>
+      </extension>
+    </complexContent>
   </complexType>
 
   <element name="getPropertiesResponse" type="tns:GetPropertiesResponseType" />
@@ -204,15 +143,15 @@
   <element name="supported-calendar-component-set" 
            type="tns:SupportedCalendarComponentSetType" />
            
-  <!-- =========================== freebusyQuery =========================== -->
+  <!-- ========================== freebusyReport =========================== -->
   
   <complexType name="FreebusyReportType">
     <annotation>
       <documentation xml:lang="en">
-           Request a freebusy report on the targeted resource. This is NOT a
+           Request a freebusy report on the targeted principal. This is a
            scheduling freebusy request which incorporates information such as 
-           availability etc, but a simple report of the state of the targeted
-           collection(s)
+           availability etc. As such the response may depend on information not
+           visible to the caller.
       </documentation>
     </annotation>
     <complexContent mixed="false">
@@ -220,7 +159,6 @@
         <sequence>
           <element name="time-range" type="tns:UTCTimeRangeType"
                    minOccurs="0" />
-          <element name="depth" type="int" />
         </sequence>
       </extension>
     </complexContent>
@@ -247,7 +185,8 @@
     </complexContent>
   </complexType>
 
-  <element name="freebusyReportResponse" type="tns:FreebusyReportResponseType" />
+  <element name="freebusyReportResponse" type="tns:FreebusyReportResponseType"
+           substitutionGroup="tns:baseResponse" />
 
   <!-- ======================== calendar-query ============================= -->
   
@@ -287,7 +226,7 @@
       </choice>
     </sequence>
     
-    <attribute name="content-type" type="string" default="application/xml+calendar" />
+    <attribute name="content-type" type="string" default="application/calendar+xml" />
     <attribute name="version" type="string" default="2.0" />
   </complexType>
    
@@ -327,7 +266,7 @@
     </annotation>
     <sequence>
       <element name="href" type="string" />
-      <element name="etag" type="string" />
+      <element name="etoken" type="string" />
       <element ref="tns:propstat" minOccurs="0" maxOccurs="unbounded"/>
     </sequence>
   </complexType>
@@ -362,8 +301,8 @@
             <element ref="xcal:icalendar" />
           </choice>
           <choice minOccurs="0">
-            <element name="expand" type="cdav:ExpandType" />
-            <element name="limitRecurrenceSet" type="cdav:LimitRecurrenceSetType" />
+            <element name="expand" type="tns:ExpandType" />
+            <element name="limitRecurrenceSet" type="tns:LimitRecurrenceSetType" />
           </choice>
         </sequence>
       </extension>
@@ -380,7 +319,7 @@
       <extension base="tns:CalendarQueryOrMultigetBaseType">
         <sequence>
           <element ref="tns:depth" />
-          <element ref="cdav:filter" />
+          <element ref="tns:filter" />
         </sequence>
       </extension>
     </complexContent>
@@ -462,12 +401,14 @@
       <extension base="tns:BaseResponseType">
         <sequence>
           <element name="href" type="string" minOccurs="0" />
+          <element name="etoken" type="string" minOccurs="0" />
         </sequence>
       </extension>
     </complexContent>
   </complexType>
   
-  <element name="addItemResponse" type="tns:AddItemResponseType" />
+  <element name="addItemResponse" type="tns:AddItemResponseType"
+           substitutionGroup="tns:baseResponse" />
 
   <!-- ============================ fetchItem ============================== -->
   
@@ -493,13 +434,15 @@
     <complexContent mixed="false">
       <extension base="tns:BaseResponseType">
         <sequence>
+          <element name="etoken" type="string" minOccurs="0" />
           <element ref="xcal:icalendar" minOccurs="0" />
         </sequence>
       </extension>
     </complexContent>
   </complexType>
   
-  <element name="fetchItemResponse" type="tns:FetchItemResponseType" />
+  <element name="fetchItemResponse" type="tns:FetchItemResponseType"
+           substitutionGroup="tns:baseResponse" />
 
   <!-- ============================ deleteItem ============================== -->
   
@@ -527,7 +470,8 @@
     </complexContent>
   </complexType>
   
-  <element name="deleteItemResponse" type="tns:DeleteItemResponseType" />
+  <element name="deleteItemResponse" type="tns:DeleteItemResponseType"
+           substitutionGroup="tns:baseResponse" />
 
   <!-- ========================== update-item ============================== -->
   <!-- This is an XML patch operations specifically for xcalendar updates.
@@ -689,11 +633,14 @@
     <annotation>
       <documentation xml:lang="en">
            Message to update a calendar item.
+           
+           The supplied etoken MUST match the etoken held by the service.
       </documentation>
     </annotation>
     <complexContent mixed="false">
       <extension base="tns:BaseRequestType">
         <sequence>
+          <element name="etoken" type="string" />
           <element name="select" type="tns:SelectElementType" 
                    maxOccurs="unbounded" />
         </sequence>
@@ -707,13 +654,105 @@
     <annotation>
       <documentation xml:lang="en">
            Response to message to update an item.
+           
+           The server will return an etoken value which should replace the
+           value currently held by the client. 
       </documentation>
     </annotation>
     <complexContent mixed="false">
       <extension base="tns:BaseResponseType">
+        <sequence>
+          <element name="etoken" type="string" />
+        </sequence>
       </extension>
     </complexContent>
   </complexType> 
 
-  <element name="updateItemResponse" type="tns:UpdateItemResponseType" />
+  <element name="updateItemResponse" type="tns:UpdateItemResponseType"
+           substitutionGroup="tns:baseResponse" />
+
+  <!-- =========================== multiOp =============================== -->
+
+  <complexType name="ArrayOfOperations">
+    <annotation>
+      <documentation xml:lang="en">
+        A structure containing all the operations allowed within a MultiOpType 
+      </documentation>
+    </annotation>
+    <sequence>
+      <choice minOccurs="1" maxOccurs="unbounded"> 
+        <element ref="tns:getProperties"/>
+        <element ref="tns:freebusyReport"/>
+        <element ref="tns:calendarQuery"/>
+        <element ref="tns:calendarMultiget"/>
+        <element ref="tns:addItem"/>
+        <element ref="tns:fetchItem"/>
+        <element ref="tns:deleteItem"/>
+        <element ref="tns:updateItem"/>
+       </choice>
+    </sequence>
+  </complexType>
+
+  <complexType name="MultiOpType">
+    <annotation>
+      <documentation xml:lang="en">
+           This type is a wrapper around a number of sub-operations allowing 
+           complex structures to be updated in a single, atomic operation.
+           
+           Each sub-operation is one of the other possible operations, e.g. 
+           updateItem, deleteItem etc.
+           
+           Inclusion of a multiOp is disallowed.
+           
+           The response is a MultiOpResponseType which wraps one response per
+           sub-operation. It will terminate on the first failure and all 
+           updates to that point rolled back.
+           
+           Inclusion of an id attribute in the sub-operation request will aid
+           in associating responses with requests.
+      </documentation>
+    </annotation>
+    <complexContent mixed="false">
+      <extension base="tns:BaseRequestType">
+        <sequence>
+          <element name="operations" 
+                   type="tns:ArrayOfOperations"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  
+  <element name="multiOp" type="tns:MultiOpType" />
+
+  <complexType name="ArrayOfResponses">
+    <annotation>
+      <documentation xml:lang="en">
+        A structure containing all the responses from a MultiOpType operation 
+      </documentation>
+    </annotation>
+    <sequence>
+      <element ref="tns:baseResponse" minOccurs="0" maxOccurs="unbounded"/>
+    </sequence>
+  </complexType>
+
+  <complexType name="MultiOpResponseType">
+    <annotation>
+      <documentation xml:lang="en">
+           Response to a multi-op message. This is a sequence of responses to 
+           each operation. The multi-op operation itself has a status which is 
+           almost always success. Each embedded response needs to be examined to
+           determine if it succeeded or failed.
+      </documentation>
+    </annotation>
+    <complexContent mixed="false">
+      <extension base="tns:BaseResponseType">
+        <sequence>
+          <element name="responses" 
+                   type="tns:ArrayOfResponses"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType> 
+
+  <element name="multiOpResponse" type="tns:MultiOpResponseType" />
 </schema>

Modified: trunk/schemas/caldav/caldav.xsd
===================================================================
--- trunk/schemas/caldav/caldav.xsd	2011-06-28 03:05:46 UTC (rev 51)
+++ trunk/schemas/caldav/caldav.xsd	2011-07-15 20:04:51 UTC (rev 52)
@@ -267,7 +267,7 @@
       <element ref="tns:limit-freebusy-set" minOccurs="0" />
                   
       <element ref="xcal:icalendar" minOccurs="0" />
-      <!-- When content-type application/xml+calendar requested -->
+      <!-- When content-type application/calendar+xml requested -->
     </sequence>
     
     <attribute name="content-type" type="string" default="text/calendar" />

Modified: trunk/schemas/icalendar/iCalendar-props.xsd
===================================================================
--- trunk/schemas/icalendar/iCalendar-props.xsd	2011-06-28 03:05:46 UTC (rev 51)
+++ trunk/schemas/icalendar/iCalendar-props.xsd	2011-07-15 20:04:51 UTC (rev 52)
@@ -35,7 +35,10 @@
 
   <xs:complexType name="ArrayOfProperties">
     <xs:sequence>
-      <xs:element ref="xcal:baseProperty" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="xcal:baseProperty"/>
+        <xs:element name="tzid" type="xcal:TextPropertyType"/>
+      </xs:choice>
     </xs:sequence>
   </xs:complexType>
   

Modified: trunk/schemas/tzsvr/tzservice.xsd
===================================================================
--- trunk/schemas/tzsvr/tzservice.xsd	2011-06-28 03:05:46 UTC (rev 51)
+++ trunk/schemas/tzsvr/tzservice.xsd	2011-07-15 20:04:51 UTC (rev 52)
@@ -58,8 +58,8 @@
         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 preferred name 
-        can be flagged with the pref attribute.
+        If multiple names are provided for the same locale the preferred 
+        name can be flagged with the pref attribute.
       </documentation>
     </annotation>
     <simpleContent>
@@ -95,7 +95,8 @@
   <simpleType name="UtcOffsetType">
     <annotation>
       <documentation xml:lang="en">
-        This type specifies the UTC offset in hours, minutes and optional seconds.   
+        This type specifies the UTC offset in hours, minutes and 
+        optional seconds.   
       </documentation>
     </annotation>
     <restriction base="string">



More information about the Bedework-commit mailing list