| < 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/ | ||||