<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="../rfc2629.xslt"?><!DOCTYPE rfc SYSTEM "rfc2629.dtd" [<!ENTITY I-D.cheshire-dnsext-dns-sd SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.cheshire-dnsext-dns-sd.xml"><!ENTITY RFC2046 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2046.xml"><!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"><!ENTITY RFC2616 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2616.xml"><!ENTITY RFC2782 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2782.xml"><!ENTITY RFC2818 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2818.xml"><!ENTITY RFC5246 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5246.xml"><!ENTITY RFC5545 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5545.xml"><!ENTITY RFC5646 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5646.xml"><!ENTITY RFC5785 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5785.xml"><!ENTITY RFC6321 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6321.xml"><!ENTITY W3C.REC-xml-20081126 SYSTEM     'http://xml.resource.org/public/rfc/bibxml4/reference.W3C.REC-xml-20081126.xml'><!ENTITY I-D.saintandre-tls-server-id-check SYSTEM   'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.saintandre-tls-server-id-check.xml'><!ENTITY I-D.lear-iana-timezone-database SYSTEM   'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-lear-iana-timezone-database-02.xml'>]><?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?><?rfc strict="yes" ?><?rfc toc="yes"?><?rfc tocdepth="5"?><?rfc symrefs="yes"?><?rfc sortrefs="yes" ?><?rfc compact="yes" ?><?rfc subcompact="no" ?><rfc category="std" docName="draft-douglass-timezone-service-04" ipr="trust200902">  <front>    <title abbrev="Timezone Service Protocol">Timezone Service Protocol</title>    <author initials="M." surname="Douglass" fullname="Michael Douglass">      <organization abbrev="RPI">Rensselaer Polytechnic Institute</organization>      <address>        <postal>          <street>110 8th Street</street>          <city>Troy</city>          <region>NY</region>          <code>12180</code>          <country>USA</country>        </postal>        <email>douglm@rpi.edu</email>        <uri>http://www.rpi.edu/</uri>      </address>    </author>    <author initials="C." surname="Daboo" fullname="Cyrus Daboo">      <organization abbrev="Apple">Apple Inc.</organization>      <address>        <postal>          <street>1 Infinite Loop</street>          <city>Cupertino</city>          <region>CA</region>          <code>95014</code>          <country>USA</country>        </postal>        <email>cyrus@daboo.name</email>        <uri>http://www.apple.com/</uri>      </address>    </author>    <date />    <area>Applications</area>    <keyword>timezones</keyword>    <keyword>calendaring</keyword>    <keyword>scheduling</keyword>    <abstract>      <t>        This document defines a timezone service protocol that allows reliable,        secure and fast delivery of timezone information to client systems such        as calendaring and scheduling applications or operating systems.      </t>    </abstract>  </front>  <middle>    <section title="Introduction">        <t>          Timezone information, in general, combines a Universal Coordinated           Time (UTC) offset with daylight          saving time (DST) rules. Timezones are typically tied to specific          geographic and geopolitical regions. Whilst the UTC offset for          particular regions changes infrequently, DST rules can change          frequently and sometimes with very little notice           (sometimes hours before a change comes into effect).        </t>        <t>          Calendaring and scheduling systems, such as those that use          <xref target='RFC5545'>iCalendar</xref>, as well as operating systems,          critically rely on timezone information to determine the correct local          time. As such they need to be kept up to date with changes to timezone          information. To date there has been no fast and easy way to do that.          Timezone data is often supplied in the form of a set of data          files that have to be "compiled" into a suitable database format for          use by the client application or operating system. In the case of          operating systems, those changes often only get propagated out to          client machines when there is an operating system update and those          may not be frequent enough to ensure accurate timezone data is always           in place.        </t>        <t>          This specification defines a timezone service protocol that allows          for fast, reliable and accurate delivery of timezone information to          client systems. This protocol is based on          <xref target='RFC2616'>HTTP</xref> using a REST style API.        </t>        <t>          This specification does not specify the source of the timezone           information. It is assumed that a reliable and accurate source is          available. One such source is the Olson database - see           <xref target='I-D.lear-iana-timezone-database'/> for a proposal          to host the data in IANA.        </t>        <t>          This specification does not address the need for global timezone           identifiers for timezone data.        </t>        <t>          Discussion of this document should take place on the calsify           mailing list calsify@ietf.org        </t>        <section title="Conventions" anchor="conventions">          <t>            The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",            "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and            "OPTIONAL" in this document are to be interpreted as described            in <xref target="RFC2119" />.          </t>          <t>            This document uses XML DTD fragments            (<xref target="W3C.REC-xml-20081126" />, Section 3.2) as a purely            notational convention.          </t>          <t>            The namespace "urn:ietf:params:xml:ns:timezone-service" is reserved for            the XML elements defined in this specification, its revisions,            and related specifications. XML elements defined by individual            implementations MUST NOT use the "urn:ietf:params:xml:ns:timezone-service"            namespace, and instead should use a namespace that they control.          </t>          <t>            When XML element types in the "urn:ietf:params:xml:ns:timezone-service"            namespace are referenced in this document outside of the context            of an XML fragment, the string "TZ:" will be prefixed to the            element types.          </t>        </section>        <section anchor="glossary_of_terms" title="Glossary of terms">          <t>The following terms with the given meanings are used throughout this            document.            <list style='hanging'>              <t hangText="Timezone Server:">                A server implementing the Timezone Service Protocol defined by                this specification;              </t>              <t hangText="Timezone Identifier:">                A globally unique name which identifies timezone information.               </t>            </list>          </t>        </section>    </section>    <section anchor="architectural_overview" title="Architectural Overview">        <t>            The overall process for the delivery of timezone information can be            visualized via the diagram shown below.            <figure anchor='architecture' title='Timezone Service Architecture'>                <artwork><![CDATA[            ====================  ====================(a)         |   Contributors   |  |   Contributors   |            ====================  ====================                      |                    |            ====================  ==================== (b)         |   Publisher A    |  |   Publisher B    |             ====================  ====================                                  |                      ====================(c)                   |     Provider     |                      ====================                     /            |       \                    /             |        \         ====================     |     ====================(d)      |     Provider     |     |     |     Provider     |         ====================     |     ====================           |           |          |              |           |           |          |              |     ==========  ==========  ==========      ==========(e)  | Client |  | Client |  | Client |      | Client |     ==========  ==========  ==========      ==========]]></artwork>            </figure>        </t>      <t>        The overall service is made up of several layers:        <list style='hanging'>          <t hangText="(a) Contributors:">            Individuals, governments or organizations which provide information            about timezone definitions to the publishing process. There can be            many contributors.          </t>          <t hangText="(b) Publishers:">            Publishers aggregate information from contributors, determine the            reliability of the information and, based on that, generate timezone            definitions. There can            be many publishers, each getting data from many different contributors.            In some cases a publisher may choose to "re-publish" data from another             publisher.          </t>          <t hangText=" (c) Root Providers:">            Servers which obtain and then provide the timezone data from             publishers and make that available to other servers or clients.             There can be            many root providers. Root providers can choose to supply timezone            data from one or more (or all) publishers.          </t>          <t hangText="(d) Local Providers:">            Servers which handle the bulk of the requests and reduce the load            on root servers. These will typically be simple caches of the root            server, located closer to clients. For example a large Internet            Service Provider (ISP) may choose to setup their own local provider            to allow clients within their network to make requests of that server            rather than making requests of servers outside their network. Local            servers will cache and periodically refresh data from the root servers.          </t>          <t hangText="(e) Clients:">            Applications, operating systems etc., that make use of timezone data            and retrieve that from either root or local providers.          </t>        </list>      </t>      <t>        Some of those layers may be coalesced by implementors. For example, a        vendor may choose to implement the entire service as a single monolithic         virtual server with the address embedded in distributed systems. Others         may choose to provide a service consisting of multiple layers of         providers, many local servers and a small number of root servers.      </t>      <t>        This specification is only concerned with the protocol used to exchange        data between providers and from provider to client. This specification        does not specify how contributors pass their information to publishers,        nor how those publishers vet that information to obtain the level of trust        required of the final result.      </t>    </section>    <section anchor="timezone_naming" title="Timezone Naming">      <section anchor="timezone_identifiers"                title="Timezone Identitifiers">        <t>          Timezone identitiers are the canonical names for identifiers. There          MUST be one and only one identifier per specification.           <xref target='RFC5545'>iCalendar Section 3.8.3.1</xref> has           this text on the identifier:          <figure>          <artwork>This is the label by which a time zone calendar component is referenced by any iCalendar properties whose value type is either DATE-TIME or TIME and not intended to specify a UTCor a "floating" time.  The presence of the SOLIDUS character as a prefix, indicates that this "TZID" represents an unique ID in a globally defined time zone registry (when such registry is defined).          </artwork>          </figure>        </t>                <t>          This specification does not define what identifiers should be used.          While the above specifies that names must start with "/" to be globally          unique, it is assumed that a set of timezone identifiers will be           considered the default set with an implied "/" preceding the identifier.        </t>      </section>      <section anchor="timezone_aliases"                title="Timezone Identitifier Aliases">        <t>          Timezone identifier aliases map one timezone identifier onto another.           Aliases allow the timezone service to map old timezone specifications           onto a  new specification.        </t>        <t>          A timezone alias can be provided in the timezone data and should be          mapped on to the target timezone specification. This can be done by           the client or by the server.        </t>        <t>          The client can request that aliases be returned along with summary           information when listing timezones provided by the timezone service.           Clients can then map received timezone identifiers on to the target           perhaps avoiding a fetch of the target specification.        </t>        <t>          Alternatively, the client can just fetch the timezone specification           by supplying the timezone identifier alias. The service will return           the target timezone specification with the tzid optionally set to that           requested.         </t>        <t>          Aliases are identifiers and as such are NOT localized names. They are          also inexact matches to canonical names and may vary over time. For           example US/Eastern is usually mapped on to America/New_York even           though it covers many more local timezones.          </t>      </section>      <section anchor="timezone_localized_names"                title="Timezone Localized Names">        <t>          Localized names are names for timezones which can be presented to a           user in their own language. Each timezone specification may have          one or more localized names associated with it. Each name SHOULD be           unique in its locale as it may be used in a list presented to the          user.        </t>        <t>          The timezone service can be requested to return localized names for timezones by           the addition of request parameters. Names in multiple lanaguages can           be returned in a single request.        </t>      </section>      <section anchor="timezone_name_searches"                title="Timezone Name Searches">        <t>          When requesting information from the timezone service identifiers,           aliases or names may be used depending on context. This will be more          explicitly defined below for each action. In general however, if a           "tzid" request parameter is used then the value may be an identifier           or an alias. When the "name" parameter is used it may be an identifier,          an alias or a localized name.        </t>      </section>    </section>    <section anchor="timezone_service" title="Timezones Service Protocol">      <section anchor="service_details" title="General Considerations">        <section anchor="timezone_formats" title="Timezone Formats">          <t>            The default format for returning timezone definitions is the             <xref target='RFC5545'>iCalendar</xref> data format. In addition,             the <xref target='RFC6321'>iCalendar-in-XML</xref>             representation is also available.           </t>        </section>        <section anchor="inactive_timezone" title="Inactive Timezones">          <t>            Over time zone timezone definitions are replaced by others, but are             maintained for historical purposes. Often times clients are only             concerned with timezone whose definitions are valid for current and             future dates and times. When listing timezones provided by a timezone             service, the server will by default only provide the list of "active"             timezones. However, clients can use a request parameter to have the             server also return details for "inactive" timezones.          </t>        </section>        <section anchor="conditional_timezone" title="Conditional Timezone Requests">          <t>            Timezone information is generally slow moving. However, changes need             to be distributed in a timely manner. The list of timezones that change             from even year-to-year will typically be relatively small.          </t>                    <t>            When listing timezones, a global timestamp is returned by the server,             and that can be used later by clients to determine if any             "substantive" change has occurred in the timezone data. Clients can             use a conditional list request, supplying a previous global timestamp             value, to limit the results to timezones which have changed in a             "substantive" manner since that previous global timestamp. This             allows clients to cache the last global timestamp and to periodically             poll the server for possible changes.           </t>          <t>            A "substantive" change is one which affects the calculated            onsets for a timezone or a change to the region it covers.            Changes to properties such as description are not treated as a             "substantive" change.          </t>          <t>            Clients SHOULD NOT poll for such changes too frequently. See            <xref target='security_considerations'/> on expected client and             server behavior regarding high request rates.          </t>        </section>        <section anchor="timezone_onset_delivery"                 title="Expanded Timezone Data">          <t>            Determining timezone offsets at a particular point in time is             often a complicated process as the rules for daylight saving time             can be complex. To help with this, the timezone service provides an             operation that allows clients to request the server to expand a             timezone definition into a set of "observances" over a fixed period             of time. Each of these observances describes a local onset time             and UTC offsets for the prior time and the observance time.             Together, these provide a quick way for "thin" clients to             determine an appropriate UTF offset for an arbitrary date without             having to do full timezone expansion themselves.          </t>        </section>          <section anchor="server_requirements" title="Server Requirements">          <t>            All servers MUST deliver timezone information for all timezones. This            means that any client API implementation can go to a single server to            get all timezone information. In turn, any server can refresh any of            the data from any other server - though the root servers may provide            the most up-to-date copy of the data.          </t>          <t>            All service providers MUST deliver functionally equivalent data for            all timezones. This ensures that all parties in a contract            agree on the UTC time. Service providers (or publishers) may choose to            map a particular region on to a different timezone identifier to            correct a deficiency in the original timezone specification.          </t>          <t>            With opaque timezone identifiers this remapping may be short lived and            the mapping can revert to the original identifier once the deficiency            has been addressed by the publisher.          </t>        </section>        <section anchor="timezone_selection" title="Extensions">          <t>            This protocol is designed to be extensible through a standards based             registration mechanism (see <xref target='iana_considerations'/>).             It is anticipated, that other useful timezone operations will be             added in the future (e.g., mapping a geographical location to             timezone identifiers, getting change history for timezones). To that             end, servers MUST return a description of their capabilities. This             will allow clients to determine if new features have been installed             and, if not, fall back on earlier features or disable some client             capabilities.          </t>        </section>      </section>      <section anchor="server_protocol" title="Server Protocol">        <t>          The interactions are simple <xref target="RFC2616">HTTP</xref> requests.           Most security considerations are already handled adequately by HTTP.          However, given the nature of the data being transferred and the          requirement it be correct all interactions between client and server           SHOULD use an HTTP connection protected with           <xref target='RFC5246'>TLS</xref>  as defined           in <xref target='RFC2818'/>.        </t>        <t>          The HTTP GET request method is used, with information passed          in request parameters. The "action" request parameter specifies which          operation is to take place, other request parameters act as arguments          to that operation.        </t>                <section anchor="error_responses" title="Error Responses">          <t>            The following are examples of response codes one would expect to be            used by the server.  Note, however, that unless explicitly            prohibited any 2/3/4/5xx series response code may be used in a            response.            <list>              <t>                200 (OK) - The command succeeded.              </t>                <t>                400 (Bad Request) - The Sender has provided an invalid request                parameter.              </t>                <t>                404 (Not Found) - The timezone was not found.                      </t>            </list>          </t>                  <t>            When an error status is set the server SHOULD respond with some             descriptive text in an error element <xref target="tz_error_element"/>                </t>        </section>      </section>      <section anchor="client_guidelines" title="Client Guidelines">        <section anchor="discovery" title="Discovery">          <t>            Client implementations need to either know where the timezone service            is located or discover it through some mechanism. To use a timezone             service, a client needs an FQDN, port and HTTP request-URI path.          </t>            <section title='Timezone Service SRV Service Labels'>            <t>              <xref target="RFC2782"/> defines a DNS-based service discovery protocol              that has been widely adopted as a means of locating particular services              within a local area network and beyond, using SRV RR records.              This can be used to discover a service's FQDN and port.            </t>              <t>              This specification adds two service types for use with SRV records:              <list style="hanging">                <t hangText="timezone:">                  Identifies a Timezone server that uses HTTP without transport                  layer security (<xref target="RFC2818"/>).                </t>                <t hangText="timezones:">                  Identifies a Timezone server that uses HTTP with transport                  layer security (<xref target="RFC2818"/>).                </t>              </list>            </t>              <t>              Clients MUST honor "TTL", "Priority" and "Weight" values in the SRV              records, as described by <xref target="RFC2782"/>.            </t>              <figure>              <preamble>                Example: service record for server without transport layer security              </preamble>              <artwork>      _timezone._tcp     SRV 0 1 80 tz.example.com.              </artwork>            </figure>            <figure>              <preamble>                  Example: service record for server with transport layer security              </preamble>              <artwork>      _timezones._tcp    SRV 0 1 443 tz.example.com.              </artwork>            </figure>          </section>                    <section title='Timezone Service TXT records'>            <t>             When SRV RRs are used to advertise a timezone service, it is             also convenient to be able to specify a "context path" in the DNS to             be retrieved at the same time.  To enable that, this specification             uses a TXT RR that follows the syntax defined in Section 6 of             <xref target="I-D.cheshire-dnsext-dns-sd"/> and defines a "path" key for use in that             record.  The value of the key MUST be the actual "context path" to             the corresponding service on the server.            </t>                      <t>             A site might provide TXT records in addition to SRV records for each             service.  When present, clients MUST use the "path" value as the             "context path" for the service in HTTP requests.  When not present,             clients use the ".well-known" URI approach described next.            </t>              <figure>              <preamble>                Example: text record for service with transport layer security              </preamble>              <artwork>         _timezones._tcp    TXT path=/timezones              </artwork>            </figure>          </section>            <section title='Timezone Service Well-Known URI'>            <t>              A <xref target='RFC5785'>"well-known" URI</xref> is registered by               this specification for the Timezone service, "timezone"               (see <xref target='iana_considerations'/>). This URI points to a               resource that the client can use as the initial "context path" for               the service they are trying to connect to.                The server MUST redirect HTTP requests for that resource              to the actual "context path" using one of the available mechanisms              provided by HTTP (e.g., using a 301, 303, 307 response).  Clients              MUST handle HTTP redirects on the ".well-known" URI.  Servers MUST              NOT locate the actual timezone service endpoint at the              ".well-known" URI as per Section 1.1 of <xref target='RFC5785'/>.            </t>              <t>              Servers SHOULD set an appropriate Cache-Control header value (as per              Section 14.9 of <xref target='RFC2616'/>) in the redirect response to ensure caching              occurs or does not occur as needed, or as required by the type of              response generated.  For example, if it is anticipated that the              location of the redirect might change over time, then a "no-cache"              value would be used.            </t>              <t>              To facilitate "context path's" that might differ from user to user,              the server MAY require authentication when a client tries to access              the ".well-known" URI (i.e., the server would return a 401 status              response to the unauthenticated request from the client, then return              the redirect response only after a successful authentication by the              client).            </t>                        <section title='Example: well-known URI redirects to actual context path'>              <t>                A Timezone server has a "context path" that is "/servlet/timezone".                 The client will use "/.well-known/timezone" as the path for the                 service process after it has first found the FQDN and port number                 via an SRV lookup or via manual entry of information by the                user from which the client can parse suitable information.                 When the client makes its initial HTTP request                 against "/.well-known/timezone", the server would issue an                 HTTP 301 redirect response with a Location response header using                 the path "/servlet/timezone". The client would then "follow" this                 redirect to the new resource and continue making HTTP requests                 there.              </t>            </section>          </section>        </section>                <section anchor="initial_synch_of_all_timezones"                  title="Initial Synchronization of All Timezones">          <t>            When a secondary service or a client wishing to cache all timezone             data first starts or wishes to do a full refresh             it synchronizes with another server by first issuing a list operation            with returnall="true". The client should preserve the returned datastamp            for subsequent use. Each timezone in the returned list can then be             fetched and stored locally. In             addition a mapping of aliases to timezones can be built.           </t>        </section>                <section anchor="subsequent_synch_of_all_timezones"                  title="Subsequent Synchronization of All Timezones">          <t>            Periodically a secondary service or a client caching all timezone             data needs to synchronize with another server. To do so it should             issue a list operation with the changedsince parameter set to the             value of the datestamp returned at the last synchronization.             The client should again preserve the returned datastamp            for subsequent use. Each timezone in the returned list can then be             fetched and stored locally.           </t>                    <t>            Note, this process makes no provision for handling deleted timezones.            In general it is bad practice to delete timezones as they may now be            in use by consumers of timezone data.          </t>        </section>      </section>    </section>    <section anchor="server_request_parameters" title="Operation Parameters">      <t>        All requests require the "action" request parameter to define what         action is required of the server.       </t>            <t>        Servers MUST support the following request parameters.      </t>      <section anchor="parameter_action" title='"action" Parameter'>        <t>          <list style='hanging'>            <t hangText="Name:">              action            </t>                <t hangText="Description:">              Specify the action to be carried out.            </t>                <t hangText="Value:">              Any IANA registered operation name.            </t>          </list>        </t>      </section>      <section anchor="parameter_format" title='"format" Parameter'>        <t>          <list style='hanging'>            <t hangText="Name:">              format            </t>                <t hangText="Description:">              Specify the format for the timezone data returned by the server as a               standard <xref target='RFC2046'>MIME</xref> media-type. If absent the               <xref target='RFC5545'>iCalendar</xref> format will be returned with               the timezones contained within a "VCALENDAR" object (i.e., a default               media-type of "text/calendar").            </t>                <t hangText="Value:">              A <xref target='RFC2046'>MIME</xref> media-type. The server MUST               support the following values:              <list style='hanging'>                <t hangText="text/calendar:">                  Return data as "VTIMEZONE" components embedded in a "VCALENDAR"                   object as per <xref target='RFC5545'/>.                </t>                    <t hangText="application/calendar+xml:">                  Return data using the XML representation of iCalendar data as                   per <xref target='RFC6321'>iCalendar in XML</xref>.                </t>              </list>            </t>          </list>        </t>      </section>      <section anchor="parameter_changedsince"               title='"changedsince" Parameter'>        <t>          <list style='hanging'>            <t hangText="Name:">              changedsince            </t>                <t hangText="Description:">              Specify the timestamp for a conditional timezone list request in               order to restrict the result to timezones changed since the given               timestamp (see <xref target='operation_list_timezone_identifiers'/>).            </t>                <t hangText="Value:">              An XML [REF] UTC date-time value, typically a value returned in a               previous "dtstamp" XML element.            </t>          </list>        </t>      </section>      <section anchor="parameter_start" title='"start" Parameter'>        <t>          <list style='hanging'>            <t hangText="Name:">              start            </t>                <t hangText="Description:">              Specify the inclusive start of a period.            </t>                <t hangText="Value:">              An <xref target='RFC5545'>iCalendar</xref> "DATE" or "DATE-TIME" value.               If an 'end' request parameter is also present, then both the 'start'               and 'end' values MUST be of the same "DATE" or "DATE-TIME" value types.            </t>          </list>        </t>      </section>      <section anchor="parameter_end" title='"end" Parameter'>        <t>          <list style='hanging'>            <t hangText="Name:">              end            </t>                <t hangText="Description:">              Specify the exclusive end of a period.            </t>                <t hangText="Value:">              An <xref target='RFC5545'>iCalendar</xref> "DATE" or "DATE-TIME" value.               If a 'start' request parameter is also present, then both the 'start'               and 'end' values MUST be of the same "DATE" or "DATE-TIME" value types.            </t>          </list>        </t>      </section>      <section anchor="parameter_lang" title='"lang" Parameter'>        <t>          <list style='hanging'>            <t hangText="Name:">              lang            </t>                <t hangText="Description:">              Specify the language in which locale specific values are to be              returned. e.g., when fetching display names, if a language is              specified, only display names for that language will be returned.            </t>                <t hangText="Value:">              The value follows the specifications in <xref target="RFC5646"/>.            </t>          </list>        </t>      </section>      <section anchor="parameter_returnall"               title='"returnall" Parameter'>        <t>          <list style='hanging'>            <t hangText="Name:">              returnall            </t>                <t hangText="Description:">              If present indicates that all timezones should be returned. When               fetching the list of timezones the default action is to omit               inactive timezones. The inclusion of this parameter causes inactive               timezones to be returned in the list               (see <xref target='operation_list_timezone_identifiers'/>).            </t>                <t hangText="Value:">              This parameter takes no value.            </t>          </list>        </t>      </section>      <section anchor="parameter_tzid" title='"tzid" Parameter'>        <t>          <list style='hanging'>            <t hangText="Name:">              tzid            </t>                <t hangText="Description:">              This parameter is used to identify a timezone to be targeted by               an operation.            </t>                <t hangText="Value:">              A timezone identifier or alias. In some cases the special value               "*" is used to indicate that all timezones should be matched.            </t>          </list>        </t>      </section>      <section anchor="parameter_name" title='"name" Parameter'>        <t>          <list style='hanging'>            <t hangText="Name:">              name            </t>                <t hangText="Description:">              This parameter is used to specify a name for queries.            </t>                <t hangText="Value:">              A timezone identifier, alias or localized name. This parameter is              used when searching for matching specifications.            </t>          </list>        </t>      </section>    </section>    <section anchor="server_operations" title="Operations">      <t>        Servers MUST support the following operations.      </t>      <section anchor="operation_get_capabilities"               title='"capabilities" Operation'>        <t>          <list style='hanging'>            <t hangText="Name:">              capabilities            </t>            <t hangText="Description:">              This operation returns the capabilities of the server, allowing              clients to determine if a specific feature has been deployed              and/or enabled.            </t>            <t hangText="Parameters:">                <list style="hanging">                    <t hangText="action">REQUIRED, value MUST be "capabilities"</t>                </list>            </t>            <t hangText="Response">              An XML document containing a               <xref target='capabilities_element'>"capabilities"</xref> element              as the root element. Within that element there is an informational              section describing the server and a section for each operation              supported by the server.            </t>          </list>        </t>        <section anchor="example_get_capabilities"                 title="Example: Get Capabilities">          <figure>            <preamble>              In this example the client requests the server capabilities.            </preamble>            <artwork><![CDATA[   >> Request <<   GET /?action=capabilities HTTP/1.1   Host: tz.example.com   >> Response <<   HTTP/1.1 200 OK   Date: Wed, 4 Jun 2008 09:32:12 GMT   Content-Type: application/xml; charset="utf-8"   Content-Length: xxxx   <?xml version="1.0" encoding="utf-8" ?>   <capabilities xmlns="urn:ietf:params:xml:ns:timezone-service">     <info>       <primary-source>Olson:2011m</primary-source>       <contact>mailto:tzs@example.org</contact>     </info>          <operation>       <action>list</action>       <description>List timezone identifiers and localized forms       </description>       <accept-parameter>         <name>lang</name>         <required>false</required>         <multi>true</multi>         <description>Specify desired localized form(s)</description>       </accept-parameter>       <accept-parameter>         <name>changedsince</name>         <required>false</required>         <multi>false</multi>         <description>Limit result to timezones changed since the           given date         </description>       </accept-parameter>       <accept-parameter>         <name>returnall</name>         <required>false</required>         <multi>false</multi>         <description>If present inactive timezones will be returned.         </description>       </accept-parameter>     </operation>     <operation>       <action>get</action>       <description>         Returns one or more timeszones as specified by the         tzid parameter.       </description>       <accept-parameter>         <name>format</name>         <required>false</required>         <multi>false</multi>         <value>text/calendar</value>         <value>application/calendar+xml</value>         <description>Specify required format for timezone.         </description>       </accept-parameter>       <accept-parameter>         <name>lang</name>         <required>false</required>         <multi>true</multi>         <description>Specify desired localized form(s)</description>       </accept-parameter>       <accept-parameter>         <name>tzid</name>         <required>true</required>         <multi>true</multi>         <description>Specify desired timezone identifiers         </description>       </accept-parameter>     </operation>     <operation>       <action>expand</action>       <description>         Expands the specified timezone(s) into local onset and UTC         offsets       </description>       <accept-parameter>         <name>tzid</name>         <required>true</required>         <multi>true</multi>         <description>Specify desired timezone identifiers</description>       </accept-parameter>       <accept-parameter>         <name>start</name>         <required>false</required>         <multi>false</multi>         <description>           Specify start of the period of interest. If omitted the           current year is assumed.         </description>       </accept-parameter>       <accept-parameter>         <name>end</name>         <required>false</required>         <multi>false</multi>         <description>           Specify end of the period of interest.           If omitted the current year + 10 is assumed.         </description>       </accept-parameter>     </operation>     <operation>       <action>capabilities</action>       <description>Gets the capabilities of the server</description>     </operation>   </capabilities>          ]]></artwork>          </figure>        </section>      </section>      <section anchor="operation_list_timezone_identifiers"               title='"list" Operation'>        <t>          <list style='hanging'>            <t hangText="Name:">              list            </t>            <t hangText="Description:">              This operation lists all non alias timezone identifiers in               summary format with aliases and optional localized data. In              addition, it returns a timestamp which is the current server              global last modification value.            </t>            <t hangText="Parameters:">              <list style='hanging'>                <t hangText="action">REQUIRED, value MUST be "list"</t>                <t hangText="lang=&lt;lang-code&gt;">                  OPTIONAL, but MAY occur multiple times. Specifies the language                   or languages for localized information.                </t>                <t hangText="returnall">                  OPTIONAL, but MUST occur only once. If present, indicates that                   all, including inactive, timezones should be returned in the                   response. The TZ:inactive XML element will flag those timezones                   no longer in use.                </t>                <t hangText="changedsince">                  OPTIONAL, but MUST occur only once. If present, limits the                   response to timezones changed since the given timestamp. MUST                  NOT be specified with the tzid parameter.                </t>                                <t hangText="tzid=&lt;identifier&gt;">                  OPTIONAL, and MAY occur once or more. If specified identifies                    timezone(s) for which information is to be returned. If this                  parameter is specified changedsince MUST NOT be specified.                </t>                                <t>                  If tzid is specified the dtstamp element will be returned in                   the response. This dtstamp is for the entire set of data and                   allows the client to determine if it should refresh its full                   set.                </t>              </list>            </t>            <t hangText="Response:">              An XML document containing a               <xref target='timezone_list_element'>"timezone-list"</xref> element               as the root element.            </t>          </list>        </t>        <section anchor="example_server_list_timezone_identifiers"                 title="Example: List timezone identifiers">          <figure>            <preamble>              In this example the client requests the timezone identifiers and               in addition requests that the US-English local names be returned.            </preamble>            <artwork><![CDATA[   >> Request <<   GET /?action=list&lang=en_US HTTP/1.1   Host: tz.example.com   >> Response <<   HTTP/1.1 200 OK   Date: Wed, 4 Jun 2008 09:32:12 GMT   Content-Type: application/xml; charset="utf-8"   Content-Length: xxxx   <?xml version="1.0" encoding="utf-8" ?>   <timezone-list xmlns="urn:ietf:params:xml:ns:timezone-service">     <dtstamp>2009-10-11T09:32:11Z</dtstamp>     <summary>       <tzid>America/New_York</tzid>       <last-modified>2009-09-17T01:39:34Z</last-modified>       <alias>US/Eastern</alias>       <local-name lang="en_US">America/New_York</local-name>     <summary>     ...   </timezone-list>          ]]></artwork>          </figure>        </section>      </section>      <section anchor="operation_get_timezone" title='"get" Operation'>        <t>          <list style='hanging'>            <t hangText="Name:">              get            </t>                        <t hangText="Description:">              This operation returns a timezone. If a single timezone is               specified the response MUST contain an ETag response header field               indicating the current value of the strong entity tag of the               timezone resource.            </t>                        <t>              If the identifier is actually an alias to a canonical name the               server will return the specification associated with that               identifier. The substitute-alias parameter specifies whether or not              the alias is to be substitued for the identifier.            </t>                        <t hangText="Parameters:">              <list style='hanging'>                <t hangText="action">REQUIRED, value MUST be "get"</t>                <t hangText="format=&lt;media-type&gt;">                  OPTIONAL, but MUST occur only once. Return information using                   the specified media-type. In the absence of this parameter,                   the value "text/calendar" MUST be assumed.                </t>                                <t hangText="lang=&lt;lang-code&gt;">                  OPTIONAL, but MAY occur                   multiple times. If present, specifies the language or languages for localized information.                </t>                                <t hangText="tzid=&lt;identifier&gt;">                  REQUIRED, and MUST occur only once. Identifies the                   timezone for which information is returned. The server MUST                   return an Etag header. Alternatively, if                   a value of "*" is given, returns information for all                   timezones. The "*" option will typically be used by servers                   that wish to retrieve the entire set of timezones supported by                   another server to re-synchronize their entire data cache.                   Clients will typically only retrieve individual timezone data                   on a case-by-case basis.                 </t>                                <t hangText="substitute-alias=&lt;true|false&gt;">                  OPTIONAL and defaults to false. If true and the tzid is an                   alias it will replace the tzid in the returned specification.                  If false, the returned specification will have the canonical                   identifier.                 </t>              </list>            </t>            <t hangText="Response:">              A document containing all the requested timezone data in the format               specified.            </t>          </list>        </t>        <section title="Example: Get timezone">          <figure>            <preamble>              In this example the client requests the timezone with a specific              timezone identifier to be returned            </preamble>            <artwork><![CDATA[   >> Request <<   GET /?action=get&tzid=America/New_York                     &format=text/calendar HTTP/1.1   Host: tz.example.com   >> Response <<   HTTP/1.1 200 OK   Date: Wed, 4 Jun 2008 09:32:12 GMT   Content-Type: text/calendar; charset="utf-8"   Content-Length: xxxx   ETag: "123456789-000-111"   BEGIN:VCALENDAR   ...   BEGIN:VTIMEZONE   ...   END:VTIMEZONE   END:VCALENDAR          ]]></artwork>          </figure>        </section>      </section>      <section anchor="operation_expand_timezones"             title='"expand" Operation'>        <t>          <list style='hanging'>            <t hangText="Name:">              expand            </t>            <t hangText="Description:">              This operation expands the specified              timezone into a list of onset start date/time and offset. The               response MUST contain an ETag response header field indicating the               current value of the strong entity tag for the expanded data.            </t>            <t hangText="Parameters:">              <list style='hanging'>                <t hangText="action">                  REQUIRED, value MUST be "expand"                </t>                <t hangText="tzid=&lt;identifier&gt;">                  REQUIRED, but MUST only occur once. Identifies the                   timezone for which information is returned. The value "*",                   which has a special meaning in the "get" operation, is not                   supported by this operation.                </t>                <t hangText="lang=&lt;lang-code&gt;">                  OPTIONAL, but MAY occur multiple times. If present, specifies                   the language or languages for localized information.                </t>                <t hangText="start=date or date-time:">                  OPTIONAL, but MUST occur only once. If present, specifies the                   start of the period of interest. If omitted, the current year                   is assumed.                </t>                <t hangText="end=date or date-time:">                  OPTIONAL, but MUST occur only once. If present, specifies the                   end of the period of interest. If omitted, the current                   year + 10 is assumed.                </t>              </list>            </t>            <t hangText="Response:">              An XML document containing a               <xref target='timezones_element'>"timezones"</xref> element as the               root element.            </t>          </list>        </t>        <section anchor="example_expanded_xml_data_format"                 title="Example: Expanded XML Data Format">          <figure>            <preamble>              In this example the client requests a timezone in the expanded              form.            </preamble>            <artwork><![CDATA[   >> Request <<   GET /?action=expand&tzid=America/New_York HTTP/1.1   Host: tz.example.com   >> Response <<   HTTP/1.1 200 OK   Date: Wed, 4 Jun 2008 09:32:12 GMT   Content-Type: application/xml; charset="utf-8"   Content-Length: xxxx   ETag: "123456789-000-111"   <?xml version="1.0" encoding="utf-8" ?>   <timezones xmlns="urn:ietf:params:xml:ns:timezone-service">     <dtstamp>2009-10-11T09:32:11Z</dtstamp>     <tzdata>       <tzid>America/New_York</tzid>       <calscale>Gregorian</calscale>       <observance>         <name>Daylight</name>         <onset>2008-03-09T07:00:00Z</onset>         <utc-offset-from>-05:00</utc-offset-from>         <utc-offset-to>-04:00</utc-offset-to>       </observance>       <observance>         <name>Standard</name>         <onset>2008-11-02T07:00:00Z</onset>         <utc-offset-from>-04:00</utc-offset-from>         <utc-offset-to>-05:00</utc-offset-to>       </observance>       <observance>         <name>Daylight</name>         <onset>2009-03-08T07:00:00Z</onset>         <utc-offset-from>-05:00</utc-offset-from>         <utc-offset-to>-04:00</utc-offset-to>       </observance>       ...     </tzdata>   </timezones>          ]]></artwork>          </figure>        </section>      </section>      <section anchor="operation_find_timezones"             title='"find" Operation'>        <t>          <list style='hanging'>            <t hangText="Name:">              find            </t>            <t hangText="Description:">              This operation allows a client to query the timezone service for              a matching identifier, alias or localized name.            </t>            <t hangText="Parameters:">              <list style='hanging'>                <t hangText="action">                  REQUIRED, value MUST be "find"                </t>                <t hangText="name=&lt;text&gt;">                  REQUIRED, but MUST only occur once. Identifies the name to                  search for. Only partial matching is supported.                </t>                <t hangText="lang=&lt;lang-code&gt;">                  OPTIONAL, but MAY occur multiple times. If present, specifies                   the language or languages for localized information.                </t>              </list>            </t>            <t hangText="Response:">              The response has the same format as the                <xref target='operation_list_timezone_identifiers'>"list"</xref>               operation, with one result element per successful match.            </t>          </list>        </t>        <section anchor="example_find_timezones"                 title="Example: Find operation">          <figure>            <preamble>              In this example the client asks for information about               "America/New_York".            </preamble>            <artwork><![CDATA[   >> Request <<   GET /?action=find&name=America/New_York HTTP/1.1   Host: tz.example.com   >> Response <<   HTTP/1.1 200 OK   Date: Wed, 4 Jun 2008 09:32:12 GMT   Content-Type: application/xml; charset="utf-8"   Content-Length: xxxxTBD          ]]></artwork>          </figure>        </section>      </section>    </section>    <section anchor="service_XML_definitions"             title="XML Definitions">      <t>        XML elements used by this specification are defined here.      </t>      <section anchor='capabilities_element' title="TZ:capabilities XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              capabilities            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              Root element encapsulating timezone service capabilities              information.            </t>            <t hangText="Description:">              This defines the root (top-level) element used as the container              for capabilities information.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT capabilities (info, operation*)>]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:info XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              info            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              Element encapsulating server information            </t>            <t hangText="Description:">              This defines the element used as the container              for information about the servers source of data and contacts.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT info ((source | primary-source), contact*)>]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:source XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              source            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              Supplied in capabilities to define the source for a secondary               server            </t>            <t hangText="Description:">              This element contains the URL of the timezones server used to               provide the data for this server.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT source  (#PCDATA)><!-- A valid URL -->]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:primary-source XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              primary-source            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              Supplied in capabilities to provide information about the data              source for a primary server            </t>            <t hangText="Description:">              This element contains some descriptive text, for example a filename,               to identify the source of the data for this server.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT primary-source  (#PCDATA)><!-- Descriptive text -->]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:contact XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              contact            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              Supplied in capabilities to provide contact information            </t>            <t hangText="Description:">              This element can contain any useful contact information and may              appear multiple times.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT source  (#PCDATA)><!-- A valid URL -->]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:operation XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              operation            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              Element encapsulating timezone operation description            </t>            <t hangText="Description:">              This defines the element used as the container              for information defining an operation and its parameters.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT operation (action, description?, accept-parameter*)>]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:action XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              action            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              Define name of an action            </t>            <t hangText="Description:">              Specify name of an operation's action.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT action  (#PCDATA)><!-- A legal action value -->]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:description XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              description            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              A description.            </t>            <t hangText="Description:">                This element specifies a description that refers to the enclosing element.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT description  (#PCDATA)>]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:accept-parameter XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              accept-parameter            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>             <t hangText="Purpose:">              Element defining a timezone operation parameter            </t>            <t hangText="Description:">              This defines the name, type and characteristics of an              operation parameter.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT accept-parameter (name, required, multi,                            value*, description?)>]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:required XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              required            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              Specify if timezone method parameter is required            </t>            <t hangText="Description:">              Specify if timezone method parameter is required.               Same form as XML boolean, "true", "false", 0 or 1 are used.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT required  (#PCDATA)><!-- "true" or "false" -->]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:multi XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              multi            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              Specify if timezone method parameter is multi-valued            </t>            <t hangText="Description:">              Specify if timezone method parameter is multi-valued.               Same form as XML boolean, "true", "false", 0 or 1 are used.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT multi  (#PCDATA)><!-- "true" or "false" -->]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:value XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              value            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              Allowed values for a parameter.            </t>            <t hangText="Description:">                This element specifies the allowed values for a parameter.                 If present, only the set of valus specified will be allowed by the server.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT value  (#PCDATA)>]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section anchor='timezone_list_element' title="TZ:timezone-list XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              timezone-list            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              Root element encapsulating timezone list information.            </t>            <t hangText="Description:">              This defines the root (top-level) element used as the container              for timezone listing.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT timezone-list (dtstamp, summary*)>]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:dtstamp XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              dtstamp            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              Provide a timestamp value.            </t>            <t hangText="Description:">              Provides the UTC date and time when a substantive change was made               to the timezone data.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT version (#PCDATA)><!-- XML UTC DATE-TIME value -->]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:summary XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              summary            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              Defines a timezone summary.            </t>            <t hangText="Description:">              This defines the element that provides summary information for a              timezone in the timezones list.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT summary (tzid, last-modified, inactive?,                   local-name*, alias*)>]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:tzid XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              tzid            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              The identifier for the timezone.            </t>            <t hangText="Description:">              The text value is the identifier of the timezone being referred to.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT tzid  (#PCDATA)>]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:last-modified XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              last-modified            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              Provide a timestamp value.            </t>            <t hangText="Description:">              Provides the UTC date and time that the timezone data was last modified.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT last-modified (#PCDATA)><!-- XML UTC DATE-TIME value -->]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:inactive XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              inactive            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              Flags an inactive timezone.            </t>            <t hangText="Description:">              If present indicates that the timezone is inactve, that is it               does not apply to any current area or date/time.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT inactive >]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:local-name XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              local-name            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              A localized name for the timezone.            </t>            <t hangText="Description:">              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 preferred               name should be flagged with the PREF="true" attribute. In the absence of               any indication the client is free to choose.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT local-name  (#PCDATA)><!ATTLIST local-name          xml:lang CDATA #REQUIRED         pref ("true"|"false") "false" >]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:alias XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              alias            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              An alternative identifier for the timezone.            </t>            <t hangText="Description:">              Defines alternative identifiers that can be used for the              timezone. This feature allows mapping of old identifiers onto              new.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT alias  (#PCDATA)>]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section anchor='timezones_element' title="TZ:timezones XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              timezones            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              Root element encapsulating expanded timezone information.            </t>            <t hangText="Description:">              This defines the root (top-level) element used as the container              for expanded timezone data.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT timezones (dtstamp, tzdata*)>]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:tzdata XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              tzdata            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              Encapsulates expanded timezone information.            </t>            <t hangText="Description:">              This element specifies expanded timezone data for the range               specified in a request.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT tzdata (tzid, calscale?, observance*)>]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:calscale XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              calscale            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              Identifies the calendar system for the timezone data.            </t>            <t hangText="Description:">              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.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT calscale (#PCDATA)><!-- allowed PCDATA value is "Gregorian" -->]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:observance XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              observance            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              Provides data for a single observance period for a timezone.            </t>            <t hangText="Description:">                In an expanded timezone, the observance element specifies a                 single timezone observance.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT observance (name, local-name*,                          onset, utc-offset-from, utc-offset-to)>]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:name XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              name            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              Name for the observance.            </t>            <t hangText="Description:">                This element specifies which timezone observance is                being referred to. Typically this will be either "Standard" or                 "Daylight".            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT name  (#PCDATA)><!-- Typically one of either "Standard" or "Daylight" -->]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:onset XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              onset            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              Local time onset of the observance.            </t>            <t hangText="Description:">                The onset element defines the local time at which the                observance takes effect. The form is the same as an XML date-time                with timezone information disallowed.            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT onset  (#PCDATA)><!-- A local DATE-TIME value -->]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:utc-offset-from XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              utc-offset-from            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              UTC offset before the start of the observance.            </t>            <t hangText="Description:">                The utc-offset-from element defines the UTC offset in hours and                minutes before the start of this observance. The value is                a string of the form: ('+' | '-') hh ':' mm (':' ss)            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT utc-offset-from  (#PCDATA)><!-- Positive or negative hours, minutes and optional seconds -->]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section title="TZ:utc-offset-to XML element">        <t>          <list style='hanging'>            <t hangText="Name:">              utc-offset-to            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              UTC offset after the start of the observance.            </t>            <t hangText="Description:">                The utc-offset-to element defines the UTC offset in hours and                minutes at and after the start of this observance. The value is                a string of the form: ('+' | '-') hh ':' mm (':' ss)            </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT utc-offset-to  (#PCDATA)><!-- Positive or negative hours, minutes and optional seconds -->]]></artwork>              </figure>            </t>          </list>        </t>      </section>      <section anchor="tz_error_element"                title="TZ:error element">        <t>          <list style='hanging'>            <t hangText="Name:">              error            </t>            <t hangText="Namespace:">              urn:ietf:params:xml:ns:timezone-service            </t>            <t hangText="Purpose:">              To convey a descriptive error message to the client.            </t>            <t hangText="Description:">              <xref target="error_responses"/>                  </t>            <t hangText="Definition:">              <figure>                <artwork><![CDATA[<!ELEMENT error  ANY>]]></artwork>              </figure>            </t>          </list>        </t>      </section>    </section>    <section anchor="service_XML_schema"             title="XML Schema">      <t>        Following is the XML schema for the timezone service responses.      </t>      <figure>        <artwork><![CDATA[<?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="tns:UTCDateTimeType"/>  </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="tns:UTCDateTimeType"/>  </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 preferred         name can be flagged with the pref attribute.      </documentation>    </annotation>    <simpleContent>      <extension base="string">        <attribute ref="xml:lang" />        <attribute name="pref" type="boolean" default="false" />      </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="dateTime">      <pattern value="\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}(\.\d*)?"/>    </restriction>  </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="UtcOffsetType">    <annotation>      <documentation xml:lang="en">        This type specifies the UTC offset in hours, minutes and         optional seconds.         </documentation>    </annotation>    <restriction base="string">      <pattern value="(\-|\+)?\d{2}:\d{2}(:\d{2})?"/>    </restriction>  </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"/>    </simpleContent>  </complexType>    <complexType name="InactiveType">    <annotation>      <documentation xml:lang="en">        The inactive empty element flags timezones that are         no longer active.       </documentation>    </annotation>  </complexType>    <complexType name="BaseResultType" abstract="true" />    <simpleType name="UTCDateTimeType">    <restriction base="dateTime">      <pattern         value="(\-|\+)?\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d*)Z"/>    </restriction>  </simpleType>    <!-- *************************************************************                             error response       ************************************************************* -->    <complexType name="ErrorResponseType" mixed="true" >    <annotation>      <documentation xml:lang="en">        Useful messages SHOULD be returned as an error element.       </documentation>    </annotation>    <sequence>       <any minOccurs="0"/>    </sequence>  </complexType>    <element name="error" type="tns:ErrorResponseType" />    <!-- *************************************************************                             capabilities response       ************************************************************* -->    <complexType name="CapabilitiesInfoType">    <annotation>      <documentation xml:lang="en">        The element used as the container for information about the         servers source of data and contacts.      </documentation>    </annotation>    <sequence>      <choice>      <element name="source" type="string" />      <element name="primary-source" type="string" />      </choice>      <element name="contact"  type="string"                minOccurs="0" maxOccurs="unbounded" />    </sequence>  </complexType>    <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="info"                     type="tns:CapabilitiesInfoType" />                  <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="inactive" type="tns:InactiveType" minOccurs="0" />      <element name="local-name" type="tns:LocalNameType"               minOccurs="0" maxOccurs="unbounded" />      <element name="alias" type="tns:AliasType"               minOccurs="0" 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.                  The utc-offset-from element defines the UTC offset in hours         and minutes before the start of this observance.                   The utc-offset-to element defines the UTC offset in hours and         minutes at and after the start of this 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:UtcOffsetType" minOccurs="1" />      <element name="utc-offset-to" type="tns:UtcOffsetType"                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>]]></artwork>      </figure>    </section>    <section anchor="security_considerations"             title='Security Considerations'>      <t>        Timezone data is critical in determining local or UTC time for devices         and in calendaring and scheduling operations. As such, it is vital that         a reliable source of timezone data is used. Servers providing a timezone         service MUST support HTTP over Transport Layer Security (TLS) (as defined         by <xref target="RFC2818"/>) with a valid certificate. Clients and         servers making use of a timezone service SHOULD use HTTP over TLS and         verify the authenticity of the service being used before accepting and         using any timezone data from that source.      </t>            <t>        Clients that support transport layer security as defined by         <xref target="RFC2818"/> SHOULD try the "_timezones" service first         before trying the "_timezone" service.  Clients MUST follow the        certificate verification process specified in        <xref target="I-D.saintandre-tls-server-id-check" />.      </t>            <t>        A malicious attacker with access to the DNS server data, or able to        get spoofed answers cached in a recursive resolver, can potentially        cause clients to connect to any server chosen by the attacker.  In        the absence of a secure DNS option, clients SHOULD check that the        target FQDN returned in the SRV record matches the original service        domain that was queried.  If the target FQDN is not in the queried        domain, clients SHOULD verify with the user that the SRV target FQDN        is suitable for use before executing any connections to the host.      </t>            <t>        Timezone servers SHOULD protect themselves against errant or malicious        clients by throttling high request rates or frequent requests for large         amounts of data. Clients can avoid being throttled by using the polling        capabilities outlined in <xref target='conditional_timezone'/>      </t>    </section>    <section anchor="iana_considerations" title='IANA Considerations'>      <t>        This document uses one new URN to identify a new XML namespace for the         response data used in this specification, and defines a new registry of         "actions" for the timezone service protocol, and defines a "well-known"         URI using the registration procedure and template from Section 5.1 of         <xref target='RFC5785'/>, and creates two new SRV service label aliases.      </t>      <section anchor="new_xml_namespace"               title="XML namespace">        <t>          Registration request for the timezone service namespace:        </t>        <t>          URI: urn:ietf:params:xml:ns:timezone-service        </t>        <t>          Registrant Contact: See the "Authors' Addresses" section of this          document.        </t>        <t>         XML: None.  Namespace URIs do not represent an XML specification.        </t>      </section>      <section anchor="new_service_operations_registration"               title="Service Operations Registration">        <t>          This section defines the process to register new or modified          timezone service operations with IANA.        </t>        <section anchor="service_operations_registration_procedure"                 title="Service Operations Registration Procedure">          <t>            The IETF will create a mailing list, timezone-service@ietf.org,             which can be used for public discussion of timezone service operations             proposals prior to registration. Use of the mailing list is strongly             encouraged. The IESG will appoint a designated expert who will             monitor the timezone-service@ietf.org mailing list and review registrations.          </t>          <t>            Registration of new timezone service operations MUST be reviewed by             the designated expert and published in an RFC. A Standard Tracks RFC             is REQUIRED for the registration of new timezone service operations.             A Standard Tracks RFC is also REQUIRED for changes to operations             previously documented in a Standard Tracks RFC.          </t>          <t>            The registration procedure begins when a completed registration             template, defined in the sections below, is sent to             timezone-service@ietf.org and iana@iana.org. The designated expert             is expected to tell IANA and the submitter of the registration within             two weeks whether the registration is approved, approved with minor             changes, or rejected with cause.  When a registration is rejected             with cause, it can be re-submitted if the concerns listed in the             cause are addressed. Decisions made by the designated expert can be             appealed to the IESG Applications Area Director, then to the IESG.             They follow the normal appeals procedure for IESG decisions.          </t>        </section>        <section anchor="registration_template_for_operations"                 title="Registration Template for Operations" >          <t>            An operation is defined by completing the following template.            <list style="hanging">              <t hangText="Name:">                The name of the operation. This is also the value of the "action"                 parameter used in timezone service requests.              </t>              <t hangText="Description:">                A general description of the operation, its purpose, etc.              </t>              <t hangText="Parameters:">                A list of allowed request parameters, indicating whether they                 are "REQUIRED" or "OPTIONAL" and whether they can occur only                 once or multiple times.              </t>              <t hangText="Response">                The nature of the response to the HTTP request, e.g., what                 format the response data is in.              </t>            </list>          </t>        </section>        <section anchor="registration_template_for_operation_parameterss"                 title="Registration Template for Operation Parameters" >          <t>            An operation parameter is defined by completing the following template.            <list style="hanging">              <t hangText="Name:">                The name of the parameter.              </t>              <t hangText="Description:">                A general description of the parameter, its purpose, etc.              </t>              <t hangText="Value:">                The format of the parameter value, or an indication that the parameter has no value.              </t>            </list>          </t>        </section>      </section>      <section anchor="initial_timezone_service_registries"               title="Initial Timezone Service Registries" >        <t>          The IANA is requested to create and maintain the following          registries for timezone service operations with pointers to          appropriate reference documents.        </t>        <section anchor="operations_registry"                 title="Operations Registry">          <t>            The following table is to be used to initialize the            operations registry.          </t>          <texttable>            <ttcol align="left">Operation Name</ttcol>            <ttcol align="left">Status</ttcol>            <ttcol align="left">Reference</ttcol>            <c>capabilities</c>            <c>Current</c>            <c>RFCXXXX, <xref target="operation_get_capabilities"/></c>            <c>list</c>            <c>Current</c>            <c>RFCXXXX, <xref target="operation_list_timezone_identifiers"/></c>            <c>get</c>            <c>Current</c>            <c>RFCXXXX, <xref target="operation_get_timezone"/></c>            <c>expand</c>            <c>Current</c>            <c>RFCXXXX, <xref target="operation_expand_timezones"/></c>          </texttable>        </section>        <section anchor="parameters_registry"                 title="Operation Parameters Registry">          <t>            The following table is to be used to initialize the            parameters registry.          </t>          <texttable>            <ttcol align="left">Parameter</ttcol>            <ttcol align="left">Status</ttcol>            <ttcol align="left">Reference</ttcol>            <c>action</c>            <c>Current</c>            <c>RFCXXXX, <xref target="parameter_action"/></c>            <c>changedsince</c>            <c>Current</c>            <c>RFCXXXX, <xref target="parameter_changedsince"/></c>            <c>end</c>            <c>Current</c>            <c>RFCXXXX, <xref target="parameter_end"/></c>            <c>format</c>            <c>Current</c>            <c>RFCXXXX, <xref target="parameter_format"/></c>            <c>lang</c>            <c>Current</c>            <c>RFCXXXX, <xref target="parameter_lang"/></c>            <c>returnall</c>            <c>Current</c>            <c>RFCXXXX, <xref target="parameter_returnall"/></c>            <c>start</c>            <c>Current</c>            <c>RFCXXXX, <xref target="parameter_start"/></c>            <c>tzid</c>            <c>Current</c>            <c>RFCXXXX, <xref target="parameter_tzid"/></c>          </texttable>        </section>      </section>        <section title='timezone Well-Known URI Registration'>          <t>            <list style='hanging'>               <t hangText="URI suffix:">timezone</t>                   <t hangText="Change controller:">IETF.</t>                   <t hangText="Specification document(s):">This RFC.</t>                   <t hangText="Related information:"></t>            </list>          </t>        </section>        <section title='SRV Service Label Registration'>          <t>            IANA is requested to add "timezone" and  "timezones" service labels             as aliases for "http" and "https" respectively.          </t>        </section>    </section>    <section title="Acknowledgements">      <t>        The authors would like to thank the members of the Calendaring and        Scheduling Consortium's Timezone Technical Committee and the following        individuals for contributing their ideas and support: Bryan Keller,         Ciny Joy, Arnaud Quillaud, Jose Edvaldo Saraiva.      </t>      <t>        The authors would also like to thank the Calendaring and        Scheduling Consortium for advice with this specification.      </t>    </section>  </middle>  <!--  *****BACK MATTER ***** -->  <back>    <references title="Normative References">      &I-D.cheshire-dnsext-dns-sd;      &RFC2046;      &RFC2119;      &RFC2616;      &RFC2782;      &RFC2818;      &RFC5246;      &RFC5545;      &RFC5646;      &RFC5785;      &RFC6321;      &W3C.REC-xml-20081126;      &I-D.saintandre-tls-server-id-check;      &I-D.lear-iana-timezone-database;    </references>    <section anchor="appendix_A_Changes_for_04"                 title="Changes for version 04">      <t>        <list style="symbols">          <t>            Replaced reference to RFC4646 with reference to RFC5646          </t>          <t>            New wording on polling.          </t>        </list>      </t>    </section>    <section anchor="appendix_A_Changes_for_03"                 title="Changes for version 03">      <t>        <list style="symbols">          <t>            Replaced erroneous reference to ISO3036 with reference to RFC4646          </t>          <t>            Update reference to iCalendar in XML (RFC6321)          </t>          <t>            More description of ids/aliases/names          </t>          <t>            Add subsitute-alias parameter for action=get          </t>          <t>            Allow tzid on list          </t>          <t>            Added name request parameter          </t>          <t>            Added find action          </t>        </list>      </t>    </section>        <section anchor="appendix_B_Changes_for_02"                 title="Changes for version 02">      <t>        <list style="symbols">          <t>            Missed definitions of the inactive element          </t>          <t>            Restrict UtcOffsetFromType, UtcOffsetToType to a pattern - allow            seconds.          </t>          <t>            Use restricted XML dateTime as base for onset          </t>          <t>            Use restricted XML dateTime for lastmodified and dtstamp          </t>          <t>            Note that 0 and 1 are valid values for an XML boolean.          </t>          <t>            Set pref to a default value of false          </t>          <t>            Server will now set tzid of aliased timezones to the alias name          </t>          <t>            Remove returnaliases option          </t>          <t>            Aliases should not have lang attribute - removed          </t>          <t>            Add text on status codes and an error element          </t>          <t>            Added capabilities info element containing source | primary-source             and contacts.           </t>        </list>      </t>    </section>    <!-- Change Logv00 2007-10-19  MD    Initial version                      -->  </back></rfc>
