Network Working Group H. Khartabil Request for Comments: 4661 Telio Category: Standards Track E. Leppanen M. Lonnfors J. Costa-Requena Nokia September 2006
Network Working Group H. Khartabil Request for Comments: 4661 Telio Category: Standards Track E. Leppanen M. Lonnfors J. Costa-Requena Nokia September 2006
An Extensible Markup Language (XML)-Based Format for Event Notification Filtering
基于可扩展标记语言(XML)的事件通知过滤格式
Status of This Memo
关于下段备忘
This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.
本文件规定了互联网社区的互联网标准跟踪协议,并要求进行讨论和提出改进建议。有关本协议的标准化状态和状态,请参考当前版本的“互联网官方协议标准”(STD 1)。本备忘录的分发不受限制。
Copyright Notice
版权公告
Copyright (C) The Internet Society (2006).
版权所有(C)互联网协会(2006年)。
Abstract
摘要
The SIP event notification framework describes the usage of the Session Initiation Protocol (SIP) for subscriptions and notifications of changes to a state of a resource. The document does not describe a mechanism whereby filtering of event notification information can be achieved. Filtering is a mechanism for defining the preferred notification information to be delivered and for specifying triggers that cause that information to be delivered. In order to enable this, a format is needed to enable the subscriber to describe the state changes of a resource that cause notifications to be sent to it and what those notifications are to contain. This document presents a format in the form of an XML document.
SIP事件通知框架描述会话启动协议(SIP)用于订阅和通知资源状态的更改。本文件未描述可实现事件通知信息过滤的机制。过滤是一种机制,用于定义要传递的首选通知信息,并指定导致传递该信息的触发器。为了实现这一点,需要一种格式,使订阅者能够描述导致向其发送通知的资源的状态更改,以及这些通知将包含哪些内容。本文档以XML文档的形式呈现一种格式。
Table of Contents
目录
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 3 3. Structure of XML-Encoded Simple-Filter . . . . . . . . . . . . 4 3.1. MIME Type for Simple-Filter Document . . . . . . . . . . 4 3.2. The <filter-set> Root Element . . . . . . . . . . . . . 4 3.3. The <ns-bindings> Element . . . . . . . . . . . . . . . 4 3.4. The <filter> Element . . . . . . . . . . . . . . . . . . 5 3.5. The <what> Element . . . . . . . . . . . . . . . . . . . 6 3.5.1. The <include> Element . . . . . . . . . . . . . 6 3.5.2. The <exclude> Element . . . . . . . . . . . . . 7 3.5.3. The 'type' Attribute . . . . . . . . . . . . . . 7 3.6. The <trigger> Element . . . . . . . . . . . . . . . . . 8 3.6.1. The <changed> Element . . . . . . . . . . . . . 8 3.6.2. The <added> Element . . . . . . . . . . . . . . 9 3.6.3. The <removed> Element . . . . . . . . . . . . . 10 4. XML Schema Extensibility . . . . . . . . . . . . . . . . . . . 10 5. Syntax for Referencing XML Items and Making Logical Expressions . . . . . . . . . . . . . . . . . . . . . . . . . 10 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 6.1. Filter Criteria Using <what> Element . . . . . . . . . . 12 6.2. Filter Criteria Using <trigger> Element . . . . . . . . 13 6.3. Filter Criteria Using <what> and <trigger> Elements . . 13 6.4. Content Filter Using Namespaces . . . . . . . . . . . . 14 6.5. Content Filter Using Only <include> Elements . . . . . . 14 6.6. Two Content Filters as Filter Criteria . . . . . . . . . 15 7. XML Schema for Filter Criteria . . . . . . . . . . . . . . . . 16 8. Security Considerations . . . . . . . . . . . . . . . . . . . 18 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 9.1. application/simple-filter+xml MIME TYPE . . . . . . . . 19 9.2. URN Sub-Namespace Registration for urn:ietf:params:xml:ns:simple-filter . . . . . . . . . . . 20 9.3. Schema Registration . . . . . . . . . . . . . . . . . . 20 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 20 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 20 11.1. Normative References . . . . . . . . . . . . . . . . . . 20 11.2. Informative References . . . . . . . . . . . . . . . . . 21
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 3 3. Structure of XML-Encoded Simple-Filter . . . . . . . . . . . . 4 3.1. MIME Type for Simple-Filter Document . . . . . . . . . . 4 3.2. The <filter-set> Root Element . . . . . . . . . . . . . 4 3.3. The <ns-bindings> Element . . . . . . . . . . . . . . . 4 3.4. The <filter> Element . . . . . . . . . . . . . . . . . . 5 3.5. The <what> Element . . . . . . . . . . . . . . . . . . . 6 3.5.1. The <include> Element . . . . . . . . . . . . . 6 3.5.2. The <exclude> Element . . . . . . . . . . . . . 7 3.5.3. The 'type' Attribute . . . . . . . . . . . . . . 7 3.6. The <trigger> Element . . . . . . . . . . . . . . . . . 8 3.6.1. The <changed> Element . . . . . . . . . . . . . 8 3.6.2. The <added> Element . . . . . . . . . . . . . . 9 3.6.3. The <removed> Element . . . . . . . . . . . . . 10 4. XML Schema Extensibility . . . . . . . . . . . . . . . . . . . 10 5. Syntax for Referencing XML Items and Making Logical Expressions . . . . . . . . . . . . . . . . . . . . . . . . . 10 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 6.1. Filter Criteria Using <what> Element . . . . . . . . . . 12 6.2. Filter Criteria Using <trigger> Element . . . . . . . . 13 6.3. Filter Criteria Using <what> and <trigger> Elements . . 13 6.4. Content Filter Using Namespaces . . . . . . . . . . . . 14 6.5. Content Filter Using Only <include> Elements . . . . . . 14 6.6. Two Content Filters as Filter Criteria . . . . . . . . . 15 7. XML Schema for Filter Criteria . . . . . . . . . . . . . . . . 16 8. Security Considerations . . . . . . . . . . . . . . . . . . . 18 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 9.1. application/simple-filter+xml MIME TYPE . . . . . . . . 19 9.2. URN Sub-Namespace Registration for urn:ietf:params:xml:ns:simple-filter . . . . . . . . . . . 20 9.3. Schema Registration . . . . . . . . . . . . . . . . . . 20 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 20 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 20 11.1. Normative References . . . . . . . . . . . . . . . . . . 20 11.2. Informative References . . . . . . . . . . . . . . . . . 21
The SIP event notification framework [2] describes the usage of the Session Initiation Protocol (SIP) for subscriptions and notifications of changes to a state of a resource. The document does not describe a mechanism whereby filtering of event notification information can be achieved.
SIP事件通知框架[2]描述了会话启动协议(SIP)用于订阅和通知资源状态的更改。本文件未描述可实现事件通知信息过滤的机制。
Filtering is a mechanism for defining the preferred notification information, referred to as content, to be delivered and for specifying the rules for when that information should be delivered.
过滤是一种机制,用于定义要传递的首选通知信息(称为内容),并指定何时应传递该信息的规则。
The filtering mechanism is expected to be particularly valuable and primarily applicable to users of mobile wireless access devices. The characteristics of the devices typically include high latency, low bandwidth, low data processing capabilities, small display, and limited battery power. Such devices can benefit from the ability to filter the amount of information generated at the source of the event notification. However, implementers need to be aware of the computational burden on the source of the event notification. This is discussed further in Section 8.
预计该过滤机制特别有价值,并且主要适用于移动无线接入设备的用户。设备的特征通常包括高延迟、低带宽、低数据处理能力、小显示和有限的电池电量。此类设备可以从过滤事件通知源生成的信息量的能力中获益。然而,实现者需要知道事件通知源的计算负担。这将在第8节中进一步讨论。
The structure of the filter criteria is described using the XML schema. The filter criteria is presented as an XML document. The XML document contains the user's preference as to when notifications are to be sent to it and what they are to contain. The scope of the "when" part is triggering.
使用XML模式描述筛选条件的结构。筛选条件以XML文档的形式呈现。XML文档包含用户关于何时向其发送通知以及通知内容的首选项。触发“何时”部分的范围。
The triggering is defined as enabling a subscriber to specify triggering rules for notifications where the criteria are based on changes of the event package [2] specific state information, e.g., for the presence information document [15], the change in the value of the <status> element.
触发定义为允许订阅者为通知指定触发规则,其中标准基于事件包[2]特定状态信息的更改,例如,对于状态信息文档[15],元素<status>值的更改。
The functionality of the filtering regarding the SIP event notifications is specified in [3].
[3]中规定了有关SIP事件通知的过滤功能。
In this document, the key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'MAY', and 'OPTIONAL' are to be interpreted as described in RFC 2119 [1] and indicate requirement levels for compliant implementations.
在本文件中,关键词“必须”、“不得”、“要求”、“应”、“不应”、“应”、“不应”、“建议”、“可能”和“可选”将按照RFC 2119[1]中的描述进行解释,并指明符合性实施的要求级别。
Throughout the document, the "resulting XML document" refers to the final XML document that carries state information to be delivered to the subscriber after the filters have been applied to it.
在整个文档中,“生成的XML文档”指的是最终的XML文档,该文档包含在过滤器应用于订阅服务器之后要传递给订阅服务器的状态信息。
"Content" refers to the XML document that appears in a notification reflecting the state of a resource.
“内容”是指出现在通知中反映资源状态的XML文档。
A simple-filter is an XML document [8] that MUST be well formed and MUST be valid according to schemas, including extension schemas, available to the validater, and applicable to the XML document. The simple-filter documents MUST be based on XML 1.0 and MUST be encoded using UTF-8.
一个简单的过滤器是一个XML文档[8],它必须格式良好,并且必须根据模式(包括扩展模式)有效,可供验证程序使用,并且适用于XML文档。简单筛选文档必须基于XML 1.0,并且必须使用UTF-8编码。
The namespace identifier for elements defined by this specification is a URN [5], which uses the namespace identifier 'ietf' defined by [6] and extended by [4]. This urn is: urn:ietf:params:xml:ns:simple-filter.
本规范定义的元素的名称空间标识符是URN[5],它使用由[6]定义并由[4]扩展的名称空间标识符“ietf”。这个urn是:urn:ietf:params:xml:ns:simple过滤器。
This namespace declaration indicates the namespace on which the filter criteria are based.
此命名空间声明指示筛选条件所基于的命名空间。
The MIME type for the simple-filter document is "application/ simple-filter+xml". Any transport protocol (SIP [12], for example) used to carry the filters that also carries payload type information MUST identify the payload as MIME type "application/simple-filter+xml" (for example, a Content-Type header field).
简单过滤器文档的MIME类型为“应用程序/简单过滤器+xml”。用于承载过滤器的任何传输协议(例如,SIP[12])也承载负载类型信息,必须将负载标识为MIME类型“application/simple filter+xml”(例如,内容类型头字段)。
The root element of the filter criteria is <filter-set>.
筛选条件的根元素是<filter set>。
The <filter-set> element contains the namespace definition mentioned above. With the optional 'package' attribute, it is possible to define the package to which the filter criteria is applied. This might be especially useful in cases where the XML document containing the filter criteria is separated from the events that make use of it or from the protocol that usually carries it.
<filter set>元素包含上述名称空间定义。使用可选的“package”属性,可以定义应用筛选条件的包。在包含筛选条件的XML文档与使用它的事件或通常携带它的协议分离的情况下,这可能特别有用。
The <filter-set> element may contain one <ns-bindings> element.
<filter set>元素可以包含一个<ns bindings>元素。
The <filter-set> element contains one or more <filter> elements.
<filter set>元素包含一个或多个<filter>元素。
The <ns-bindings> element is used to bind namespaces to local prefixes used in expressions that select elements or attributes using
元素用于将名称空间绑定到表达式中使用的本地前缀,这些表达式使用
the syntax in Section 5. Those prefixes apply to the <include>, <exclude>, <changed>, <added>, and <removed> elements.
第5节中的语法。这些前缀适用于<include>、<exclude>、<changed>、<added>和<removed>元素。
The <ns-bindings> element contains one or more <ns-binding> elements. Each <ns-binding> element has a 'prefix' attribute. The value of the 'prefix' attribute is a prefix used to qualify the elements pointed to by the expression. The <ns-binding> element also has a 'urn' attribute that identifies the namespace that the prefix represents.
<ns bindings>元素包含一个或多个<ns binding>元素。每个<ns binding>元素都有一个“prefix”属性。“prefix”属性的值是一个前缀,用于限定表达式指向的元素。<ns binding>元素还有一个“urn”属性,用于标识前缀表示的名称空间。
The <filter> element is used to specify the content of an individual filter.
<filter>元素用于指定单个筛选器的内容。
The <filter> element has an 'id' attribute. The value of the 'id' attribute MUST be unique within the <filter-set> element. The <filter> MAY have a 'uri' attribute. The value of the 'uri' attribute is the URI of the resource to which the filter applies. The <filter> MAY have a 'domain' attribute. The value of the 'domain' attribute is the domain of the resources to which the filter applies. The 'uri' attribute and the 'domain' attribute MUST NOT appear together in the <filter>.
<filter>元素具有“id”属性。“id”属性的值在<filter set>元素中必须是唯一的。<filter>可能具有“uri”属性。“uri”属性的值是应用筛选器的资源的uri。<filter>可能具有“域”属性。“域”属性的值是应用筛选器的资源的域。“uri”属性和“domain”属性不能同时出现在<filter>中。
The URI of the resource is useful in cases where the 'event list' extension [17] is used with a package. Since a subscription to an event package may be addressed to an event list, the 'uri' attribute allows the subscriber to define a filter specific to an individual resource within that list. That resource may be another list. The 'uri' attribute may, of course, carry the URI of the list itself. If the <filter> does not contain the 'uri' attribute, the filter applies to the resource identified in the subscription request.
资源的URI在“事件列表”扩展[17]与包一起使用的情况下非常有用。由于对事件包的订阅可以寻址到事件列表,“uri”属性允许订阅者定义特定于该列表中单个资源的筛选器。该资源可能是另一个列表。当然,“uri”属性可能携带列表本身的uri。如果<filter>不包含“uri”属性,则筛选器将应用于订阅请求中标识的资源。
The 'domain' attribute carries a domain. In this case, the filter applies to resources whose URI has a domain part matching that domain. This can be used when a subscription is for a resource that is an event list with many resources from differing domains.
“域”属性包含一个域。在这种情况下,筛选器应用于URI具有与该域匹配的域部分的资源。当订阅针对的资源是一个包含来自不同域的许多资源的事件列表时,可以使用此选项。
URI matching is done according to the matching rules defined for a particular scheme. When matching domains, the user part of the URI is ignored for matching purposes.
URI匹配是根据为特定方案定义的匹配规则进行的。匹配域时,出于匹配目的,将忽略URI的用户部分。
The <filter> MAY have a 'remove' attribute that together with the 'id' attribute indicates the existing filter to be removed. The value of the 'remove' attribute is of the type "Boolean". The default value is "false".
<filter>可能有一个'remove'属性,该属性与'id'属性一起指示要删除的现有筛选器。“remove”属性的值属于“Boolean”类型。默认值为“false”。
The <filter> MAY have an 'enabled' attribute that indicates whether a filter is enabled or disabled. The value of the 'enabled' attribute is of the type "Boolean". The default value is "true".
<filter>可能有一个“enabled”属性,指示是否启用或禁用筛选器。“enabled”属性的值属于“Boolean”类型。默认值为“true”。
The <filter> element MAY contain a <what> element and MAY contain one or more <trigger> elements, but it MUST contain either the <what> element or the <trigger> element when the filter is being enabled for the first time. When a filter is disabled by setting the 'enabled' attribute to "false", the <what> and <trigger> elements MAY be omitted. Similarly, when a filter is re-enabled by setting the 'enabled' attribute to "true", the <what> and <trigger> elements MAY be omitted.
<filter>元素可以包含<what>元素,也可以包含一个或多个<trigger>元素,但它必须包含<what>元素或首次启用过滤器时的<trigger>元素。当通过将“enabled”属性设置为“false”禁用过滤器时,<what>和<trigger>元素可能会被忽略。类似地,当通过将“enabled”属性设置为“true”来重新启用过滤器时,<what>和<trigger>元素可能会被忽略。
Filter contents can be changed by changing the contents in the <what> and <trigger> elements and maintaining the value of the filter 'id' attribute.
可以通过更改<what>和<trigger>元素中的内容并保持过滤器“id”属性的值来更改过滤器内容。
The <what> element is used to specify the content to be delivered to the user. It does not specify the exact content but the rules that are used to construct that information.
元素用于指定要交付给用户的内容。它没有指定确切的内容,而是指定用于构造该信息的规则。
The <what> element may contain one or more <include> elements and one or more <exclude> elements. When more than one <include> element has been defined, the results are additive. That is, each <include> element adds an element or attribute to the resulting XML document. When more than one <exclude> element has been defined, each <exclude> element value depletes the contents of the resulting XML document.
<what>元素可能包含一个或多个<include>元素和一个或多个<exclude>元素。当定义了多个<include>元素时,结果是相加的。也就是说,每个<include>元素向生成的XML文档添加一个元素或属性。当定义了多个<exclude>元素时,每个<exclude>元素值都会耗尽生成的XML文档的内容。
The <include> element is used to select the content to be delivered. Its value can identify an XML element, an attribute, or a namespace of an XML document to be filtered. This is indicated using the 'type' attribute.
<include>元素用于选择要交付的内容。它的值可以标识要过滤的XML文档的XML元素、属性或命名空间。这是使用“type”属性表示的。
Note that the resulting XML document MUST be valid. Therefore, in addition to including the elements identified with the <include> element value, all other mandatory XML elements and/or attributes must be incorporated in the resulting XML document in order to make it valid. This, in practice, means that a subscriber defining a filter only needs to <include> optional elements and/or attributes, but may <include> mandatory elements and/or attributes as well. There are also cases where a filter selects an attribute that belongs to an optional element. In this case, the optional element needs to appear in the resulting XML document.
请注意,生成的XML文档必须有效。因此,除了包含用<include>元素值标识的元素外,还必须将所有其他必需的XML元素和/或属性合并到生成的XML文档中,以使其有效。实际上,这意味着定义过滤器的订阅者只需要<include>可选元素和/或属性,但也可以<include>必需元素和/或属性。在某些情况下,过滤器会选择属于可选元素的属性。在这种情况下,可选元素需要出现在生成的XML文档中。
The syntax defined in Section 5 (see the definition of "selection") MUST be used. The following example selects the <basic> element defined in the PIDF [13]. This results in the selection of the <basic> element as well as all the ancestors, i.e., <status> and <tuple>.
必须使用第5节中定义的语法(参见“选择”的定义)。以下示例选择在PIDF[13]中定义的<basic>元素。这将导致选择<basic>元素以及所有祖先,即<status>和<tuple>。
<include type="xpath">/presence/tuple/status/basic</include>.
<include type=“xpath”>/presence/tuple/status/basic</include>。
The <exclude> element is used to define exceptions to the set of XML elements and/or attributes selected by the <include> elements. Thus, XML elements (including their lower-level "child" elements) and/or attributes defined by the <exclude> element are not delivered. This is most useful when an <include> element identifies a namespace.
<exclude>元素用于定义由<include>元素选择的XML元素和/或属性集的异常。因此,XML元素(包括其较低级别的“子”元素)和/或<exclude>元素定义的属性不会被传递。当<include>元素标识名称空间时,这非常有用。
The <exclude> element has the optional 'type' attribute (see the definition of the 'type' in Section 3.5.3).
<exclude>元素具有可选的“type”属性(参见第3.5.3节中“type”的定义)。
Note that the resulting XML document MUST be valid. Therefore, if the step in applying the <exclude> element value to an XML document results in an invalid document according to the schema, that step MUST be reversed, resulting in the elements and/or attributes being re-introduced into the resulting XML document with their previous values in order to make it valid. This, in practice, means that a subscriber defining a filter only needs to <exclude> optional elements and/or attributes, but SHOULD NOT <exclude> mandatory elements and/or attributes.
请注意,生成的XML文档必须有效。因此,如果根据模式将<exclude>元素值应用于XML文档的步骤导致无效文档,则必须反转该步骤,从而将元素和/或属性与其以前的值重新引入到结果XML文档中,以使其有效。实际上,这意味着定义筛选器的订阅者只需要<exclude>可选元素和/或属性,而不应该<exclude>必需元素和/或属性。
The syntax MUST follow Section 5.
语法必须遵循第5节。
The 'type' attribute is used to describe the value of the <include> and <exclude> elements. The following values are pre-defined: "xpath" and "namespace". The 'type' attribute is optional, and, if omitted, the default value is "xpath".
“type”属性用于描述<include>和<exclude>元素的值。以下值是预定义的:“xpath”和“namespace”。“type”属性是可选的,如果省略,默认值是“xpath”。
The "xpath" value is used when the <include> or <exclude> element contains a value following the syntax in Section 5 that selects an element or an attribute.
当<include>或<exclude>元素包含符合第5节中选择元素或属性的语法的值时,使用“xpath”值。
The "namespace" value is used when the <include> or <exclude> element contains a value of a namespace. The value is the URI of the namespace. The resulting XML document is comprised of the elements defined within the namespace.
当<include>或<exclude>元素包含名称空间的值时,使用“namespace”值。该值是命名空间的URI。生成的XML文档由命名空间中定义的元素组成。
The <trigger> element is used to identify the package-specific changes that a resource has to encounter before the content is delivered to the subscriber. It can appear more than once in a <filter> element. Multiple appearances of this element denote the "OR" operation. This means that updates to a resource that satisfy any of the <trigger> elements criteria constitute the content to be delivered.
<trigger>元素用于标识资源在将内容交付给订阅服务器之前必须遇到的包特定更改。它可以在<filter>元素中出现多次。此元素的多次出现表示“或”操作。这意味着满足任何<trigger>元素标准的资源更新构成要交付的内容。
The <trigger> element MAY contain the <changed>, <added>, or <removed> elements, but it MUST contain at least one of the three elements. Any combination of the 3 elements is possible. Multiple appearances of those elements within a <trigger> element denotes the "AND" operation. This means that updates to a resource that satisfy ALL of the <changed>, <added>, and <removed> elements' criteria within the <trigger> element constitute the content to be delivered.
<trigger>元素可以包含<changed>、<added>或<removed>元素,但必须至少包含三个元素中的一个。这三种元素的任何组合都是可能的。这些元素在<trigger>元素中的多次出现表示“AND”操作。这意味着对满足<trigger>元素中所有<changed>、<added>和<removed>元素标准的资源的更新构成了要交付的内容。
The <changed> element is used to identify the XML element or attribute, from the package-specific XML document, whose value MUST change from that of the "previous XML document", in order to activate the trigger and cause the content to be delivered. Previous XML document" in this context refers to the raw version of the most recent XML document that was sent to the subscriber, before the filters were applied to it. The XML element or attribute MUST be expressed using the syntax defined in Section 5 for the "reference" ABNF.
<changed>元素用于从特定于包的XML文档中标识XML元素或属性,其值必须与“以前的XML文档”的值不同,以便激活触发器并交付内容。在此上下文中,“Previous XML document”是指在对订阅服务器应用筛选器之前发送给订阅服务器的最新XML文档的原始版本。XML元素或属性必须使用第5节中为“reference”ABNF定义的语法表示。
The <changed> element MAY contain the 'from' attribute, the 'to' attribute, the 'by' attribute, or any combination of the three. The absence of all of those attributes means a change of any sort to the value of the element or attribute activates the trigger. An update to the element or attribute value with an identical value is not a change.
<changed>元素可以包含“from”属性、“to”属性、“by”属性或三者的任意组合。缺少所有这些属性意味着对元素或属性的值进行任何形式的更改都会激活触发器。使用相同的值更新元素或属性值不是更改。
Comparison of a change is done according to the element or attribute's lexical rules.
根据元素或属性的词汇规则对更改进行比较。
A trigger is active when the XML element or attribute identified with the <changed> element has changed from the value indicated by this attribute to a different value.
当用<changed>元素标识的XML元素或属性从该属性指示的值更改为其他值时,触发器处于活动状态。
A trigger is active when the XML element or attribute identified with the <changed> element has changed to the value indicated by this attribute from a different value.
当用<changed>元素标识的XML元素或属性从不同的值更改为该属性指示的值时,触发器处于活动状态。
A trigger is active when the XML element or attribute identified with the <changed> element has changed by at least the amount indicated by this attribute from a different value. That is, the 'by' attribute applies only to numerical values and indicates a delta with respect to the current value that an attribute or element (identified in the <changed> element) needs to change before it is selected. For example, if the 'by' attribute is set to 2 and the current value of the element/attribute is 6, the element/attribute is selected when it reaches (or exceeds) the value 8 or when it decreases to 4 or a lower value.
当用<changed>元素标识的XML元素或属性已从不同的值更改至少此属性指示的量时,触发器处于活动状态。也就是说,“by”属性仅适用于数值,并指示相对于当前值的增量,属性或元素(在<changed>元素中标识)在选择之前需要更改。例如,如果“by”属性设置为2,且元素/属性的当前值为6,则当元素/属性达到(或超过)值8或降低到4或更低值时,将选择该元素/属性。
Any combination of the 'from', 'to', and 'by' attributes in the <changed> element is possible. For example, if the 'from' attribute is combined with the 'to' attribute, it is interpreted to mean that the trigger is active when the XML element or attribute identified with the <changed> element has changed from the 'from' value to the 'to' value. Note that if the 'by' attribute is used in combination with the other attributes, the other attribute types MUST match the 'by' type of decimal.
<changed>元素中的“from”、“to”和“by”属性可以任意组合。例如,如果“from”属性与“to”属性相结合,则解释为当使用<changed>元素标识的XML元素或属性从“from”值更改为“to”值时,触发器处于活动状态。请注意,如果“by”属性与其他属性结合使用,则其他属性类型必须与十进制的“by”类型匹配。
The <added> element triggers content delivery when the XML element it identifies has been added to the document being filtered (that is, this instance of that element appears in the current document, but not in the previous document). It can be used, for example, to learn of new services and/or capabilities subscribed to by the user, or services and/or capabilities that the user has now allowed the subscriber to see. The XML element or attribute MUST be expressed using the syntax defined in Section 5 for the "reference" ABNF.
<added>元素在其标识的XML元素已添加到要筛选的文档时触发内容传递(即,该元素的此实例出现在当前文档中,但不出现在上一个文档中)。例如,它可用于了解用户订阅的新服务和/或功能,或用户现在允许订阅者查看的服务和/或功能。XML元素或属性必须使用第5节中为“reference”ABNF定义的语法表示。
Note that if a filter includes both the content filter (<what>) part and the <added> element, then the definitions of the <what> part SHOULD also cover the added elements. Otherwise, the content is delivered without the items defined in the <added> element.
请注意,如果筛选器同时包括内容筛选器(<what>)部分和<added>元素,则<what>部分的定义也应包括添加的元素。否则,交付内容时不包含<added>元素中定义的项目。
The <removed> element triggers content delivery when the XML element it identifies has been removed from the document being filtered (that is, this instance of that element appeared in the previous document, but not in this document). The XML element or attribute MUST be expressed using the syntax defined in Section 5 for the "reference" ABNF.
<removed>元素在其标识的XML元素已从正在筛选的文档中删除时触发内容传递(即,该元素的此实例出现在上一个文档中,但不出现在本文档中)。XML元素或属性必须使用第5节中为“reference”ABNF定义的语法表示。
The simple-filter document is meant to be extended. An extension takes place by defining a new set of elements in a new namespace, governed by a new schema. Every extension MUST have an appropriate XML namespace assigned to it. The XML namespace of the extension MUST be different from the namespaces defined in this specification. The extension MUST NOT change the syntax or semantics of the schemas defined in this document. All XML tags and attributes that are part of the extension MUST be appropriately qualified so as to place them within that namespace and MUST be designed such that receivers can safely ignore such extensions.
简单的筛选文档是要扩展的。扩展是通过在一个新的名称空间中定义一组新的元素来实现的,由一个新的模式来管理。每个扩展必须有一个适当的XML名称空间分配给它。扩展的XML命名空间必须与本规范中定义的命名空间不同。扩展不得更改本文档中定义的模式的语法或语义。作为扩展的一部分的所有XML标记和属性都必须经过适当的限定,以便将它们放置在该名称空间中,并且必须设计为接收者可以安全地忽略此类扩展。
This specification defines explicit places where new elements or attributes from an extension can be placed. These are explicitly indicated in the schemas by the <any> and <anyAttribute> elements. Extensions to this specification MUST specify where their elements can be placed within the document.
此规范定义了可以放置扩展中的新元素或属性的显式位置。这些在模式中由<any>和<anyAttribute>元素显式指示。本规范的扩展必须指定其元素在文档中的位置。
As a result, a document that contains extensions will require multiple schemas in order to determine its validity - a schema defined in this document, along with those defined by extensions present in the document. Because extensions occur by adding new elements and attributes governed by new schemas, the schemas defined in this document are fixed and would only be changed by a revision to this specification. Such a revision, should it take place, would endeavor to allow documents compliant to the previous schema to remain compliant to the new one. As a result, the schemas defined here don't provide explicit schema versions, as this is not expected to be needed.
因此,包含扩展的文档将需要多个模式来确定其有效性——本文档中定义的模式以及文档中存在的扩展所定义的模式。由于扩展是通过添加由新模式管理的新元素和属性来实现的,因此本文档中定义的模式是固定的,只有通过修订本规范才能进行更改。如果进行这样的修订,将努力使符合以前模式的文档保持符合新模式。因此,此处定义的模式不提供显式模式版本,因为这是不需要的。
The ABNF [10] is used to describe the syntax for the expressions. The syntax is defined to be XPATH [9] compatible but has only a restricted set of capabilities of the XPATH. More information about the meaning of the items of the syntax can be found in [9]. The "abbreviated syntax" of the "node test" is used in the references ("reference"). The expression in the syntax relates to the
ABNF[10]用于描述表达式的语法。语法被定义为与XPATH[9]兼容,但只有XPATH的一组受限功能。有关语法项含义的更多信息,请参见[9]。“节点测试”的“缩写语法”用于参考(“参考”)。语法中的表达式与
predicate, comparison, and logical expressions of the XPATH. If an XPATH expression evaluates to more than one element at a certain step, the filter applies to all the elements that are evaluated. That is, if a filter including an element evaluates to 2 elements, both elements are included as a result.
XPATH的谓词、比较和逻辑表达式。如果XPATH表达式在某一步计算为多个元素,则过滤器将应用于所有计算的元素。也就是说,如果包含一个元素的过滤器计算结果为2个元素,则这两个元素都将被包括在内。
selection = reference [expression] expression = "[" (elem-expr / attr-expr) 1*[oper (elem-expr / attr-expr)] "]" elem-expr = (elem-path / "." / "..") compar value elem-path = (element / "*") 1*["/" / "*" / element] ["*" / element] attr-expr = [elem-path "/"] attribute compar value
selection = reference [expression] expression = "[" (elem-expr / attr-expr) 1*[oper (elem-expr / attr-expr)] "]" elem-expr = (elem-path / "." / "..") compar value elem-path = (element / "*") 1*["/" / "*" / element] ["*" / element] attr-expr = [elem-path "/"] attribute compar value
reference = elem-reference / attr-reference elem-reference = "/" 1*("/" / "/*" / ("/" element)) attr-reference = reference attribute
reference = elem-reference / attr-reference elem-reference = "/" 1*("/" / "/*" / ("/" element)) attr-reference = reference attribute
oper = "and" / "or" compar = "=" / "<" / ">" element = [ns] string attribute = "@" [ns] string ns = string ":" string = <any sequence of data supported by XML in names of XML element, and/or attribute or prefixes of namespaces> value = <any sequence of data supported by XML as a value of the XML element and/or attribute>
oper = "and" / "or" compar = "=" / "<" / ">" element = [ns] string attribute = "@" [ns] string ns = string ":" string = <any sequence of data supported by XML in names of XML element, and/or attribute or prefixes of namespaces> value = <any sequence of data supported by XML as a value of the XML element and/or attribute>
When identifying XML elements or attributes, the value may consist of two parts: the XML element/attribute selector and the condition (comparison and logical expressions). The XML element selector appears first followed by the condition part in square brackets. In the XML element selector part, the XML elements may be referenced by giving the full hierarchical path as: "/presence/tuple/status/basic", by denoting the selection to cover any hierarchical level by its name as: "//tuple/status/basic", or using the wildcard "*", denoting any value in a certain level as "/*/watcher".
标识XML元素或属性时,值可能由两部分组成:XML元素/属性选择器和条件(比较和逻辑表达式)。XML元素选择器首先出现,然后是方括号中的条件部分。在XML元素选择器部分中,可以通过以下方式引用XML元素:将完整的层次路径指定为“/presence/tuple/status/basic”,通过名称将覆盖任何层次的选择指示为“//tuple/status/basic”,或使用通配符“*”,将某个层次中的任何值指示为“//watcher”。
Example references are listed as follows:
示例参考如下所示:
o Selecting an element by using an XML element as a condition: * //*[status/basic="open"] * /presence/tuple[*/basic="open"]
o 通过使用XML元素作为条件来选择元素:*/*[status/basic=“open”]*/presence/tuple[*/basic=“open”]
o Selecting an element by using XML attributes as a condition: * //watcher[@duration-subscribed<500] * /*/watcher[@event="rejected"]
o 通过使用XML属性作为条件来选择元素://watcher[@duration subscribed<500]*/*/watcher[@event=“rejected”]
o Selecting an element by using two XML elements as a condition: * //tuple[status/basic="open" and type="device"]
o 通过使用两个XML元素作为条件来选择元素://tuple[status/basic=“open”和type=“device”]
o Selecting an attribute: * //watcher/@duration-subscribed
o 选择属性://watcher/@duration subscribed
In some cases, due to the design of the XML schema, the XPATH-like expression results in identification of more than one element with the same name (the XPATH expression may not have uniquely identified an element at every step). In those cases, all elements identified are selected.
在某些情况下,由于XML模式的设计,类似XPATH的表达式会导致标识多个同名元素(XPATH表达式可能不会在每一步都唯一标识一个元素)。在这些情况下,将选择所有标识的元素。
When evaluating XPATH location steps, namespace expansion follows XPATH 1.0 [9] semantics, i.e., if the QName does not have a prefix, then the namespace URI in the expanded name is null. With non-default namespaces, expansion is done according to the given <ns-bindings> definitions. When a default namespace is used in the document, the <ns-binding> element SHOULD be used to define an equal URI with some prefix in order to have a valid XPATH evaluation in location steps.
在评估XPATH位置步骤时,名称空间扩展遵循XPATH 1.0[9]语义,即,如果QName没有前缀,则扩展名称中的名称空间URI为null。对于非默认名称空间,根据给定的<ns bindings>定义进行扩展。当文档中使用默认名称空间时,应该使用<ns binding>元素定义带有前缀的相等URI,以便在定位步骤中进行有效的XPATH计算。
The XML Schema for the XML document examples is specified in Section 7.
XML文档示例的XML模式在第7节中指定。
A user wishes to get to know his friend's availability and willingness for messaging (SMS, IM, and MMS) in order to know whether the friend is able to receive a message, the address to contact, and the type of the message to be used.
用户希望了解其朋友是否愿意使用短信(SMS、IM和MMS),以便了解该朋友是否能够接收消息、联系地址以及要使用的消息类型。
This example shows how to define a content filter. The <basic> element as well as all parent elements are selected based on a condition defined by a logical expression. The condition is <class> elements that have a value "MMS", "SMS", or "IM".
此示例显示如何定义内容筛选器。根据逻辑表达式定义的条件选择<basic>元素以及所有父元素。条件是具有值“MMS”、“SMS”或“IM”的<class>元素。
The <class> element is defined in [14] as an extension to PIDF [13].
[14]中将<class>元素定义为PIDF[13]的扩展。
<?xml version="1.0" encoding="UTF-8"?> <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter"> <ns-bindings> <ns-binding prefix="pidf" urn="urn:ietf:params:xml:ns:pidf"/> <ns-binding prefix="rpid" urn="urn:ietf:params:xml:ns:pidf:rpid"/> </ns-bindings> <filter id="123" uri="sip:presentity@example.com">
<?xml version="1.0" encoding="UTF-8"?> <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter"> <ns-bindings> <ns-binding prefix="pidf" urn="urn:ietf:params:xml:ns:pidf"/> <ns-binding prefix="rpid" urn="urn:ietf:params:xml:ns:pidf:rpid"/> </ns-bindings> <filter id="123" uri="sip:presentity@example.com">
<what> <include type="xpath"> /pidf:presence/pidf:tuple[rpid:class="IM" or rpid:class="SMS" or rpid:class="MMS"]/pidf:status/pidf:basic </include> </what> </filter> </filter-set>
<what> <include type="xpath"> /pidf:presence/pidf:tuple[rpid:class="IM" or rpid:class="SMS" or rpid:class="MMS"]/pidf:status/pidf:basic </include> </what> </filter> </filter-set>
A user requires to be informed when his colleague becomes available by some communication means. The user gets the full presence state of the colleague when a certain PIDF [13] tuple <basic> status changes from "closed" to "open".
用户需要在其同事通过某种通信方式可用时得到通知。当某个PIDF[13]元组<basic>状态从“关闭”更改为“打开”时,用户将获得同事的完整状态。
<?xml version="1.0" encoding="UTF-8"?> <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter"> <ns-bindings> <ns-binding prefix="pidf" urn="urn:ietf:params:xml:ns:pidf"/> </ns-bindings> <filter id="123" uri="sip:presentity@example.com"> <trigger> <changed from="CLOSED" to="OPEN"> /pidf:presence/pidf:tuple/pidf:status/pidf:basic </changed> </trigger> </filter> </filter-set>
<?xml version="1.0" encoding="UTF-8"?> <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter"> <ns-bindings> <ns-binding prefix="pidf" urn="urn:ietf:params:xml:ns:pidf"/> </ns-bindings> <filter id="123" uri="sip:presentity@example.com"> <trigger> <changed from="CLOSED" to="OPEN"> /pidf:presence/pidf:tuple/pidf:status/pidf:basic </changed> </trigger> </filter> </filter-set>
A user wishes to get information about pending and waiting subscriptions in order to be able to authorise watchers to see his presence information.
用户希望获得有关待定和等待订阅的信息,以便能够授权观察者查看其状态信息。
The filter selects watcher information notifications [16] to be sent when a subscription status has changed to "pending" or "waiting". In the notification, only the watchers that have a status of "pending" or "waiting" are included.
当订阅状态更改为“挂起”或“等待”时,过滤器选择要发送的观察者信息通知[16]。在通知中,仅包括状态为“待定”或“等待”的观察者。
<?xml version="1.0" encoding="UTF-8"?> <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter"> <ns-bindings> <ns-binding prefix="wi" urn="urn:ietf:params:xml:ns:watcherinfo"/> </ns-bindings> <filter id="123" uri="sip:presentity@example.com">
<?xml version="1.0" encoding="UTF-8"?> <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter"> <ns-bindings> <ns-binding prefix="wi" urn="urn:ietf:params:xml:ns:watcherinfo"/> </ns-bindings> <filter id="123" uri="sip:presentity@example.com">
<what> <include> /wi:watcherinfo/wi:watcher-list/wi:watcher[@status="pending" or @status="waiting"] </include> </what> <trigger> <changed to="pending"> /wi:watcherinfo/wi:watcher-list/wi:watcher/@status </changed> </trigger> <trigger> <changed to="waiting"> /wi:watcherinfo/wi:watcher-list/wi:watcher/@status </changed> </trigger> </filter> </filter-set>
<what> <include> /wi:watcherinfo/wi:watcher-list/wi:watcher[@status="pending" or @status="waiting"] </include> </what> <trigger> <changed to="pending"> /wi:watcherinfo/wi:watcher-list/wi:watcher/@status </changed> </trigger> <trigger> <changed to="waiting"> /wi:watcherinfo/wi:watcher-list/wi:watcher/@status </changed> </trigger> </filter> </filter-set>
A user turns her terminal on, and the terminal automatically fetches general presence status and information about communication means from a certain pre-defined set of her buddies.
用户打开她的终端,终端自动从她预先定义的伙伴集合中获取一般存在状态和关于通信方式的信息。
The filter is defined to select XML elements belonging to the PIDF namespace.
过滤器被定义为选择属于PIDF名称空间的XML元素。
<?xml version="1.0" encoding="UTF-8"?> <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter"> <filter id="123" uri="sip:buddylist@example.com"> <what> <include type="namespace"> urn:ietf:params:xml:ns:pidf </include> </what> </filter> </filter-set>
<?xml version="1.0" encoding="UTF-8"?> <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter"> <filter id="123" uri="sip:buddylist@example.com"> <what> <include type="namespace"> urn:ietf:params:xml:ns:pidf </include> </what> </filter> </filter-set>
A user wants to know if a group of his friends is available for gaming. He orders notifications about the current status and future changes of the game-specific presence information.
用户想知道他的一群朋友是否可以玩游戏。他命令通知游戏特定状态信息的当前状态和未来更改。
This filter is defined to select the game-specific tuple to be delivered.
该过滤器用于选择要交付的特定于游戏的元组。
<?xml version="1.0" encoding="UTF-8"?> <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter" > <ns-bindings> <ns-binding prefix="game-ext" urn="urn:ietf:params:xml:ns:game-ext"/> </ns-bindings> <filter id="123"> <what> <include> /pidf:presence/pidf:tuple/ pidf:status[game-ext:label="game-X"] </include> </what> </filter> </filter-set>
<?xml version="1.0" encoding="UTF-8"?> <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter" > <ns-bindings> <ns-binding prefix="game-ext" urn="urn:ietf:params:xml:ns:game-ext"/> </ns-bindings> <filter id="123"> <what> <include> /pidf:presence/pidf:tuple/ pidf:status[game-ext:label="game-X"] </include> </what> </filter> </filter-set>
The user is interested in getting up-to-date information about the communication means and contact addresses of his friends. The user also wants to get more information (e.g., location) about one of the friends in the list, named Bob. The PIDF element <note> is filtered out, i.e., excluded. The list was predefined as buddies@example.com.
用户对获取有关其朋友的通信方式和联系地址的最新信息感兴趣。用户还希望获得列表中一个名为Bob的朋友的更多信息(例如位置)。PIDF元素<note>被过滤掉,即被排除。该列表预定义为buddies@example.com.
<?xml version="1.0" encoding="UTF-8"?> <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter"> <ns-bindings> <ns-binding prefix="pidf" urn="urn:ietf:params:xml:ns:pidf"/> <ns-binding prefix="rpid" urn="urn:ietf:params:xml:ns:pidf:rpid"/> </ns-bindings> <filter id="8439" uri="sip:buddies@example.com"> <what> <include> /pidf:presence/pidf:tuple[rpid:class="service"]/pidf:status/ pidf:basic </include> </what> </filter> <filter id="999" uri="sip:bob@example.com"> <what> <include type="namespace"> urn:ietf:params:xml:ns:pidf </include> <exclude> /pidf:presence/pidf:tuple/pidf:note </exclude> </what>
<?xml version="1.0" encoding="UTF-8"?> <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter"> <ns-bindings> <ns-binding prefix="pidf" urn="urn:ietf:params:xml:ns:pidf"/> <ns-binding prefix="rpid" urn="urn:ietf:params:xml:ns:pidf:rpid"/> </ns-bindings> <filter id="8439" uri="sip:buddies@example.com"> <what> <include> /pidf:presence/pidf:tuple[rpid:class="service"]/pidf:status/ pidf:basic </include> </what> </filter> <filter id="999" uri="sip:bob@example.com"> <what> <include type="namespace"> urn:ietf:params:xml:ns:pidf </include> <exclude> /pidf:presence/pidf:tuple/pidf:note </exclude> </what>
</filter> </filter-set>
</filter> </filter-set>
XML Schema Implementation (Normative)
XML模式实现(标准)
<?xml version="1.0" encoding="UTF-8"?> <xs:schema targetNamespace="urn:ietf:params:xml:ns:simple-filter" xmlns="urn:ietf:params:xml:ns:simple-filter" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<?xml version="1.0" encoding="UTF-8"?> <xs:schema targetNamespace="urn:ietf:params:xml:ns:simple-filter" xmlns="urn:ietf:params:xml:ns:simple-filter" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
<xs:annotation> <xs:documentation xml:lang="en"> XML Schema Definition for Filter Criteria. </xs:documentation> </xs:annotation>
<xs:annotation> <xs:documentation xml:lang="en"> XML Schema Definition for Filter Criteria. </xs:documentation> </xs:annotation>
<xs:element name="filter-set" type="FilterSetType"/>
<xs:element name="filter-set" type="FilterSetType"/>
<xs:complexType name="FilterSetType"> <xs:sequence> <xs:element name="ns-bindings" type="NSBindings" minOccurs="0" maxOccurs="1"/> <xs:element name="filter" type="FilterType" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="package" type="xs:string" use="optional"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType>
<xs:complexType name="FilterSetType"> <xs:sequence> <xs:element name="ns-bindings" type="NSBindings" minOccurs="0" maxOccurs="1"/> <xs:element name="filter" type="FilterType" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="package" type="xs:string" use="optional"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType>
<xs:complexType name="NSBindings"> <xs:sequence> <xs:element name="ns-binding" type="NSBinding" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType>
<xs:complexType name="NSBindings"> <xs:sequence> <xs:element name="ns-binding" type="NSBinding" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType>
<xs:complexType name="NSBinding"> <xs:attribute name="prefix" type="xs:string" use="required"/> <xs:attribute name="urn" type="xs:anyURI" use="required"/> </xs:complexType>
<xs:complexType name="NSBinding"> <xs:attribute name="prefix" type="xs:string" use="required"/> <xs:attribute name="urn" type="xs:anyURI" use="required"/> </xs:complexType>
<xs:complexType name="FilterType"> <xs:sequence> <xs:element name="what" type="WhatType" minOccurs="0" maxOccurs="1"/> <xs:element name="trigger" type="TriggerType" minOccurs="0" maxOccurs="unbounded"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="id" type="xs:string" use="required"/> <xs:attribute name="uri" type="xs:anyURI" use="optional"/> <xs:attribute name="domain" type="xs:string" use="optional"/> <xs:attribute name="remove" type="xs:boolean" use="optional" default="false"/> <xs:attribute name="enabled" type="xs:boolean" use="optional" default="true"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType>
<xs:complexType name="FilterType"> <xs:sequence> <xs:element name="what" type="WhatType" minOccurs="0" maxOccurs="1"/> <xs:element name="trigger" type="TriggerType" minOccurs="0" maxOccurs="unbounded"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="id" type="xs:string" use="required"/> <xs:attribute name="uri" type="xs:anyURI" use="optional"/> <xs:attribute name="domain" type="xs:string" use="optional"/> <xs:attribute name="remove" type="xs:boolean" use="optional" default="false"/> <xs:attribute name="enabled" type="xs:boolean" use="optional" default="true"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType>
<xs:complexType name="WhatType"> <xs:sequence> <xs:element name="include" type="InclType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="exclude" type="ExclType" minOccurs="0" maxOccurs="unbounded"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType>
<xs:complexType name="WhatType"> <xs:sequence> <xs:element name="include" type="InclType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="exclude" type="ExclType" minOccurs="0" maxOccurs="unbounded"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType>
<xs:complexType name="InclType"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="type" type="TypeType" default="xpath" use="optional"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:extension> </xs:simpleContent> </xs:complexType>
<xs:complexType name="InclType"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="type" type="TypeType" default="xpath" use="optional"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:extension> </xs:simpleContent> </xs:complexType>
<xs:complexType name="ExclType"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="type" type="TypeType" default="xpath" use="optional"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:extension> </xs:simpleContent>
<xs:complexType name="ExclType"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="type" type="TypeType" default="xpath" use="optional"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:extension> </xs:simpleContent>
</xs:complexType>
</xs:complexType>
<xs:simpleType name="TypeType"> <xs:restriction base="xs:string"> <xs:enumeration value="xpath"/> <xs:enumeration value="namespace"/> </xs:restriction> </xs:simpleType>
<xs:simpleType name="TypeType"> <xs:restriction base="xs:string"> <xs:enumeration value="xpath"/> <xs:enumeration value="namespace"/> </xs:restriction> </xs:simpleType>
<xs:complexType name="TriggerType"> <xs:sequence> <xs:element name="changed" type="ChangedType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="added" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="removed" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType>
<xs:complexType name="TriggerType"> <xs:sequence> <xs:element name="changed" type="ChangedType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="added" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="removed" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType>
<xs:complexType name="ChangedType"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="from" type="xs:anySimpleType" use="optional"/> <xs:attribute name="to" type="xs:anySimpleType" use="optional"/> <xs:attribute name="by" type="xs:decimal" use="optional"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:extension> </xs:simpleContent> </xs:complexType>
<xs:complexType name="ChangedType"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="from" type="xs:anySimpleType" use="optional"/> <xs:attribute name="to" type="xs:anySimpleType" use="optional"/> <xs:attribute name="by" type="xs:decimal" use="optional"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:extension> </xs:simpleContent> </xs:complexType>
</xs:schema>
</xs:schema>
The filters in the body in a SIP message have a significant effect on the ways in which the request is handled at a server. As a result, it is especially important that messages containing this extension be authenticated and authorised. Authentication can be achieved using the Digest Authentication mechanism described in [12]. The authorisation decision is based on the permissions that the resource (notifier) has given to the watcher. An example of such an auhorisation policy can be found in [18].
SIP消息正文中的过滤器对服务器处理请求的方式有重要影响。因此,对包含此扩展的消息进行身份验证和授权尤为重要。可以使用[12]中描述的摘要身份验证机制实现身份验证。授权决定基于资源(通知者)给予观察者的权限。[18]中可以找到这种Auhorization政策的一个例子。
Requests can reveal sensitive information about a UA's capabilities. If this information is sensitive, it SHOULD be encrypted using SIP S/MIME capabilities [11].
请求可能会泄露有关UA能力的敏感信息。如果此信息是敏感信息,则应使用SIP S/MIME功能对其进行加密[11]。
All filtering-related security measures discussed in [2] MUST be followed along with package-specific security.
必须遵循[2]中讨论的所有过滤相关安全措施以及特定于包的安全措施。
This document registers a new MIME type, "application/ simple-filter+xml", and registers a new XML namespace.
本文档注册了一个新的MIME类型“application/simple filter+xml”,并注册了一个新的xml名称空间。
This specification follows the guidelines of RFC3023 [7].
本规范遵循RFC3023[7]的指南。
MIME media type: application
MIME媒体类型:应用程序
MIME subtype name: simple-filter+xml
MIME子类型名称:简单筛选器+xml
Mandatory parameters: none
强制参数:无
Optional parameters: Same as charset parameter application/xml, as specified in RFC 3023 [7].
可选参数:与RFC 3023[7]中指定的字符集参数application/xml相同。
Encoding considerations: Same as encoding considerations of application/xml, as specified in RFC 3023 [7].
编码注意事项:与application/xml的编码注意事项相同,如RFC 3023[7]中所述。
Security considerations: See section 10 of RFC 3023 [7] and section Section 8 of this document.
安全注意事项:参见RFC 3023[7]第10节和本文件第8节。
Interoperability considerations: none.
互操作性考虑:无。
Published specification: This document.
已发布规范:本文件。
Applications that use this media type: This document type has been used to support the SIP-based Event notification framework and its packages.
使用此媒体类型的应用程序:此文档类型已用于支持基于SIP的事件通知框架及其包。
Additional information:
其他信息:
Magic number: None
神奇数字:无
File extension: .cl or .xml
文件扩展名:.cl或.xml
Macintosh file type code: "TEXT"
Macintosh文件类型代码:“文本”
Personal and email address for further information: Hisham Khartabil (hisham.khartabil@telio.no)
更多信息的个人和电子邮件地址:Hisham Khartabil(Hisham。khartabil@telio.no)
Intended Usage: COMMON
预期用途:普通
Author/change controller: The IETF
作者/变更控制者:IETF
9.2. URN Sub-Namespace Registration for urn:ietf:params:xml:ns:simple-filter
9.2. URN Sub-Namespace Registration for urn:ietf:params:xml:ns:simple-filter
This section registers a new XML namespace, as per guidelines in the IETF XML Registry [4].
本节根据IETF XML注册表[4]中的指南注册一个新的XML名称空间。
URI: The URI for this namespace is urn:ietf:params:xml:ns:simple-filter.
URI:此命名空间的URI为urn:ietf:params:xml:ns:simple filter。
Registrant Contact: IETF, SIMPLE working group, Hisham Khartabil (hisham.khartabil@telio.no)
注册人联系人:IETF,简单工作组,Hisham Khartabil(Hisham。khartabil@telio.no)
This section registers a new XML schema per the procedures in [4].
本节根据[4]中的过程注册一个新的XML模式。
URI: urn:ietf:params:xml:ns:simple-filter
URI: urn:ietf:params:xml:ns:simple-filter
Registrant Contact: IETF, SIMPLE working group, Hisham Khartabil (hisham.khartabil@telio.no).
注册人联系人:IETF,简单工作组,Hisham Khartabil(Hisham。khartabil@telio.no).
The XML for this schema can be found as the sole content of Section 7.
此模式的XML可以作为第7节的唯一内容找到。
The authors would like to thank Jonathan Rosenberg, Henning Schulzrinne, Tim Moran, Jari Urpalainen, Sreenivas Addagatla, Miguel-Angel Garcia Martin, Mary Barnes, Paul Kyzivat, Robert Sparks, and Elwyn Davies for their valuable input and comments.
作者要感谢乔纳森·罗森博格、亨宁·舒尔兹林内、蒂姆·莫兰、贾里·厄帕莱宁、斯雷尼瓦斯·阿达加特拉、米格尔·安吉尔·加西亚·马丁、玛丽·巴恩斯、保罗·基齐瓦特、罗伯特·斯帕克斯和埃尔温·戴维斯的宝贵意见和评论。
[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[1] Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。
[2] Roach, A. B., "Session Initiation Protocol (SIP)-Specific Event Notification", RFC 3265, June 2002.
[2] Roach,A.B.,“会话启动协议(SIP)-特定事件通知”,RFC3265,2002年6月。
[3] Khartabil, H., Leppanen, E., Lonnfors, M., and J. Costa-Requena, "Functional Description of Event Notification Filtering", RFC 4660, September 2006.
[3] H.Khartabil、E.Leppanen、M.Lonnfors和J.Costa Requena,“事件通知过滤的功能描述”,RFC 4660,2006年9月。
[4] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, January 2004.
[4] Mealling,M.,“IETF XML注册表”,BCP 81,RFC 3688,2004年1月。
[5] Moats, R., "URN Syntax", RFC 2141, May 1997.
[5] 护城河,R.,“瓮语法”,RFC 21411997年5月。
[6] Moats, R., "A URN Namespace for IETF Documents", RFC 2648, August 1999.
[6] Moats,R.,“IETF文档的URN名称空间”,RFC 2648,1999年8月。
[7] Murata, M., St. Laurent, S., and D. Kohn, "XML Media Types", RFC 3023, January 2001.
[7] Murata,M.,St.Laurent,S.,和D.Kohn,“XML媒体类型”,RFC 3023,2001年1月。
[8] Bray, T., "Exensible Markup Language (XML) 1.0 (Second Edition)", W3C CR CR-xml11-20011006, October 2000.
[8] Bray,T.,“可验证标记语言(XML)1.0(第二版)”,W3C CR-xml11-20011006,2000年10月。
[9] Clark, J., "XML Path Language (XPath) Version 1.0", W3C REC REC-xpath-19991116, November 1999.
[9] Clark,J.,“XML路径语言(XPath)1.0版”,W3C REC-XPath-19991116,1999年11月。
[10] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 4234, October 2005.
[10] Crocker,D.和P.Overell,“语法规范的扩充BNF:ABNF”,RFC 42342005年10月。
[11] Ramsdell, B., "Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 3.1 Message Specification", RFC 3851, July 2004.
[11] Ramsdell,B.,“安全/多用途Internet邮件扩展(S/MIME)版本3.1消息规范”,RFC 3851,2004年7月。
[12] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, June 2002.
[12] Rosenberg,J.,Schulzrinne,H.,Camarillo,G.,Johnston,A.,Peterson,J.,Sparks,R.,Handley,M.,和E.Schooler,“SIP:会话启动协议”,RFC 3261,2002年6月。
[13] Sugano, H., Fujimoto, S., Klyne, G., Bateman, A., Carr, W., and J. Peterson, "Presence Information Data Format (PIDF)", RFC 3863, August 2004.
[13] Sugano,H.,Fujimoto,S.,Klyne,G.,Batman,A.,Carr,W.,和J.Peterson,“状态信息数据格式(PIDF)”,RFC 38632004年8月。
[14] Schulzrinne, H., Gurbani, V., Kyzivat, P., and J. Rosenberg, "RPID -- Rich Presence Extensions to the Presence Information Data Format (PIDF)", RFC 4480, July 2006.
[14] Schulzrinne,H.,Gurbani,V.,Kyzivat,P.,和J.Rosenberg,“RPID——状态信息数据格式(PIDF)的丰富状态扩展”,RFC 44802006年7月。
[15] Rosenberg, J., "A Presence Event Package for the Session Initiation Protocol (SIP)", RFC 3856, August 2004.
[15] Rosenberg,J.,“会话启动协议(SIP)的状态事件包”,RFC3856,2004年8月。
[16] Rosenberg, J., "An Extensible Markup Language (XML) Based Format for Watcher Information", RFC 3858, August 2004.
[16] Rosenberg,J.,“基于可扩展标记语言(XML)的观察者信息格式”,RFC3858,2004年8月。
[17] Roach, A. B., Campbell, B., and J. Rosenberg, "A Session Initiation Protocol (SIP) Event Notification Extension for Resource Lists", RFC 4663, September 2006.
[17] Roach,A.B.,Campbell,B.,和J.Rosenberg,“资源列表的会话启动协议(SIP)事件通知扩展”,RFC 4663,2006年9月。
[18] Rosenberg, J., "Presence Authorization Rules", Work in Progress, June 2006.
[18] Rosenberg,J.,“在场授权规则”,正在进行的工作,2006年6月。
Authors' Addresses
作者地址
Hisham Khartabil Telio P.O. Box 1203 Vika Oslo Norway
Hisham Khartabil Telio邮政信箱1203 Vika Oslo Norway
Phone: +47 2167 3544 EMail: hisham.khartabil@telio.no
Phone: +47 2167 3544 EMail: hisham.khartabil@telio.no
Eva Leppanen Nokia P.O BOX 785 Tampere Finland
Eva Leppanen诺基亚邮政信箱785坦佩雷芬兰
Phone: +358 7180 77066 EMail: eva-maria.leppanen@nokia.com
Phone: +358 7180 77066 EMail: eva-maria.leppanen@nokia.com
Mikko Lonnfors Nokia P.O BOX 321 Helsinki Finland
Mikko Lonnfors诺基亚邮政信箱321芬兰赫尔辛基
Phone: + 358 71800 8000 EMail: mikko.lonnfors@nokia.com
Phone: + 358 71800 8000 EMail: mikko.lonnfors@nokia.com
Jose Costa-Requena Nokia P.O. Box 321 FIN-00045 NOKIA GROUP FINLAND
Jose Costa Requena诺基亚邮政信箱321 FIN-00045诺基亚芬兰集团
Phone: +358 71800 8000 EMail: jose.costa-requena@nokia.com
Phone: +358 71800 8000 EMail: jose.costa-requena@nokia.com
Full Copyright Statement
完整版权声明
Copyright (C) The Internet Society (2006).
版权所有(C)互联网协会(2006年)。
This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.
本文件受BCP 78中包含的权利、许可和限制的约束,除其中规定外,作者保留其所有权利。
This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
本文件及其包含的信息是按“原样”提供的,贡献者、他/她所代表或赞助的组织(如有)、互联网协会和互联网工程任务组不承担任何明示或暗示的担保,包括但不限于任何保证,即使用本文中的信息不会侵犯任何权利,或对适销性或特定用途适用性的任何默示保证。
Intellectual Property
知识产权
The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.
IETF对可能声称与本文件所述技术的实施或使用有关的任何知识产权或其他权利的有效性或范围,或此类权利下的任何许可可能或可能不可用的程度,不采取任何立场;它也不表示它已作出任何独立努力来确定任何此类权利。有关RFC文件中权利的程序信息,请参见BCP 78和BCP 79。
Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.
向IETF秘书处披露的知识产权副本和任何许可证保证,或本规范实施者或用户试图获得使用此类专有权利的一般许可证或许可的结果,可从IETF在线知识产权存储库获取,网址为http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.
IETF邀请任何相关方提请其注意任何版权、专利或专利申请,或其他可能涵盖实施本标准所需技术的专有权利。请将信息发送至IETF的IETF-ipr@ietf.org.
Acknowledgement
确认
Funding for the RFC Editor function is provided by the IETF Administrative Support Activity (IASA).
RFC编辑器功能的资金由IETF行政支持活动(IASA)提供。