< draft-ietf-simple-xcap-diff-07.txt   draft-ietf-simple-xcap-diff-08.txt >
SIMPLE J. Rosenberg SIMPLE J. Rosenberg
Internet-Draft Cisco Internet-Draft Cisco
Intended status: Standards Track J. Urpalainen Intended status: Standards Track J. Urpalainen
Expires: May 19, 2008 Nokia Expires: August 28, 2008 Nokia
November 16, 2007 February 25, 2008
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-07 draft-ietf-simple-xcap-diff-08
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 36 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 May 19, 2008. This Internet-Draft will expire on August 28, 2008.
Copyright Notice Copyright Notice
Copyright (C) The IETF Trust (2007). Copyright (C) The IETF Trust (2008).
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. This that was made in the document, using an XML patch format. This
format allows also indications of element and attribute content of an format allows also indications of element and attribute content of an
skipping to change at page 6, line 11 skipping to change at page 6, line 11
that can be applied to transform the document. See that can be applied to transform the document. See
[I-D.ietf-simple-xml-patch-ops] for instructions on how this [I-D.ietf-simple-xml-patch-ops] for instructions on how this
transformation is effected. The <document> element can also contain transformation is effected. The <document> element can also contain
elements from other namespaces for the purposes of extensibility. elements from other namespaces for the purposes of extensibility.
The <add>, <replace> and <remove> elements allow extension attributes The <add>, <replace> and <remove> elements allow extension attributes
from any namespace. Any unknown elements <document> element or from any namespace. Any unknown elements <document> element or
attributes of patch operation elements MUST be ignored. attributes of patch operation elements MUST be ignored.
Figure 1 shows <document> element content and how corresponding Figure 1 shows <document> element content and how corresponding
resource or metadata changes. An external document retrieval means resource or metadata changes. An external document retrieval means
in practice an HTTP GET requests for a relevant resource. in practice HTTP GET requests for target resources.
+-----------+----------+-----------+----------+-------------------+ +-----------+----------+-----------+----------+-------------------+
| previous- | new- | <add> | <body- | XCAP resource/ | | previous- | new- | <add> | <body- | XCAP resource/ |
| etag | etag | <replace> | not- | metadata change | | etag | etag | <replace> | not- | metadata change |
| | | <remove> | changed> | | | | | <remove> | changed> | |
+-----------+----------+-----------+----------+-------------------+ +-----------+----------+-----------+----------+-------------------+
| xxx | yyy | * | - | resource patched, | | xxx | yyy | * | - | resource patched, |
| | | | | patch included | | | | | | patch included |
+-----------+----------+-----------+----------+-------------------+ +-----------+----------+-----------+----------+-------------------+
| xxx | yyy | - | - | resource patched, | | xxx | yyy | - | - | resource patched, |
skipping to change at page 6, line 45 skipping to change at page 6, line 45
Figure 1: <document> element content / corresponding resource changes Figure 1: <document> element content / corresponding resource changes
Each <element> element indicates the existing element content of an Each <element> element indicates the existing element content of an
XCAP document. It has one mandatory attribute, "sel", and one XCAP document. It has one mandatory attribute, "sel", and one
optional attribute, "exists". The "sel" attribute of the <element> optional attribute, "exists". The "sel" attribute of the <element>
element identifies an XML element of an XCAP document. It is a element identifies an XML element of an XCAP document. It is a
percent endoced relative URI following XCAP conventions when percent endoced relative URI following XCAP conventions when
selecting elements. The XCAP Node Selector MUST always locate a selecting elements. The XCAP Node Selector MUST always locate a
unique node, the "exists" attribute thus shows whether an element unique node, the "exists" attribute thus shows whether an element
exists or not in the XCAP document. When the "exists" attribute is exists or not in the XCAP document. When the "exists" attribute is
absent from the <element> element, the indicated element still exists absent from the <element> element, it means that the indicated
in the XCAP document. The located result element exists as a child element still exists in the XCAP document. The located result
element of the <element> element. It should be noted, that only the element exists as a child element of the <element> element. It
full content of an element is shown if it exists, there are no should be noted, that only the full content of an element is shown if
conventions for patching these elements. In a corner case where the it exists, there are no conventions for patching these elements. In
content of this element cannot be presented for some reason, although a corner case where the content of this element cannot be presented
it exists in the XCAP document, the <element> element MUST NOT have for some reason, although it exists in the XCAP document, the
any child nodes. <element> element MUST NOT have any child nodes.
As the result XML element is typically namespace qualified, all As the result XML element is typically namespace qualified, all
needed namespace declarations MUST exist within the <xml-diff> needed namespace declarations MUST exist within the <xml-diff>
document. The possible local namespace declarations within the document. The possible local namespace declarations within the
result element exist unmodified as in the source document, similar to result element exist unmodified as in the source document, similar to
XCAP conventions. Other namespace references MUST be resolved from XCAP conventions. Other namespace references MUST be resolved from
the context of the <element> or its parent elements. The prefixes of the context of the <element> or its parent elements. The prefixes of
qualified names (QName) [W3C.REC-xml-names-20060816] of XML nodes qualified names (QName) [W3C.REC-xml-names-20060816] of XML nodes
also remain as they exist originally in the source XCAP document. also remain as they exist originally in the source XCAP document.
Each <attribute> element indicates the existing attribute content of Each <attribute> element indicates the existing attribute content of
an XCAP document. It has one mandatory attribute, "sel", and one an XCAP document. It has one mandatory attribute, "sel", and one
optional attribute, "exists". The "sel" attribute of the <attribute> optional attribute, "exists". The "sel" attribute of the <attribute>
element identifies an XML attribute of an XCAP document. It is a element identifies an XML attribute of an XCAP document. It is a
percent endoced relative URI following XCAP conventions when percent endoced relative URI following XCAP conventions when
selecting attributes. The "exists" attribute indicates whether an selecting attributes. The "exists" attribute indicates whether an
attribute exists or not in the XCAP document. When the "exists" attribute exists or not in the XCAP document. When the "exists"
attribute is absent from the <attribute> element, the indicated attribute is absent from the <attribute> element, it means that the
attribute still exists in the XCAP document. The child text node of indicated attribute still exists in the XCAP document. The child
the <attribute> element indicates the value of the located attribute. text node of the <attribute> element indicates the value of the
Note that if the attribute is namespace qualified, the query located attribute. Note that if the attribute is namespace
parameter of the XCAP URI indicates the attached namespace URI and qualified, the query parameter of the XCAP URI indicates the attached
the prefix in the XCAP source document. namespace URI and the prefix in the XCAP source document.
4. XML Schema 4. XML Schema
The XML Schema for the XCAP diff format. The XML Schema for the XCAP diff format.
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="urn:ietf:params:xml:ns:xcap-diff" xmlns="urn:ietf:params:xml:ns:xcap-diff"
targetNamespace="urn:ietf:params:xml:ns:xcap-diff" targetNamespace="urn:ietf:params:xml:ns:xcap-diff"
elementFormDefault="qualified" elementFormDefault="qualified"
attributeFormDefault="unqualified"> attributeFormDefault="unqualified">
<!-- include patch-ops --> <!-- include patch-ops -->
<xs:include <xs:include
schemaLocation="urn:ietf:params:xml:schema:patch-ops"/> schemaLocation="urn:ietf:params:xml:schema:patch-ops"/>
<!-- document root --> <!-- document root -->
<xs:element name="xcap-diff"> <xs:element name="xcap-diff">
<xs:complexType> <xs:complexType>
<xs:sequence minOccurs="0"> <xs:sequence minOccurs="0">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:choice>
<xs:element name="document" type="documentType"/>
<xs:element name="element" type="elementType"/>
<xs:element name="attribute" type="attributeType"/>
</xs:choice>
</xs:sequence>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="xcap-root" type="xs:anyURI" use="required"/>
<xs:anyAttribute processContents="lax"/>
</xs:complexType>
</xs:element>
<!-- xcap document type -->
<xs:complexType name="documentType">
<xs:choice minOccurs="0">
<xs:element name="body-not-changed" type="emptyType"/>
<xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:choice> <xs:choice>
<xs:element name="document" type="documentType"/> <xs:element name="add">
<xs:element name="element" type="elementType"/> <xs:complexType mixed="true">
<xs:element name="attribute" type="attributeType"/> <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 mixed="true">
<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:choice>
</xs:sequence> </xs:sequence>
<xs:any namespace="##other" processContents="lax" </xs:choice>
minOccurs="0" maxOccurs="unbounded"/> <xs:attribute name="sel" type="xs:anyURI" use="required"/>
</xs:sequence> <xs:attribute name="new-etag" type="xs:string"/>
<xs:attribute name="xcap-root" type="xs:anyURI" use="required"/> <xs:attribute name="previous-etag" type="xs:string"/>
<xs:anyAttribute processContents="lax"/> <xs:anyAttribute processContents="lax"/>
</xs:complexType> </xs:complexType>
</xs:element>
<!-- xcap document type -->
<xs:complexType name="documentType">
<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 processContents="lax"/>
</xs:complexType>
<!-- xcap element type --> <!-- xcap element type -->
<xs:complexType name="elementType"> <xs:complexType name="elementType">
<xs:complexContent> <xs:complexContent mixed="true">
<xs:restriction base="xs:anyType"> <xs:restriction base="xs:anyType">
<xs:sequence> <xs:sequence>
<xs:any processContents="lax" namespace="##any" <xs:any processContents="lax" namespace="##any"
minOccurs="0" maxOccurs="1"/> minOccurs="0" maxOccurs="1"/>
</xs:sequence> </xs:sequence>
<xs:attribute name="sel" type="xs:string" <xs:attribute name="sel" type="xs:string"
use="required"/> use="required"/>
<xs:attribute name="exists" type="xs:boolean"/> <xs:attribute name="exists" type="xs:boolean"/>
</xs:restriction> </xs:restriction>
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>
<!-- xcap attribute type --> <!-- xcap attribute type -->
<xs:complexType name="attributeType"> <xs:complexType name="attributeType">
<xs:simpleContent> <xs:simpleContent>
<xs:extension base="xs:string"> <xs:extension base="xs:string">
<xs:attribute name="sel" type="xs:string" <xs:attribute name="sel" type="xs:string"
use="required"/> use="required"/>
<xs:attribute name="exists" type="xs:boolean"/> <xs:attribute name="exists" type="xs:boolean"/>
</xs:extension> </xs:extension>
</xs:simpleContent> </xs:simpleContent>
</xs:complexType> </xs:complexType>
<!-- empty type --> <!-- empty type -->
<xs:complexType name="emptyType"/> <xs:complexType name="emptyType"/>
</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"?>
<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" <document new-etag="7ahggs"
skipping to change at page 14, line 14 skipping to change at page 14, line 14
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC4825] Rosenberg, J., "The Extensible Markup Language (XML) [RFC4825] Rosenberg, J., "The Extensible Markup Language (XML)
Configuration Access Protocol (XCAP)", RFC 4825, May 2007. Configuration Access Protocol (XCAP)", RFC 4825, May 2007.
[I-D.ietf-simple-xml-patch-ops] [I-D.ietf-simple-xml-patch-ops]
Urpalainen, J., "An Extensible Markup Language (XML) Patch 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-03 (work in Selectors", draft-ietf-simple-xml-patch-ops-04 (work in
progress), August 2007. progress), November 2007.
9.2. Informative References 9.2. Informative References
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
A., Peterson, J., Sparks, R., Handley, M., and E. A., Peterson, J., Sparks, R., Handley, M., and E.
Schooler, "SIP: Session Initiation Protocol", RFC 3261, Schooler, "SIP: Session Initiation Protocol", RFC 3261,
June 2002. June 2002.
[RFC3265] Roach, A., "Session Initiation Protocol (SIP)-Specific [RFC3265] Roach, A., "Session Initiation Protocol (SIP)-Specific
Event Notification", RFC 3265, June 2002. Event Notification", RFC 3265, June 2002.
skipping to change at page 16, line 7 skipping to change at page 16, line 7
Nokia Nokia
Itamerenkatu 11-13 Itamerenkatu 11-13
Helsinki 00180 Helsinki 00180
Finland Finland
Phone: +358 7180 37686 Phone: +358 7180 37686
Email: jari.urpalainen@nokia.com Email: jari.urpalainen@nokia.com
Full Copyright Statement Full Copyright Statement
Copyright (C) The IETF Trust (2007). Copyright (C) The IETF Trust (2008).
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
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
 End of changes. 19 change blocks. 
115 lines changed or deleted 115 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/