< draft-ietf-simple-xcap-diff-05.txt   draft-ietf-simple-xcap-diff-06.txt >
SIMPLE J. Rosenberg SIMPLE J. Rosenberg
Internet-Draft Cisco Internet-Draft Cisco
Intended status: Standards Track March 5, 2007 Intended status: Standards Track J. Urpalainen
Expires: September 6, 2007 Expires: February 18, 2008 Nokia
August 17, 2007
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-05 draft-ietf-simple-xcap-diff-06
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 35 skipping to change at page 1, line 36
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 6, 2007. This Internet-Draft will expire on February 18, 2008.
Copyright Notice Copyright Notice
Copyright (C) The IETF Trust (2007). Copyright (C) The IETF Trust (2007).
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
(XCAP). This format indicates the document that has changed and its (XCAP). This format indicates the document that has changed and its
former and new entity tags. It also can indicate the specific change former and new entity tags. It also can indicate the specific change
that was made in the document, using an XML patch format. XCAP diff that was made in the document, using an XML patch format. This
documents can be delivered to clients using a number of means, format allows also indications of element and attribute content of an
including a Session Initiation Protocol (SIP) event package. XML document. XCAP diff documents can be delivered to clients using
a number of means, 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 . . . . . . . . . . . . . . . . . . . . . . . 10
6. Security Considerations . . . . . . . . . . . . . . . . . . . 8 6. Security Considerations . . . . . . . . . . . . . . . . . . . 10
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11
7.1. application/xcap-diff+xml MIME Type . . . . . . . . . . . 8 7.1. application/xcap-diff+xml MIME Type . . . . . . . . . . . 11
7.2. URN Sub-Namespace Registration for 7.2. URN Sub-Namespace Registration for
urn:ietf:params:xml:ns:xcap-diff . . . . . . . . . . . . . 9 urn:ietf:params:xml:ns:xcap-diff . . . . . . . . . . . . . 12
7.3. Schema Registration . . . . . . . . . . . . . . . . . . . 10 7.3. Schema Registration . . . . . . . . . . . . . . . . . . . 12
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 10 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 13
8.1. Normative References . . . . . . . . . . . . . . . . . . . 10 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 13
8.2. Informative References . . . . . . . . . . . . . . . . . . 11 9.1. Normative References . . . . . . . . . . . . . . . . . . . 13
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 11 9.2. Informative References . . . . . . . . . . . . . . . . . . 14
Intellectual Property and Copyright Statements . . . . . . . . . . 13 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 14
Intellectual Property and Copyright Statements . . . . . . . . . . 15
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) [9] 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 [13] 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
for those users and report it back to the client. This application for those users and report it back to the client. This application
requires the server, called a Resource List Server (RLS), to have requires the server, called a Resource List Server (RLS), to have
access to the list of presentities. This list needs to be access to the list of presentities. This list needs to be
manipulated by clients so they can add and remove their friends as manipulated by clients so they can add and remove their friends as
they desire. they desire.
Complexities arise when multiple clients attempt to simultaneously Complexities arise when multiple clients attempt to simultaneously
manipulate a document, such as a presence list. Frequently, a client manipulate a document, such as a presence list. Frequently, a client
will keep a copy of the current list in memory, so it can render it will keep a copy of the current list in memory, so it can render it
to users. However, if another client modifies the document, the to users. However, if another client modifies the document, the
cached version becomes stale. This modification event must be made cached version becomes stale. This modification event must be made
known to all clients which have cached copies of the document, so known to all clients which have cached copies of the document, so
that they can fetch the most recent one. that they can fetch the most recent one.
To deal with this problem, clients can use a Session Initiation To deal with this problem, clients can use a Session Initiation
Protocol (SIP) [10] event package [11] to subscribe to change events Protocol (SIP) [11] event package [12] to subscribe to change events
in XCAP documents. This notification needs to indicate the specific in XCAP documents. This notification needs to indicate the specific
resource that changed, and how it changed. One solution for the resource that changed, and how it changed. One solution for the
format of such a change notification would be a content indirection format of such a change notification would be a content indirection
object [15]. Though content indirection can tell a client that a object [15]. Though content indirection can tell a client that a
document has changed, it provides it with MIME Content-ID indicating document has changed, it provides it with MIME Content-ID indicating
the new version of the document. The MIME Content-ID is not the same the new version of the document. The MIME Content-ID is not the same
as the entity tag, which is used by XCAP for document versioning. As as the entity tag, which is used by XCAP for document versioning. As
such, a client cannot easily ascertain whether an indication of a such, a client cannot easily ascertain whether an indication of a
change in a document is due to a change it just made, or due to a change in a document is due to a change it just made, or due to a
change another client made at around the same time. Furthermore, change another client made at around the same time. Furthermore,
content indirections don't indicate how a document changed; they content indirections don't indicate how a document changed; they
would only be able to indicate that it did change. would only be able to indicate that it did change.
To resolve these problems, this document defines a data format which To resolve these problems, this document defines a data format which
can convey the fact that an XML document managed by XCAP has changed. can convey the fact that an XML document managed by XCAP has changed.
This data format is an XML document format, called an XCAP diff This data format is an XML document format, called an XCAP diff
document. This format can indicate that a document has changed, and document. This format can indicate that a document has changed, and
provide its previous and new entity tags. It can also optionally provide its previous and new entity tags. It can also optionally
include a set of patch operations [9], which indicate how to include a set of patch operations [10], which indicate how to
transform the document from the version prior to the change, to the transform the document from the version prior to the change, to the
version after it. version after it. XML element and attribute content of XCAP
documents can also be delivered with this format.
XML documents that are equivalent for the purposes of many
applications may differ in their physical representation. Similar to
XCAP, the canonical form with comments [1] of an XML document
determines the logical equivalence when this format is used to patch
XML documents.
2. Terminology 2. Terminology
In this document, the key words "MUST", "MUST NOT", "REQUIRED", In this document, the key words "MUST", "MUST NOT", "REQUIRED",
"SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
and "OPTIONAL" are to be interpreted as described in RFC 2119 [7] and and "OPTIONAL" are to be interpreted as described in RFC 2119 [8] and
indicate requirement levels for compliant implementations. indicate requirement levels for compliant implementations.
This specification also defines the following additional terms: This specification also defines the following additional terms:
Document: When the term document is used without the "XCAP diff" in Document: When the term document is used without the "XCAP diff" in
front of it, it refers to the XCAP document resource about whom front of it, it refers to the XCAP document resource about whom
the XCAP diff document is reporting a change. the XCAP diff document is reporting a change.
XCAP diff document: The XML document defined by this specification XCAP diff document: The XML document defined by this specification
that reports on a set of changes in an XCAP document resource. that reports on a set of changes in an XCAP document resource.
skipping to change at page 4, line 36 skipping to change at page 4, line 42
consumes XCAP diff documents in order to reconstruct the document consumes XCAP diff documents in order to reconstruct the document
stored on the server. stored on the server.
3. Structure of an XCAP Diff Document 3. Structure of an XCAP Diff Document
An XCAP diff document is an XML [2] document that MUST be well-formed An XCAP diff document is an XML [2] document that MUST be well-formed
and SHOULD be valid. XCAP diff documents MUST be based on XML 1.0 and SHOULD be valid. XCAP diff documents MUST be based on XML 1.0
and MUST be encoded using UTF-8. This specification makes use of XML and MUST be encoded using UTF-8. This specification makes use of XML
namespaces for identifying XCAP diff documents and document namespaces for identifying XCAP diff documents and document
fragments. The namespace URI for elements defined by this fragments. The namespace URI for elements defined by this
specification is a URN [3], using the namespace identifier 'ietf' specification is a URN [4], using the namespace identifier 'ietf'
defined by [5] and extended by [6]. This URN is: defined by [6] and extended by [7]. This URN is:
urn:ietf:params:xml:ns:xcap-diff urn:ietf:params:xml:ns:xcap-diff
An XCAP diff document begins with the root element tag <xcap-diff>. An XCAP diff document begins with the root element tag <xcap-diff>.
This element has a single mandatory attribute, "xcap-root". The This element has a single mandatory attribute, "xcap-root". The
value of this attribute is the XCAP root URI for the documents in value of this attribute is the XCAP root URI for the documents in
which the changes have taken place. A single XCAP diff document can which the changes have taken place. A single XCAP diff document can
only represent changes in documents within the same XCAP root. The only represent changes in documents within the same XCAP root. The
content of the <xcap-diff> element is a sequence of <document> content of the <xcap-diff> element is an unordered sequence of
elements. Each <document> element specifies changes in a specific <document>, <element> and <attribute> elements followed by any number
document within the XCAP root. It has one mandatory attribute, "doc- of elements from other namespaces for the purposes of extensibility.
selector", and a three optional attributes, "new-etag", "previous- Any such unknown elements MUST be ignored by the client. Each
etag" and "hash". The "doc-selector" identifies the specific <document> element specifies changes in a specific document within
document within the XCAP root for which changes are indicated. Its the XCAP root. It has one mandatory attribute, "sel", and a two
content MUST be a relative path reference, with the base URI being optional attributes, "new-etag" and "previous-etag". The "sel"
equal to the XCAP root URI. The "new-etag" attribute provides the attribute of the <document> element identifies the specific document
etag for the document after the application of the changes, assuming within the XCAP root for which changes are indicated. Its content
the document exists after those changes. If the change being MUST be a relative path reference, with the base URI being equal to
reported is the deletion of the document, the "new-etag" attribute the XCAP root URI. The "new-etag" attribute provides the entity tag
will not be present. A server MUST include the "new-etag" unless the (ETag) for the document after the application of the changes,
document does not exist subsequent to the changes reported in the assuming the document exists after those changes. The "previous-
XCAP diff document. The "previous-etag" attribute provides an etag" attribute provides an identifier for the document instance
identifier for the document instance prior to the change. If the prior to the change. If the change being reported is the removal of
document did not exist prior to the change (that is, the change was a document, the "previous-etag" MUST only be included and the "new-
the creation of the document), the "previous-etag" is not present. etag" attribute will not be present. The "new-etag" attribute MUST
only exist alone when the document either exists or it was just
created (no patch included). Both attributes are present when a
patch (or series of XCAP operations) has been applied to the
resource. Also both attributes MAY be used to indicate an ETag
change without any document modifications (patches).
The "previous-etag" and "new-etag" need not have been sequentially The "previous-etag" and "new-etag" need not have been sequentially
assigned etags at the server. An XCAP diff document can indicate assigned ETags at the server. An XCAP diff document can indicate
changes that have occurred over a series of XCAP operations. changes that have occurred over a series of XCAP operations. The
only requirement then is that, the sequence of events, when executed
serially, will result in the transformation of the document with the
ETag "previous-etag" to the one whose ETag is "new-etag". Also the
series of operations do not have to be the same exact series of
operations that occurred at the server.
The optional "hash" attribute provides an HMAC of the document Each <document> element contains either a sequence of patching
instance whose etag is "new-etag", once that document is represented instructions or an indication that the body hasn't semantically
in canonical form. To compute this value, the server MUST apply the changed. The latter means that the document has been assigned a new
mandatory XML canonicalization defined in the Canonical XML 1.0 [1] ETag but its content is unchanged and it is indicated by the <body-
specification, and then computes an HMAC [13] using SHA1 over this not-changed> element. Patching instructions are described by the
canonical document, with a key whose value is 0x2238a. The result is <add>, <replace> and <remove> elements. These elements use the
the value of the "hash" attribute. This attribute is optional, and a corresponding add, replace and remove types defined in [10], and
server MAY elect not to include it. Even if present, a client MAY define a set of patch operations that can be applied to transform the
elect to ignore it. document. See [10] for instructions on how this transformation is
effected. The <document> element can also contain elements from
other namespaces for the purposes of extensibility. Any unknown
elements MUST be ignored.
Each <document> element contains zero or one <change-log> element, Figure 1 shows <document> element content and how corresponding
followed by any number of elements from another namespace for the resource or metadata changes. An external document retrieval means
purposes of extensibility. Any such unknown elements MUST be ignored in practice an HTTP GET requests for a relevant resource.
by the client. When present, the <change-log> element tells the
client the specific set of XML patch operations that can be applied
to transform the document from the version whose etag was "previous-
etag" to the version whose etag is "new-etag". If the "previous-
etag" is not present, the <change-log> element tells the client the
specific set of XML patch operations that can be applied to create a
document from nothing, and result in the document whose etag is "new-
etag". If the "new-etag" attribute is not present, it implies that
the document was removed. In that case, the <change-log> is
meaningless and SHOULD be ignored.
The series of operations in the <change-log> do not have to be the +-----------+----------+-----------+----------+-------------------+
same exact series of operations that occurred at the server. The | previous- | new- | <add> | <body- | XCAP resource/ |
only requirement is that, if the server includes the <change-log> | etag | etag | <replace> | not- | metadata change |
element, the sequence of events, when executed serially, will result | | | <remove> | changed> | |
in the transformation of the document with the etag "previous-etag" +-----------+----------+-----------+----------+-------------------+
to the one whose etag is "new-etag". If the <change-log> element is | xxx | yyy | * | - | resource patched, |
not present, it means that the document has changed in some way, but | | | | | patch included |
the XCAP server has elected not to provide the set of changes. In +-----------+----------+-----------+----------+-------------------+
that case, a client can retrieve the latest document if its cached | xxx | yyy | - | - | resource patched, |
etag doesn't match the value of "new-etag". | | | | | external document |
| | | | | retrieval |
+-----------+----------+-----------+----------+-------------------+
| xxx | yyy | - | * | only ETag changed |
+-----------+----------+-----------+----------+-------------------+
| - | yyy | - | - | resource created |
| | | | | or exists, |
| | | | | external document |
| | | | | retrieval |
+-----------+----------+-----------+----------+-------------------+
| xxx | - | - | - | resource removed |
+-----------+----------+-----------+----------+-------------------+
It is important to note that a <document> element with no <change- Figure 1: <document> element content / corresponding resource changes
log> child is not equivalent to a <document> element with a <change-
log> child that is itself empty. The latter means that the document
has been assigned a new etag but its content is unchanged. The
former means that it has been assigned a new etag as a result of a
change, but the specific changes are not being reported in the XCAP
diff document.
Each <change-log> element contains a sequence of instructions, each Each <element> element indicates the existing element content of an
of which can be <add>, <replace> and <remove> elements. These XCAP document. It has one mandatory attribute, "sel", and one
elements use the corresponding add, replace and remove types defined optional attribute, "exists". The "sel" attribute of the <element>
in [9], and define a set of patch operations that can be applied to element identifies an XML element of an XCAP document. It is a
transform the document. See [9] for instructions on how this percent endoced relative URI following XCAP conventions when
transformation is effected. The <change-log> element can also selecting elements. The XCAP Node Selector MUST always locate a
contain elements from other namespaces for the purposes of unique node, the "exists" attribute thus shows whether an element
extensibility. Any unknown elements MUST be ignored. exists or not in the XCAP document. When the "exists" attribute is
absent from the <element> element, the indicated element still exists
in the XCAP document. The located result element exists as a child
element of the <element> element. It should be noted, that only the
full content of an element is shown if it exists, there are no
conventions for patching these elements. In a corner case where the
content of this element cannot be presented for some reason, although
it exists in the XCAP document, the <element> element MUST not have
any child nodes.
As the result XML element is typically namespace qualified, all
needed namespace declarations MUST exist within the <xml-diff>
document. The possible local namespace declarations within the
result element exist unmodified as in the source document, similar to
XCAP conventions. Other namespace references MUST be resolved from
the context of the <element> or its parent elements. The prefixes of
qualified names (QName) [3] of XML nodes also remain as they exist
originally in the source XCAP document.
Each <attribute> element indicates the existing attribute content of
an XCAP document. It has one mandatory attribute, "sel", and one
optional attribute, "exists". The "sel" attribute of the <attribute>
element identifies an XML attribute of an XCAP document. It is a
percent endoced relative URI following XCAP conventions when
selecting attributes. The "exists" attribute indicates whether an
attribute exists or not in the XCAP document. When the "exists"
attribute is absent from the <attribute> element, the indicated
attribute exists in the XCAP document. The child text node of the
<attribute> element indicates the value of the located attribute.
4. XML Schema 4. XML Schema
<?xml version="1.0" encoding="UTF-8"?> The XML Schema for the XCAP diff format.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="urn:ietf:params:xml:ns:xcap-diff" <?xml version="1.0" encoding="UTF-8"?>
targetNamespace="urn:ietf:params:xml:ns:xcap-diff" <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified"> xmlns="urn:ietf:params:xml:ns:xcap-diff"
<xs:include schemaLocation="urn:ietf:params:xml:schema:xml-patch-ops"/> targetNamespace="urn:ietf:params:xml:ns:xcap-diff"
<xs:complexType name="documentType"> elementFormDefault="qualified"
<xs:sequence> attributeFormDefault="unqualified">
<xs:element name="change-log" type="change-logType" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" <!-- include patch-ops -->
minOccurs="0" maxOccurs="unbounded"/> <xs:include
</xs:sequence> schemaLocation="urn:ietf:params:xml:schema:xml-patch-ops"/>
<xs:attribute name="doc-selector" type="xs:anyURI" use="required"/>
<xs:attribute name="new-etag" type="xs:string" use="optional"/> <!-- document root -->
<xs:attribute name="previous-etag" type="xs:string" use="optional"/> <xs:element name="xcap-diff">
<xs:attribute name="hash" type="xs:string" use="optional"/> <xs:complexType>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:sequence minOccurs="0">
</xs:complexType>
<xs:element name="xcap-diff"> <xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:complexType> <xs:choice>
<xs:sequence maxOccurs="unbounded"> <xs:element name="document" type="documentType"/>
<xs:element name="document" type="documentType"/> <xs:element name="element" type="elementType"/>
</xs:sequence> <xs:element name="attribute" type="attributeType"/>
<xs:attribute name="xcap-root" type="xs:anyURI" use="required"/> </xs:choice>
</xs:complexType> </xs:sequence>
</xs:element> <xs:any namespace="##other" processContents="lax"
<xs:complexType name="change-logType"> minOccurs="0" maxOccurs="unbounded"/>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:choice> </xs:sequence>
<xs:element name="add" type="add"/> <xs:attribute name="xcap-root" type="xs:anyURI" use="required"/>
<xs:element name="remove" type="remove"/> <xs:anyAttribute namespace="##any" processContents="lax"/>
<xs:element name="replace" type="replace"/> </xs:complexType>
<xs:any namespace="##other" processContents="lax"/> </xs:element>
</xs:choice>
</xs:sequence> <!-- xcap document type -->
</xs:complexType> <xs:complexType name="documentType">
</xs:schema>
<xs:choice minOccurs="0">
<xs:element name="body-not-changed" type="emptyType"/>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:choice>
<xs:element name="add">
<xs:complexType>
<xs:complexContent>
<xs:extension base="add">
<xs:anyAttribute processContents="lax"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="remove">
<xs:complexType>
<xs:complexContent>
<xs:extension base="remove">
<xs:anyAttribute processContents="lax"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="replace">
<xs:complexType>
<xs:complexContent>
<xs:extension base="replace">
<xs:anyAttribute processContents="lax"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:any namespace="##other" processContents="lax"/>
</xs:choice>
</xs:sequence>
</xs:choice>
<xs:attribute name="sel" type="xs:anyURI" use="required"/>
<xs:attribute name="new-etag" type="xs:string" use="optional"/>
<xs:attribute name="previous-etag" type="xs:string" use="optional"/>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
<!-- xcap element type -->
<xs:complexType name="elementType">
<xs:complexContent>
<xs:restriction base="xs:anyType">
<xs:sequence>
<xs:any processContents="lax" namespace="##any"
minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="sel" type="xs:string"
use="required"/>
<xs:attribute name="exists" type="xs:boolean"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- xcap attribute type -->
<xs:complexType name="attributeType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="sel" type="xs:string"
use="required"/>
<xs:attribute name="exists" type="xs:boolean"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- empty type -->
<xs:complexType name="emptyType"/>
</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"?>
<xcap-diff xmlns="urn:ietf:params:xml:ns:xcap-diff" <xcap-diff xmlns="urn:ietf:params:xml:ns:xcap-diff"
xcap-root="http://xcap.example.com/root"> xcap-root="http://xcap.example.com/root/">
<document new-etag="7ahggs"
doc-selector="resource-lists/users/joe/coworkers"
previous-etag="8a77f8d"/>
</xcap-diff>
This indicates that the document with URI <document new-etag="7ahggs"
"http://xcap.example.com/root/resource-lists/users/joe/coworkers" has sel="resource-lists/users/sip:joe@example.com/coworkers"
changed. Its previous entity tag is 8a77f8d and its new one is previous-etag="8a77f8d"/>
7ahggs.
<d:element sel="rls-services/users/sip:joe@example.com/index/~~
/*/service%5b@uri='sip:marketing@example.com'%5d"
xmlns:d="urn:ietf:params:xml:ns:xcap-diff"
xmlns="urn:ietf:params:xml:ns:rls-services"
xmlns:rl="urn:ietf:params:xml:ns:resource-lists"
><service uri="sip:marketing@example.com">
<list name="marketing">
<rl:entry uri="sip:joe@example.com"/>
<rl:entry uri="sip:sudhir@example.com"/>
</list>
<packages>
<package>presence</package>
</packages>
</service></d:element>
<attribute
sel="rls-services/users/sip:joe@example.com/index/~~/*/service/@uri"
>sip:marketing@example.com</attribute>
</xcap-diff>
This indicates that the document with URI "http://xcap.example.com/
root/resource-lists/users/sip:joe@example.com/coworkers" has changed.
Its previous entity tag is "8a77f8d" and its new one is "7ahggs" but
actual changes are not shown. The <service> element exists in the
rls-services "index" document and its full content is shown. Note
that the <service> element is attached with a default namespace
declaration within the original document. Similarly, a "uri"
attribute content is shown from the same "index" document as an
illustrative example.
6. Security Considerations 6. 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, then 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.
7. IANA Considerations 7. IANA Considerations
There are several IANA considerations associated with this There are several IANA considerations associated with this
specification. specification.
7.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 [5].
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 [5].
Security considerations: See Section 10 of RFC 3023 [4] and Security considerations: See Section 10 of RFC 3023 [5] and
Section 6 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 9, line 20 skipping to change at page 12, line 4
been used to support manipulation of resource lists [14] using been used to support manipulation of resource lists [14] using
XCAP. XCAP.
Additional Information: Additional Information:
Magic Number: None Magic Number: None
File Extension: .xdf File Extension: .xdf
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.
7.2. URN Sub-Namespace Registration for 7.2. URN Sub-Namespace Registration for
urn:ietf:params:xml:ns:xcap-diff 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] [7]
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).
XML: XML:
BEGIN BEGIN
skipping to change at page 10, line 27 skipping to change at page 12, line 47
<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
7.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 [7].
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.
8. References 8. Acknowledgments
8.1. Normative References The authors would like to thank Pavel Dostal, Jeroen van Bemmel,
Martin Hynar and Anders Lindgren for their valuable comments.
[1] Boyer, J., "Canonical XML Version 1.0", World Wide Web 9. References
Consortium Recommendation REC-xml-c14n-20010315, March 2001,
<http://www.w3.org/TR/2001/REC-xml-c14n-20010315>.
[2] Sperberg-McQueen, C., Maler, E., Yergeau, F., Bray, T., and J. 9.1. Normative References
Paoli, "Extensible Markup Language (XML) 1.0 (Third Edition)",
World Wide Web Consortium FirstEdition REC-xml-20040204,
February 2004, <http://www.w3.org/TR/2004/REC-xml-20040204>.
[3] Moats, R., "URN Syntax", RFC 2141, May 1997. [1] "Canonical XML 1.0", W3C Recommendation REC-xml-c14n-20010315 ,
March 2001.
[4] Murata, M., St. Laurent, S., and D. Kohn, "XML Media Types", [2] "Extensible Markup Language (XML) 1.0 (Fourth Edition)", W3C
RFC 3023, January 2001. Recommendation REC-xml-20060816 , August 2006.
[5] Moats, R., "A URN Namespace for IETF Documents", RFC 2648, [3] "Namespaces in XML (Second Edition)", W3C Recommendation REC-
August 1999. xml-names-20060816 , August 2006.
[6] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [4] Moats, R., "URN syntax", RFC 2141, May 1997.
[5] Murata, M., "XML media types", RFC 3023, January 2001.
[6] Moats, R., "A URN namespace for IETF documents", RFC 2648,
Aug. 1999.
[7] Mealling, M., "The IETF XML Registry", RFC 3688, BCP 81,
January 2004. January 2004.
[7] Bradner, S., "Key words for use in RFCs to Indicate Requirement [8] 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) [9] Rosenberg, J., "The Extensible Markup Language (XML)
Configuration Access Protocol (XCAP)", Configuration Access Protocol (XCAP)", RFC 4825, May 2007.
draft-ietf-simple-xcap-12 (work in progress), October 2006.
[9] Urpalainen, J., "An Extensible Markup Language (XML) Patch [10] 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-02 (work in Selectors", draft-ietf-simple-xml-patch-ops-03, August 2007.
progress), March 2006.
8.2. Informative References 9.2. Informative References
[10] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., [11] 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 [12] Roach, A., "Session Initiation Protocol (SIP)-Specific Event
Notification", RFC 3265, June 2002. Notification", RFC 3265, June 2002.
[12] Roach, A., Campbell, B., and J. Rosenberg, "A Session [13] 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", RFC 4662, August 2006. Resource Lists", RFC 4662, August 2006.
[13] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-Hashing
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", RFC 4826, May 2007.
draft-ietf-simple-xcap-list-usage-05 (work in progress),
February 2005.
[15] Burger, E., "A Mechanism for Content Indirection in Session [15] Burger, E., Ed., "A Mechanism for Content Indirection in
Initiation Protocol (SIP) Messages", RFC 4483, May 2006. Session Initiation Protocol (SIP) Messages", RFC 4483,
May 2006.
Author's Address Authors' Addresses
Jonathan Rosenberg Jonathan Rosenberg
Cisco Cisco
Edison, NJ Edison, NJ
US US
Email: jdrosen@cisco.com Email: jdrosen@cisco.com
URI: http://www.jdrosen.net URI: http://www.jdrosen.net
Jari Urpalainen
Nokia
Itamerenkatu 11-13
Helsinki 00180
Finland
Phone: +358 7180 37686
Email: jari.urpalainen@nokia.com
Full Copyright Statement Full Copyright Statement
Copyright (C) The IETF Trust (2007). Copyright (C) The IETF Trust (2007).
This document is subject to the rights, licenses and restrictions This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors contained in BCP 78, and except as set forth therein, the authors
retain all their rights. retain all their rights.
This document and the information contained herein are provided on an This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
 End of changes. 51 change blocks. 
183 lines changed or deleted 341 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/