Network Working Group                                     P. Saint-Andre
Internet-Draft                                Jabber Software Foundation
Expires: March 8, 2005                                 September 7, 2004



     A Uniform Resource Identifier (URI) Scheme for the Extensible
                 Messaging and Presence Protocol (XMPP)
                      draft-saintandre-xmpp-uri-05


Status of this Memo


   This document is an Internet-Draft and is subject to all provisions
   of section 3 of RFC 3667.  By submitting this Internet-Draft, each
   author represents that any applicable patent or other IPR claims of
   which he or she is aware have been or will be disclosed, and any of
   which he or she become aware will be disclosed, in accordance with
   RFC 3668.


   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as
   Internet-Drafts.


   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."


   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.


   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.


   This Internet-Draft will expire on March 8, 2005.


Copyright Notice


   Copyright (C) The Internet Society (2004).


Abstract


   This document defines a Uniform Resource Identifier (URI) scheme for
   use in identifying entities that can communicate via the Extensible
   Messaging and Presence Protocol (XMPP).








Saint-Andre              Expires March 8, 2005                  [Page 1]


Internet-Draft                  XMPP-URI                  September 2004



Table of Contents


   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
     1.1   Terminology  . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  Description of xmpp: URI Scheme  . . . . . . . . . . . . . . .  3
     2.1   Rationale  . . . . . . . . . . . . . . . . . . . . . . . .  3
     2.2   Form . . . . . . . . . . . . . . . . . . . . . . . . . . .  4
     2.3   Generation of xmpp: URIs . . . . . . . . . . . . . . . . .  5
     2.4   Processing of xmpp: URIs . . . . . . . . . . . . . . . . .  7
     2.5   Internationalization . . . . . . . . . . . . . . . . . . .  9
   3.  IANA Registration of xmpp: URI Scheme  . . . . . . . . . . . . 10
     3.1   URI scheme name  . . . . . . . . . . . . . . . . . . . . . 10
     3.2   URI scheme syntax  . . . . . . . . . . . . . . . . . . . . 10
     3.3   Character encoding considerations  . . . . . . . . . . . . 10
     3.4   Intended usage . . . . . . . . . . . . . . . . . . . . . . 10
     3.5   Security considerations  . . . . . . . . . . . . . . . . . 11
     3.6   Relevant publications  . . . . . . . . . . . . . . . . . . 11
     3.7   Person and email address to contact for further
           information  . . . . . . . . . . . . . . . . . . . . . . . 11
     3.8   Author/change controller . . . . . . . . . . . . . . . . . 11
     3.9   Applications and/or protocols which use this URI
           scheme name  . . . . . . . . . . . . . . . . . . . . . . . 11
   4.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 11
   5.  Security Considerations  . . . . . . . . . . . . . . . . . . . 11
   6.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 11
   6.1   Normative References . . . . . . . . . . . . . . . . . . . . 11
   6.2   Informative References . . . . . . . . . . . . . . . . . . . 12
       Author's Address . . . . . . . . . . . . . . . . . . . . . . . 13
   A.  Revision History . . . . . . . . . . . . . . . . . . . . . . . 13
     A.1   Changes from draft-saintandre-xmpp-uri-04  . . . . . . . . 13
     A.2   Changes from draft-saintandre-xmpp-uri-03  . . . . . . . . 13
     A.3   Changes from draft-saintandre-xmpp-uri-02  . . . . . . . . 14
     A.4   Changes from draft-saintandre-xmpp-uri-01  . . . . . . . . 14
     A.5   Changes from draft-saintandre-xmpp-uri-00  . . . . . . . . 14
       Intellectual Property and Copyright Statements . . . . . . . . 15

















Saint-Andre              Expires March 8, 2005                  [Page 2]


Internet-Draft                  XMPP-URI                  September 2004



1.  Introduction


   The Extensible Messaging and Presence Protocol (XMPP) is a streaming
   XML technology that enables any two entities on a network to exchange
   well-defined but extensible XML elements (called "XML stanzas") in
   close to real time.  [XMPP-CORE] specifies that on an XMPP network
   itself, the address of an XMPP entity MUST NOT be prepended with a
   Uniform Resource Identifier (URI) scheme (as defined in [URI]).
   However, many applications external to an XMPP network may need to
   identify XMPP entities as full URIs; examples are databases that need
   to store XMPP addresses and non-native user agents (e.g., web
   browsers and calendaring applications) that provide interfaces to
   XMPP services.  This memo defines an xmpp: URI scheme for use by such
   applications, and conforms to both the requirements in Registration
   Procedures for URL Scheme Names [URL-REG] and the recommendations in
   Guidelines for new URL Schemes [URL-GUIDE].


1.1  Terminology


   This document inherits terminology described in [XMPP-CORE].


   The capitalized 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 RFC
   2119 [TERMS].


2.  Description of xmpp: URI Scheme


2.1  Rationale


   Many types of application can be built using XMPP.  As specified in
   [XMPP-IM], instant messaging and presence applications of XMPP must
   handle the im: and pres: URI schemes specified by [CPIM] and [CPP].
   However, it is appropriate to define an XMPP-specific URI scheme for
   other applications of XMPP (such as network management, workflow
   applications, generic publish-subscribe, remote procedure calls,
   content syndication, gaming, and middleware) since these applications
   do not implement instant messaging and presence semantics.
   Therefore, this document defines a generic URI scheme that will
   enable applications to address as a URI any entity that can
   communicate via XMPP.


   The xmpp: URI format is provided for use by non-native interfaces and
   applications only, and primarily for the purpose of identification
   rather than interaction (on the latter distinction, see Section 1.2.2
   of [URI]).  In order to ensure interoperability on XMPP networks,
   when data is routed to an XMPP entity (e.g., when an XMPP address is
   contained in the 'to' or 'from' attribute of an XML stanza) or an




Saint-Andre              Expires March 8, 2005                  [Page 3]


Internet-Draft                  XMPP-URI                  September 2004



   XMPP entity is otherwise identified in standard XMPP protocol
   elements, the entity MUST be addressed as <[node@]domain[/resource]>
   (i.e., without a URI scheme), where the "node identifier", "domain
   identifer", and "resource identifier" portions of an XMPP address
   conform to the definitions provided in Section 3 of [XMPP-CORE].


   (Note: For historical reasons, the term "resource identifier" is used
   in XMPP to refer to the optional portion of an XMPP address that
   follows the domain identifier and the "/" separator character; for
   details, refer to Section 3.4 of [XMPP-CORE].  In the terms of [URI],
   the resource identifier portion of an XMPP address can be seen as
   equivalent to (and indeed maps to) the path component of an xmpp:
   URI, and therefore is not to be confused with the meanings of
   "resource" and "identifier" provided in Section 1.1 of [URI].)


2.2  Form


   As described in [XMPP-CORE], an XMPP address (also known as a "JID")
   used natively on an XMPP network is a string of Unicode characters
   that conforms to a certain set of [STRINGPREP] profiles and [IDNA]
   restrictions, following a certain set of syntax rules, encoded as
   [UTF-8].  The form of such an address can be represented using
   Augmented Backus-Naur Form ([ABNF]) as:


      [ node "@" ] domain [ "/" resource ]


   However, the "node" and "resource" rules rely on distinct profiles of
   [STRINGPREP] and the "domain" rule relies on the concept of an
   internationalized domain name as described in [IDNA].  Furthermore, a
   URI is allowed to contain [US-ASCII] characters only, and certain
   characters are reserved in URIs.  Therefore an XMPP address must be
   properly handled when transformed into an xmpp: URI (see Section 2.3
   of this memo) and the ABNF syntax needs to be adjusted in order to
   accurately capture the form of an xmpp: URI as opposed to a native
   XMPP address.


   Using the "unreserved", "pct-encoded", "host", "path-absolute", and
   "query" rules defined in [URI], the ABNF syntax for an xmpp: URI can
   be defined as follows:


      xmppuri = "xmpp:" [ nodeid "@" ] host [ path-absolute ]
                [ "?" query ]
      nodeid  = *( unreserved / pct-encoded / allowed )
      allowed = "!" / "$" / "(" / ")" / "*" / "+" / ";" / "="


   The nature of the query component is not specified herein but is
   reserved for future standardization or application-specific uses that
   are outside the scope of this memo; however, the encoding of the




Saint-Andre              Expires March 8, 2005                  [Page 4]


Internet-Draft                  XMPP-URI                  September 2004



   query component MUST be [UTF-8], converting non-US-ASCII octets to
   percent-encoded octets as explained below for other components.


   Note: While it would have been desirable to re-use the "userinfo"
   rule from [URI], this was not possible since the "userinfo" rule
   allows characters that conform to the "sub-delims" rule, but the "&"
   and "'" characters (which are allowed by the "sub-delims" rule) are
   disallowed in XMPP node identifiers by the Nodeprep profile of
   [STRINGPREP] as specified in Appendix A of [XMPP-CORE].


2.3  Generation of xmpp: URIs


2.3.1  URI Generation Method


   As should be obvious from the foregoing, when generating a conformant
   xmpp: URI from an XMPP address, it is necessary to use consistent
   methods for transforming an XMPP "node identifier" into a URI "nodeid
   component", an XMPP "domain identifier" into a URI "host component",
   and an XMPP "resource identifer" into a URI "path-absolute
   component"; such methods are described below.  Naturally, if the XMPP
   address exists in a non-UTF-8 form (e.g., having been written on a
   piece of paper or having been represented internally in a computer
   program as UTF-16), it MUST first be converted to [UTF-8] before the
   xmpp: URI is generated.


   In order to transform an XMPP "node identifier" into a URI "nodeid
   component", it MUST first be constructed in accordance with the rules
   specified in [XMPP-CORE], including application of the Nodeprep
   profile of [STRINGPREP] (see Appendix A of [XMPP-CORE]) and encoding
   as a [UTF-8] string; the [UTF-8] encoded characters of the XMPP "node
   identifier" MUST then be converted into US-ASCII characters, making
   sure to represent any reserved character and any character that is
   outside the range of the US-ASCII coded character set as a
   percent-encoded octet (see Section 2.1 of [URI]).


   In order to transform an XMPP "domain identifier" into a URI "host
   component", it MUST first be constructed in accordance with the rules
   specified in [XMPP-CORE], including application of the [NAMEPREP]
   profile of [STRINGPREP] and encoding as a [UTF-8] string; the [UTF-8]
   encoded characters of the XMPP "domain identifier" MUST then be
   converted into US-ASCII characters, making sure to represent any
   reserved character and any character that is outside the range of the
   US-ASCII coded character set as a percent-encoded octet (see Section
   2.1 of [URI]).


   In order to transform an XMPP "resource identifier" into a URI
   "path-absolute component", it MUST first be constructed in accordance
   with the rules specified in [XMPP-CORE], including application of the




Saint-Andre              Expires March 8, 2005                  [Page 5]


Internet-Draft                  XMPP-URI                  September 2004



   Resourceprep profile of [STRINGPREP] (see Appendix B of [XMPP-CORE])
   and encoding as a [UTF-8] string; after prepending the "/" character,
   the [UTF-8] encoded characters of the XMPP "resource identifier" MUST
   then be converted into US-ASCII characters, making sure to represent
   any reserved character and any character that is outside the range of
   the US-ASCII coded character set as a percent-encoded octet (see
   Section 2.1 of [URI]).


   In order to form an xmpp: URI from the foregoing components, the
   generating application MUST concatenate:


   1.  the "xmpp:" scheme
   2.  optionally the URI "nodeid component" and the "@" character (if
       the XMPP address contained an XMPP "node identifier")
   3.  the URI "host component"
   4.  optionally the "path-absolute component" (if any)
   5.  optionally the "?" character and query component (if a query
       component is to be included)


2.3.2  URI Generation Example


   Consider the following XMPP address:


         <ji&#x159;i@&#x10C;echy.example/v Praze>


   (Note: The string "&#x159;" stands for the Unicode character LATIN
   SMALL LETTER R WITH CARON and the string "&#x10C;" stands for the
   Unicode character LATIN CAPITAL LETTER C WITH CARON, following the
   "XML Notation" used in [IRI].  The '<' and '>' characters are not
   part of the address itself, but are provided to set off the address
   for legibility.  For those who do not read Czech, this example could
   be Anglicized as "george@czech-lands.example/In Prague".)


   In accordance with the process specified above, the generating
   application would do the following in order to generate a valid xmpp:
   URI from this address:


   1.  First ensure that the XMPP address conforms to the rules
       specified in [XMPP-CORE], including application of the relevant
       [STRINGPREP] profiles and encoding as a [UTF-8] string.
   2.  Split the address into an XMPP "node identifier" ("ji&#x159;i"),
       XMPP "domain identifier" ("&#x10C;echy.example"), and XMPP
       "resource identifier" ("v Praze").
   3.  Transform the XMPP "node identifier" into a URI "nodeid
       component" by converting the [UTF-8] string to US-ASCII,
       including conversion of the LATIN SMALL LETTER R WITH CARON
       character to its percent-encoded representation "%C5%99"; the
       result is a URI "nodeid component" of "ji%C5%99i".




Saint-Andre              Expires March 8, 2005                  [Page 6]


Internet-Draft                  XMPP-URI                  September 2004



   4.  Transform the XMPP "domain identifier" into a URI "host
       component" by converting the [UTF-8] string to US-ASCII,
       including conversion of the LATIN CAPITAL LETTER C WITH CARON
       character to its percent-encoded representation "%C4%8C"; the
       result is a URI "host component" of "&#x10C;echy.example".
   5.  Transform the XMPP "resource identifier" into a URI
       "path-absolute component" by converting the [UTF-8] string to
       US-ASCII, including conversion of the " " (SP) character to its
       percent-encoded representation "%20", and prepending the "/"
       character; the result is a URI "path-absolute component" of "/
       v%20Praze".
   6.  Concatenate the following:
       1.  the "xmpp:" scheme
       2.  the URI "nodeid component"
       3.  the "@" character
       4.  the URI "host component"
       5.  the "/" character
       6.  the URI "path-absolute component"


   The result is this xmpp: URI:


       <xmpp:ji%C5%99i@%C4%8Cechy.example/v%20Praze>



2.4  Processing of xmpp: URIs


2.4.1  URI Processing Method


   As with the generation of an xmpp: URI from an XMPP address, so also
   with the processing of an xmpp: URI (including the extraction of an
   XMPP address therefrom): it is necessary to use consistent methods;
   such methods are described below.


   In order to decompose an xmpp: URI, a processing application MUST
   separate:


   1.  the "xmpp:" scheme
   2.  optionally the URI "nodeid component" using the "@" character as
       a separator (if the xmpp: URI address contains a URI "nodeid
       component)
   3.  the URI "host component
   4.  optionally the URI "path-absolute component" (if any)
   5.  optionally the "?" character and query component (if a query
       component is included)


   In order to reconstruct the XMPP address from the foregoing
   components, the processing application MUST:





Saint-Andre              Expires March 8, 2005                  [Page 7]


Internet-Draft                  XMPP-URI                  September 2004



   o  Transform the URI "nodeid component" into an XMPP "node
      identifier" by converting each sequence of percent-encoded octets
      into the appropriate sequence of reserved or non-US-ASCII octets
      by first decoding percent-encoded octets into actual octets and
      then interpreting the octets as [UTF-8], then applying the
      Nodeprep profile of [STRINGPREP] as specified in Appendix A of
      [XMPP-CORE].
   o  Transform the URI "host component" into an XMPP "domain
      identifier" by converting each sequence of percent-encoded octets
      into the appropriate sequence of reserved or non-US-ASCII octets
      by first decoding percent-encoded octets into actual octets and
      then interpreting the octets as [UTF-8], then applying the
      [NAMEPREP] profile of [STRINGPREP].
   o  Transform the URI "path-absolute component" into an XMPP "resource
      identifier" by removing the initial "/" character and converting
      each sequence of percent-encoded octets into the appropriate
      sequence of reserved or non-US-ASCII octets by first decoding
      percent-encoded octets into actual octets and then interpreting
      the octets as [UTF-8], then applying the Resourceprep profile of
      [STRINGPREP] as specified in Appendix B of [XMPP-CORE].
   o  Concatenate the following (ensuring that the resulting string is
      encoded as [UTF-8]):
      1.  the XMPP "node identifier" and the "@" character (if a URI
          "nodeid component" was included)
      2.  the XMPP "domain identifier"
      3.  the "/" character and XMPP "resource identifier" (if a URI
          "path-absolute component" was included)


   At this point, the processing application would either (1) complete
   further XMPP handling itself or (2) invoke a helper application to
   complete XMPP handling; such XMPP handling would most likely consist
   of the following steps:


   1.  Authenticating with an appropriate XMPP server (e.g., a server
       that a user has configured as his or her registered service
       provider) if not already authenticated.
   2.  Optionally determining the nature of the intended recipient
       (e.g., via [DISCO]).
   3.  Optionally presenting an appropriate interface to a user based on
       the nature of the intended recipient and/or the contents of the
       query component (however, if the application does not understand
       the query component, it MUST ignore the query component and treat
       the URI as consisting of, for example, <xmpp:juliet@example.com>
       rather than <xmpp:juliet@example.com?query>).
   4.  Generating an XMPP stanza that translates any user or application
       inputs into their corresponding XMPP equivalents.
   5.  Sending the XMPP stanza via the authenticated server connection
       for delivery to the intended recipient.




Saint-Andre              Expires March 8, 2005                  [Page 8]


Internet-Draft                  XMPP-URI                  September 2004



2.4.2  URI Processing Example


   Consider the xmpp: URI that resulted from the previous example:


         <xmpp:ji%C5%99i@%C4%8Cechy.example/v%20Praze>


   In accordance with the process specified above, the processing
   application would do the following in order to extract the XMPP
   address from this xmpp: URI:


   1.  Split the URI into a URI "nodeid component" ("ji%C5%99i"), a URI
       "host component" ("%C4%8Cechy.example"), and a URI "path-absolute
       component" ("/v%20Praze").
   2.  Transform the URI "nodeid component" into an XMPP "node
       identifier" by converting the percent-encoded representation
       "%C5%99" to its equivalent [UTF-8] character (LATIN SMALL LETTER
       R WITH CARON), and ensuring that the entire string is encoded as
       [UTF-8]; the result is an XMPP "node identifier" of "ji&#x159i".
   3.  Transform the URI "host component" into an XMPP "domain
       identifier" by converting the US-ASCII string to [UTF-8] by
       converting the percent-encoded representation "%C4%8C" to its
       equivalent [UTF-8] character (LATIN CAPITAL LETTER C WITH CARON),
       and ensuring that the entire string is encoded as [UTF-8]; the
       result is an XMPP "domain identifier" of "%C4%8Cechy.example"
       (encoded as a [UTF-8] string).
   4.  Transform the URI "path-absolute component" into an XMPP
       "resource identifier" by removing the initial "/" character,
       converting the percent-encoded representation "%20" to its
       equivalent [UTF-8] character (SP), and ensuring that the entire
       string is encoded as [UTF-8]; the result is an XMPP "resource
       identifier" of "v Praze".
   5.  Concatenate the following (ensuring that the resulting string is
       encoded as [UTF-8]):
       1.  the XMPP "node identifier"
       2.  the "@" character
       3.  the XMPP "domain identifier"
       4.  the "/" character
       5.  the XMPP "resource identifier"


   The result is this XMPP address:


       <ji&#x159;i@&#x10C;echy.example/v Praze>



2.5  Internationalization


   Because XMPP addresses are [UTF-8] strings and because the
   non-US-ASCII octets in XMPP addresses can be easily converted to




Saint-Andre              Expires March 8, 2005                  [Page 9]


Internet-Draft                  XMPP-URI                  September 2004



   percent-encoded octets, XMPP addresses are designed to work well with
   Internationalized Resource Identifiers ([IRI]).  In particular, with
   the exception of stringprep verification and the conversion of
   syntax-relevant US-ASCII characters (e.g., "?"), an XMPP IRI can be
   constructed directly by prepending "xmpp:" to an XMPP address.


3.  IANA Registration of xmpp: URI Scheme


   This section provides the information required to register the xmpp:
   URI scheme.


3.1  URI scheme name


   xmpp


3.2  URI scheme syntax


   The syntax for an xmpp: URI is defined below using Augmented
   Backus-Naur Form as specified by [ABNF].  The "unreserved",
   "pct-encoded", "host", "path-absolute", and "query" rules are defined
   in [URI].


      xmppuri = "xmpp:" [ nodeid "@" ] host [ path-absolute ]
                [ "?" query ]
      nodeid  = *( unreserved / pct-encoded / allowed )
      allowed = "!" / "$" / "(" / ")" / "*" / "+" / ";" / "="



3.3  Character encoding considerations


   Prior to any conversion into a URI, an XMPP address MUST be
   represented as [UTF-8] by the generating application (e.g., by
   transforming an application's internal representation of the address
   as a UTF-16 string into a UTF-8 string) in accordance with
   [XMPP-CORE].  The UTF-8 string MUST then be converted into a US-ASCII
   string in order to be included in a URI; as part of this conversion,
   non-US-ASCII octets MUST be percent-encoded as described in Section
   2.1 of [URI].


3.4  Intended usage


   The xmpp: URI is intended to be used by interfaces to an XMPP network
   from non-native user agents such as web browsers, as well as by
   non-native applications that need to address XMPP entities as full
   URIs.







Saint-Andre              Expires March 8, 2005                 [Page 10]


Internet-Draft                  XMPP-URI                  September 2004



3.5  Security considerations


   See Security Considerations (Section 5) of XXXX.


3.6  Relevant publications


   [XMPP-CORE]


3.7  Person and email address to contact for further information


   Peter Saint-Andre [mailto:stpeter@jabber.org]


3.8  Author/change controller


   This scheme is registered under the IETF tree.  As such, the IETF
   maintains change control.


3.9  Applications and/or protocols which use this URI scheme name


   Applications (other than native native XMPP applications) that
   provide an interface to XMPP services or that need to address XMPP
   entities as full URIs.


4.  IANA Considerations


   This document registers a URI scheme.  The registration template can
   be found in Section 3 of this document.


5.  Security Considerations


   Detailed security considerations for XMPP are given in [XMPP-CORE].
   Providing an interface to XMPP services from non-native applications
   introduces new security concerns.  For example, the ability to
   interact with XMPP entities via a web browser may expose sensitive
   information to attacks that are not possible or that are unlikely on
   a native XMPP network.  Due care must be taken in deciding what
   information is appropriate for representing in xmpp: URIs.


6.  References


6.1  Normative References


   [ABNF]     Crocker, D. and P. Overell, "Augmented BNF for Syntax
              Specifications: ABNF", RFC 2234, November 1997.


   [IMF]      Resnick, P., "Internet Message Format", RFC 2822, April
              2001.





Saint-Andre              Expires March 8, 2005                 [Page 11]


Internet-Draft                  XMPP-URI                  September 2004



   [TERMS]    Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.


   [URI]      Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform
              Resource Identifier (URI): Generic Syntax",
              draft-fielding-uri-rfc2396bis-06 (work in progress), July
              2004.


   [URL-GUIDE]
              Masinter, L., Alvestrand, H., Zigmond, D. and R. Petke,
              "Guidelines for new URL Schemes", RFC 2718, November 1999.


   [URL-REG]  Petke, R. and I. King, "Registration Procedures for URL
              Scheme Names", BCP 35, RFC 2717, November 1999.


   [UTF-8]    Yergeau, F., "UTF-8, a transformation format of ISO
              10646", STD 63, RFC 3629, November 2003.


   [XMPP-CORE]
              Saint-Andre, P., "Extensible Messaging and Presence
              Protocol (XMPP): Core", draft-ietf-xmpp-core-24 (work in
              progress), May 2004.


   [XMPP-IM]  Saint-Andre, P., "Extensible Messaging and Presence
              Protocol (XMPP): Instant Messaging and Presence",
              draft-ietf-xmpp-im-22 (work in progress), April 2004.


6.2  Informative References


   [CPIM]     Peterson, J., "Common Profile for Instant Messaging
              (CPIM)", RFC 3860, August 2004.


   [CPP]      Peterson, J., "Common Profile for Presence (CPP)", RFC
              3859, August 2004.


   [DISCO]    Hildebrand, J., Millard, P., Eatmon, R. and P.
              Saint-Andre, "Service Discovery", JSF JEP 0030, July 2004.


   [IDNA]     Faltstrom, P., Hoffman, P. and A. Costello,
              "Internationalizing Domain Names in Applications (IDNA)",
              RFC 3490, March 2003.


   [IMP-MODEL]
              Day, M., Rosenberg, J. and H. Sugano, "A Model for
              Presence and Instant Messaging", RFC 2778, February 2000.


   [IMP-REQS]
              Day, M., Aggarwal, S. and J. Vincent, "Instant Messaging /




Saint-Andre              Expires March 8, 2005                 [Page 12]


Internet-Draft                  XMPP-URI                  September 2004



              Presence Protocol Requirements", RFC 2779, February 2000.


   [IRI]      Duerst, M. and M. Suignard, "Internationalized Resource
              Identifiers (IRI)", draft-duerst-iri-09 (work in
              progress), July 2004.


   [MAILTO]   Hoffman, P., Masinter, L. and J. Zawinski, "The mailto URL
              scheme", RFC 2368, July 1998.


   [NAMEPREP]
              Hoffman, P. and M. Blanchet, "Nameprep: A Stringprep
              Profile for Internationalized Domain Names (IDN)", RFC
              3491, March 2003.


   [STRINGPREP]
              Hoffman, P. and M. Blanchet, "Preparation of
              Internationalized Strings ("STRINGPREP")", RFC 3454,
              December 2002.


   [US-ASCII]
              American National Standards Institute, "Coded Character
              Set - 7-bit American Standard Code for Information
              Interchange", ANSI X3.4, 1986.



Author's Address


   Peter Saint-Andre
   Jabber Software Foundation


   EMail: stpeter@jabber.org


Appendix A.  Revision History


   Note to RFC Editor: please remove this entire appendix, and the
   corresponding entries in the table of contents, prior to publication.


A.1  Changes from draft-saintandre-xmpp-uri-04


   o  Simplified and clarified many aspects of the text based on
      feedback received on the uri@w3.org list.
   o  Changed URI reference from RFC2396 to rfc2396bis.
   o  Added examples.


A.2  Changes from draft-saintandre-xmpp-uri-03


   o  Clarified URI generation and processing rules in accordance with
      XMPP WG list discussion.




Saint-Andre              Expires March 8, 2005                 [Page 13]


Internet-Draft                  XMPP-URI                  September 2004



   o  Clarified nature of query component.


A.3  Changes from draft-saintandre-xmpp-uri-02


   o  Corrected several small textual errors.
   o  Clarified the scope of allowable presence information.


A.4  Changes from draft-saintandre-xmpp-uri-01


   o  Clarified guidelines for escaping of UTF-8 characters.
   o  Specified usage of query component.


A.5  Changes from draft-saintandre-xmpp-uri-00


   o  Modified ABNF to track changes to XMPP Core.
   o  Clarified a few matters in the text.




































Saint-Andre              Expires March 8, 2005                 [Page 14]


Internet-Draft                  XMPP-URI                  September 2004



Intellectual Property Statement


   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.


   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.


   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.



Disclaimer of Validity


   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.



Copyright Statement


   Copyright (C) The Internet Society (2004).  This document is subject
   to the rights, licenses and restrictions contained in BCP 78, and
   except as set forth therein, the authors retain all their rights.



Acknowledgment


   Funding for the RFC Editor function is currently provided by the
   Internet Society.





Saint-Andre              Expires March 8, 2005                 [Page 15]