A CALDAV spec extension to allow AND/OR in filters The allcomp XML element can be used when the client wants all types of components returned by a calendaring REPORT request. 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 timeRange 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. 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 timeRange 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. 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 timeRange to determine if a FREEBUSY property value intersects the specified time range. The textMatch 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. 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. 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 timeRange 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 <, >, & etc. entity encoding or the use of a construct. In the later case, the iCalendar data cannot contain the character sequence ']' + ']' + '>', which is the end delimiter for the CDATA section. 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 timeRange specified in a calendar-query REPORT. The timeRange 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 timeRange element. If either the "start" or "end" attribute is not specified in the timeRange 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. The paramFilter 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 paramFilter if: * The paramFilter XML element is empty and a parameter of the type specified by the "name" attribute exists on the calendar property being examined; or: * The paramFilter 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; The propFilter 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 propFilter if: * The propFilter XML element is empty and a property of the type specified by the "name" attribute exists in the enclosing calendar component; or: * The propFilter 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 propFilter XML element contains a timeRange XML element and the property value overlaps the specified time range, and all specified paramFilter child XML elements also match the targeted property; or: * The propFilter XML element contains a textMatch XML element and the property value matches it, and all specified paramFilter child XML elements also match the targeted property; The compFilter 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 compFilter XML element is the calendar object when used as a child of the filter XML element. The scope of the compFilter XML element is the enclosing calendar component when used as a child of another compFilter XML element. A compFilter is said to match if: * The compFilter XML element is empty and the calendar object or calendar component type specified by the "name" attribute exists in the current scope; or: * The compFilter 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 compFilter XML element contains a timeRange XML element and at least one recurrence instance in the targeted calendar component is scheduled to overlap the specified time range, and all specified propFilter and compFilter child XML elements also match the targeted calendar component; or: * The compFilter XML element only contains propFilter and compFilter child XML elements that all match the targeted calendar component. The filter XML element specifies the search filter used to limit the calendar components returned by a calendaring REPORT request.