< draft-ietf-simple-xcap-diff-03.txt   draft-ietf-simple-xcap-diff-04.txt >
SIMPLE J. Rosenberg SIMPLE J. Rosenberg
Internet-Draft Cisco Systems Internet-Draft Cisco Systems
Expires: September 7, 2006 March 6, 2006 Expires: April 20, 2007 October 17, 2006
An Extensible Markup Language (XML) Document Format for Indicating A An Extensible Markup Language (XML) Document Format for Indicating A
Change in XML Configuration Access Protocol (XCAP) Resources Change in XML Configuration Access Protocol (XCAP) Resources
draft-ietf-simple-xcap-diff-03 draft-ietf-simple-xcap-diff-04
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware 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 becomes have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 34 skipping to change at page 1, line 34
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on September 7, 2006. This Internet-Draft will expire on April 20, 2007.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2006). Copyright (C) The Internet Society (2006).
Abstract Abstract
This specification defines a document format that can be used to This specification defines a document format that can be used to
indicate that a change has occurred in a document managed by the indicate that a change has occurred in a document managed by the
Extensible Markup Language (XML) Configuration Access Protocol Extensible Markup Language (XML) Configuration Access Protocol
skipping to change at page 2, line 11 skipping to change at page 2, line 11
that was made in the document, using an XML patch format. XCAP diff that was made in the document, using an XML patch format. XCAP diff
documents can be delivered to clients using a number of means, documents can be delivered to clients using a number of means,
including a Session Initiation Protocol (SIP) event package. including a Session Initiation Protocol (SIP) event package.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Structure of an XCAP Diff Document . . . . . . . . . . . . . . 4 3. Structure of an XCAP Diff Document . . . . . . . . . . . . . . 4
4. XML Schema . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4. XML Schema . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5. Example Document . . . . . . . . . . . . . . . . . . . . . . . 7 5. Example Document . . . . . . . . . . . . . . . . . . . . . . . 8
6. Usage with an Event Package . . . . . . . . . . . . . . . . . 8 6. Security Considerations . . . . . . . . . . . . . . . . . . . 8
7. Security Considerations . . . . . . . . . . . . . . . . . . . 9 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 7.1. application/xcap-diff+xml MIME Type . . . . . . . . . . . 8
8.1 application/xcap-diff+xml MIME Type . . . . . . . . . . . 9 7.2. URN Sub-Namespace Registration for
8.2 URN Sub-Namespace Registration for urn:ietf:params:xml:ns:xcap-diff . . . . . . . . . . . . . 9
urn:ietf:params:xml:ns:xcap-diff . . . . . . . . . . . . . 10 7.3. Schema Registration . . . . . . . . . . . . . . . . . . . 10
8.3 Schema Registration . . . . . . . . . . . . . . . . . . . 11 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 10
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 11 8.1. Normative References . . . . . . . . . . . . . . . . . . . 10
9.1 Normative References . . . . . . . . . . . . . . . . . . . 11 8.2. Informative References . . . . . . . . . . . . . . . . . . 11
9.2 Informative References . . . . . . . . . . . . . . . . . . 12 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 12
Author's Address . . . . . . . . . . . . . . . . . . . . . . . 13 Intellectual Property and Copyright Statements . . . . . . . . . . 13
Intellectual Property and Copyright Statements . . . . . . . . 14
1. Introduction 1. Introduction
The Extensible Markup Language (XML) Configuration Access Protocol The Extensible Markup Language (XML) Configuration Access Protocol
(XCAP) [8] is a protocol that allows clients to manipulate XML (XCAP) [8] is a protocol that allows clients to manipulate XML
documents stored on a server. These XML documents serve as documents stored on a server. These XML documents serve as
configuration information for application protocols. As an example, configuration information for application protocols. As an example,
resource list [12] subscriptions (also known as presence lists) allow resource list [12] subscriptions (also known as presence lists) allow
a client to have a single SIP subscription to a list of users, where a client to have a single SIP subscription to a list of users, where
the list is maintained on a server. The server will obtain presence the list is maintained on a server. The server will obtain presence
skipping to change at page 7, line 11 skipping to change at page 7, line 11
transformation is effected. The <change-log> element can also transformation is effected. The <change-log> element can also
contain elements from other namespaces for the purposes of contain elements from other namespaces for the purposes of
extensibility. Any unknown elements MUST be ignored. extensibility. Any unknown elements MUST be ignored.
4. XML Schema 4. XML Schema
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="urn:ietf:params:xml:ns:xcap-diff" <xs:schema targetNamespace="urn:ietf:params:xml:ns:xcap-diff"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="urn:ietf:params:xml:ns:xcap-diff" xmlns="urn:ietf:params:xml:ns:xcap-diff"
elementFormDefault="qualified" attributeFormDefault="unqualified"> elementFormDefault="qualified"
<xs:include schemaLocation="patch-ops.xsd"/> attributeFormDefault="unqualified">
<xs:include schemaLocation="urn:ietf:params:xml:schema:xml-patch-ops"/>
<xs:element name="document"> <xs:element name="document">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="change-log" type="change-logType" minOccurs="0"/> <xs:element name="change-log" type="change-logType" minOccurs="0"/>
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> <xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence> </xs:sequence>
<xs:attribute name="doc-selector" type="xs:anyURI" use="required"/> <xs:attribute name="doc-selector" type="xs:anyURI" use="required"/>
<xs:attribute name="new-etag" type="xs:string" use="optional"/> <xs:attribute name="new-etag" type="xs:string" use="optional"/>
<xs:attribute name="previous-etag" type="xs:string" use="optional"/> <xs:attribute name="previous-etag" type="xs:string" use="optional"/>
<xs:attribute name="hash" type="xs:string" use="optional"/> <xs:attribute name="hash" type="xs:string" use="optional"/>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="xcap-diff"> <xs:element name="xcap-diff">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence maxOccurs="unbounded">
<xs:element ref="document"/> <xs:element ref="document"/>
</xs:sequence> </xs:sequence>
<xs:attribute name="xcap-root" type="xs:anyURI" use="required"/> <xs:attribute name="xcap-root" type="xs:anyURI" use="required"/>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:complexType name="change-logType"> <xs:complexType name="change-logType">
<xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:choice> <xs:choice>
<xs:element name="add" type="add"/> <xs:element name="add" type="add"/>
<xs:element name="remove" type="remove"/> <xs:element name="remove" type="remove"/>
<xs:element name="replace" type="replace"/> <xs:element name="replace" type="replace"/>
<xs:any namespace="##other"/> <xs:any namespace="##other" processContents="lax"/>
</xs:choice> </xs:choice>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:schema> </xs:schema>
5. Example Document 5. Example Document
The following is an example of a document compliant to the schema. The following is an example of a document compliant to the schema.
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
skipping to change at page 8, line 18 skipping to change at page 8, line 22
<document new-etag="7ahggs" <document new-etag="7ahggs"
doc-selector="resource-lists/users/joe/coworkers" doc-selector="resource-lists/users/joe/coworkers"
previous-etag="8a77f8d"/> previous-etag="8a77f8d"/>
</xcap-diff> </xcap-diff>
This indicates that the document with URI This indicates that the document with URI
"http://xcap.example.com/root/resource-lists/users/joe/coworkers" has "http://xcap.example.com/root/resource-lists/users/joe/coworkers" has
changed. Its previous entity tag is 8a77f8d and its new one is changed. Its previous entity tag is 8a77f8d and its new one is
7ahggs. 7ahggs.
6. Usage with an Event Package 6. Security Considerations
The XCAP diff format was meant to be used with an event package for
the purposes of indicating changes in a document. This section
provides guidelines for its usage with any event package defined for
that purpose.
Upon receipt of an initial SUBSCRIBE request, the client may have a
cached version of some documents. However, the server does not know
which instances of each document (where each instance is identified
by an etag) the client currently posessses, if any. Indeed, upon
initial startup, the client will not have any documents. The initial
NOTIFY in this case MUST include a <document> element for each
document associated with the subscription. The "previous-etag"
attribute MUST be absent, and the "new-etag" attribute MUST be
present and contain the entity tag for the current version of that
document resource. An XCAP diff document structured this way is
called a "reference" XCAP diff document. It establishes the baseline
etags and document URIs for the documents covered by the
subscription.
Upon receipt of this document, the client can determine whether its
local instance documents, if any, match the etags in the XCAP diff
document. If they do not match, the client SHOULD perform a
conditional GET for each document. The document URI is constructed
by appending the XCAP root in the "xcap-root" attribute of the <xcap-
diff> element to the escape coded "doc-selector" from each <document>
element. The request is made conditional by including an If-Match
header field, with the value of the etag from each <document>
element. So long as the documents haven't changed between the NOTIFY
and the GET, the client will obtain the reference versions that the
server will use for subsequent notifications.
If the conditional GET should fail, the client SHOULD generate a
SUBSCRIBE refresh request to trigger a new NOTIFY. The server will
always generate a "reference" XML diff document on receipt of a
SUBSCRIBE refresh. This establishes a new set of baseline etags, and
the client can then attempt to do another fetch. [[ISSUE: this is
really awful; we should include a parameter in the subscription which
allows the client to indicate which version it has. That would
obviate the need for a potentially never-ending stream of SUBSCRIBE/
GET sequences should the documents be rapidly changing, for some
reason.]]
Once the client has obtained the versions of the documents identified
in the reference XML diff, it can process NOTIFY requests on that
subscription. To process the NOTIFY requests, it makes sure that its
current version matches the version in the "previous-etag" attribute
of the <document> element. If not, the client can then fetch the
updated document from the server. If they do match, the client has
the most current version.
7. Security Considerations
XCAP diff documents can include changes from one document to another. XCAP diff documents can include changes from one document to another.
As a consequence, if the document itself is sensitive and requires As a consequence, if the document itself is sensitive and requires
confidentiality, integrity or authentication, than the same applies confidentiality, integrity or authentication, than the same applies
to the XCAP diff format. Therefore, protocols which transport XCAP to the XCAP diff format. Therefore, protocols which transport XCAP
diff documents must provide sufficient security capabilities for diff documents must provide sufficient security capabilities for
transporting the document itself. transporting the document itself.
8. IANA Considerations 7. IANA Considerations
There are several IANA considerations associated with this There are several IANA considerations associated with this
specification. specification.
8.1 application/xcap-diff+xml MIME Type 7.1. application/xcap-diff+xml MIME Type
MIME media type name: application MIME media type name: application
MIME subtype name: xcap-diff+xml MIME subtype name: xcap-diff+xml
Mandatory parameters: none Mandatory parameters: none
Optional parameters: Same as charset parameter application/xml as Optional parameters: Same as charset parameter application/xml as
specified in RFC 3023 [4]. specified in RFC 3023 [4].
Encoding considerations: Same as encoding considerations of Encoding considerations: Same as encoding considerations of
application/xml as specified in RFC 3023 [4]. application/xml as specified in RFC 3023 [4].
Security considerations: See Section 10 of RFC 3023 [4] and Security considerations: See Section 10 of RFC 3023 [4] and
Section 7 of RFCXXXX [[NOTE TO RFC-EDITOR/IANA: Please replace Section 6 of RFCXXXX [[NOTE TO RFC-EDITOR/IANA: Please replace
XXXX with the RFC number of this specification.]]. XXXX with the RFC number of this specification.]].
Interoperability considerations: none. Interoperability considerations: none.
Published specification: This document. Published specification: This document.
Applications which use this media type: This document type has Applications which use this media type: This document type has
been used to support manipulation of resource lists [14] using been used to support manipulation of resource lists [14] using
XCAP. XCAP.
skipping to change at page 10, line 32 skipping to change at page 9, line 35
Macintosh file type code: "TEXT" Macintosh file type code: "TEXT"
Personal and email address for further information: Jonathan Personal and email address for further information: Jonathan
Rosenberg, jdrosen@jdrosen.net Rosenberg, jdrosen@jdrosen.net
Intended usage: COMMON Intended usage: COMMON
Author/Change controller: The IETF. Author/Change controller: The IETF.
8.2 URN Sub-Namespace Registration for urn:ietf:params:xml:ns:xcap-diff 7.2. URN Sub-Namespace Registration for
urn:ietf:params:xml:ns:xcap-diff
This section registers a new XML namespace, as per the guidelines in This section registers a new XML namespace, as per the guidelines in
[6] [6]
URI: The URI for this namespace is URI: The URI for this namespace is
urn:ietf:params:xml:ns:xcap-diff. urn:ietf:params:xml:ns:xcap-diff.
Registrant Contact: IETF, SIMPLE working group, (simple@ietf.org), Registrant Contact: IETF, SIMPLE working group, (simple@ietf.org),
Jonathan Rosenberg (jdrosen@jdrosen.net). Jonathan Rosenberg (jdrosen@jdrosen.net).
skipping to change at page 11, line 25 skipping to change at page 10, line 25
<body> <body>
<h1>Namespace for XCAP Diff</h1> <h1>Namespace for XCAP Diff</h1>
<h2>urn:ietf:params:xml:ns:xcap-diff</h2> <h2>urn:ietf:params:xml:ns:xcap-diff</h2>
<p>See <a href="[URL of published RFC]">RFCXXXX[[NOTE <p>See <a href="[URL of published RFC]">RFCXXXX[[NOTE
TO IANA/RFC-EDITOR: Please replace XXXX with the RFC number of this TO IANA/RFC-EDITOR: Please replace XXXX with the RFC number of this
specification.]]</a>.</p> specification.]]</a>.</p>
</body> </body>
</html> </html>
END END
8.3 Schema Registration 7.3. Schema Registration
This section registers a new XML schema per the procedures in [6]. This section registers a new XML schema per the procedures in [6].
URI: urn:ietf:params:xml:schema:xcap-diff URI: urn:ietf:params:xml:schema:xcap-diff
Registrant Contact: IETF, SIMPLE working group, (simple@ietf.org), Registrant Contact: IETF, SIMPLE working group, (simple@ietf.org),
Jonathan Rosenberg (jdrosen@jdrosen.net). Jonathan Rosenberg (jdrosen@jdrosen.net).
The XML for this schema can be found as the sole content of The XML for this schema can be found as the sole content of
Section 4. Section 4.
9. References 8. References
9.1 Normative References 8.1. Normative References
[1] Boyer, J., "Canonical XML Version 1.0", W3C REC REC-xml-c14n- [1] Boyer, J., "Canonical XML Version 1.0", World Wide Web
20010315, March 2001. Consortium Recommendation REC-xml-c14n-20010315, March 2001,
<http://www.w3.org/TR/2001/REC-xml-c14n-20010315>.
[2] Bray, T., Paoli, J., Sperberg-McQueen, C., and E. Maler, [2] Paoli, J., Maler, E., Sperberg-McQueen, C., Bray, T., and F.
"Extensible Markup Language (XML) 1.0 (Second Edition)", W3C Yergeau, "Extensible Markup Language (XML) 1.0 (Third Edition)",
FirstEdition REC-xml-20001006, October 2000. World Wide Web Consortium Recommendation REC-xml-20040204,
February 2004, <http://www.w3.org/TR/2004/REC-xml-20040204>.
[3] Moats, R., "URN Syntax", RFC 2141, May 1997. [3] Moats, R., "URN Syntax", RFC 2141, May 1997.
[4] Murata, M., St. Laurent, S., and D. Kohn, "XML Media Types", [4] Murata, M., St. Laurent, S., and D. Kohn, "XML Media Types",
RFC 3023, January 2001. RFC 3023, January 2001.
[5] Moats, R., "A URN Namespace for IETF Documents", RFC 2648, [5] Moats, R., "A URN Namespace for IETF Documents", RFC 2648,
August 1999. August 1999.
[6] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [6] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
January 2004. January 2004.
[7] Bradner, S., "Key words for use in RFCs to Indicate Requirement [7] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119, March 1997. Levels", BCP 14, RFC 2119, March 1997.
[8] Rosenberg, J., "The Extensible Markup Language (XML) [8] Rosenberg, J., "The Extensible Markup Language (XML)
Configuration Access Protocol (XCAP)", draft-ietf-simple-xcap-08 Configuration Access Protocol (XCAP)", draft-ietf-simple-xcap-12
(work in progress), October 2005. (work in progress), October 2006.
[9] Urpalainen, J., "An Extensible Markup Language (XML) Patch [9] Urpalainen, J., "An Extensible Markup Language (XML) Patch
Operations Framework Utilizing XML Path Language (XPath) Operations Framework Utilizing XML Path Language (XPath)
Selectors", draft-ietf-simple-xml-patch-ops-01 (work in Selectors", draft-ietf-simple-xml-patch-ops-02 (work in
progress), January 2006. progress), March 2006.
9.2 Informative References 8.2. Informative References
[10] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., [10] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A.,
Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP: Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP:
Session Initiation Protocol", RFC 3261, June 2002. Session Initiation Protocol", RFC 3261, June 2002.
[11] Roach, A., "Session Initiation Protocol (SIP)-Specific Event [11] Roach, A., "Session Initiation Protocol (SIP)-Specific Event
Notification", RFC 3265, June 2002. Notification", RFC 3265, June 2002.
[12] Roach, A., Rosenberg, J., and B. Campbell, "A Session [12] Roach, A., Campbell, B., and J. Rosenberg, "A Session
Initiation Protocol (SIP) Event Notification Extension for Initiation Protocol (SIP) Event Notification Extension for
Resource Lists", draft-ietf-simple-event-list-07 (work in Resource Lists", RFC 4662, August 2006.
progress), January 2005.
[13] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-Hashing [13] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-Hashing
for Message Authentication", RFC 2104, February 1997. for Message Authentication", RFC 2104, February 1997.
[14] Rosenberg, J., "Extensible Markup Language (XML) Formats for [14] Rosenberg, J., "Extensible Markup Language (XML) Formats for
Representing Resource Lists", Representing Resource Lists",
draft-ietf-simple-xcap-list-usage-05 (work in progress), draft-ietf-simple-xcap-list-usage-05 (work in progress),
February 2005. February 2005.
[15] Burger, E., "A Mechanism for Content Indirection in Session [15] Burger, E., "A Mechanism for Content Indirection in Session
Initiation Protocol (SIP) Messages", Initiation Protocol (SIP) Messages", RFC 4483, May 2006.
draft-ietf-sip-content-indirect-mech-05 (work in progress),
October 2004.
Author's Address Author's Address
Jonathan Rosenberg Jonathan Rosenberg
Cisco Systems Cisco Systems
600 Lanidex Plaza 600 Lanidex Plaza
Parsippany, NJ 07054 Parsippany, NJ 07054
US US
Phone: +1 973 952-5000 Phone: +1 973 952-5000
 End of changes. 24 change blocks. 
97 lines changed or deleted 46 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/