9.7.3 Topic过滤器(Topic Filter)

符合ONVIF标准的设备应支持在[WS-Topic]规范中定义的具体Topic表达式。该规范定义了在Topic树内识别一个特定的Topic。当一个具体的Topic表达式被用作订阅过滤器TopicExpression时,下面的分支(Dialect)应当指定:

http://docs.oasis-open.org/wsn/t-1/TopicExpression/Concrete

设备应支持以下Topic表达式语法。

该语法扩展了具体Topic表达式的“or”操作和Topic子树匹配字符串。该扩展语法允许徐选用一个单一订阅内的任意TopicSet。该语法以[WS-Topic 1.3]规范中同样的方式描述了Topic表达式:

[3] TopicExpression ::= TopicPath (‘|’ TopicPath) [4] TopicPath ::= RootTopic ChildTopicExpression(‘//.’)? [5] RootTopic ::= QName

如果一个命名空间前缀包括在RootTopic中,它应符合一个有效的Topic命名空间的定义和局部名称应符合该命名空间中定义的一个根Topic的名称。

[6] ChildTopicExpression ::= ‘/‘ ChildTopicName [7] ChildTopicName ::= QName | NCName

NCName或局部QName应符合在RootTopic后代内的Topic名称,在路径里每个正斜杠表示另一个层次的子Topic元素。

为了引用这个TopicExpression分支(Dialect),应使用以下URI: Dialect=http://www.onvif.org/ver10/tev/topicExpression/ConcreteSet

如果TopicExpression以字符”//.”结束,则表示该TopicExpression匹配一个Topic子树,例如: “tns1:RuleEngine/FieldDetector//.”

这标识tns1:RuleEngine/FieldDetector构成的子树和它的所有后代。

下面的例子掩饰了ConcreteSet topicExpression的用法:

寻找有VideoAnalytics Topic作为父Topic的通知:

  1. <wsnt:TopicExpression Dialect="http://www.onvif.org/ver10/tev/topicExpression/ConcreteSet">
  2. tns1:VideoAnalytics//.
  3. </wsnt:TopicExpression>

寻找有VideoAnalytics Topic或RuleEngine作为父Topic的通知:

  1. <wsnt:TopicExpression Dialect="http://www.onvif.org/ver10/tev/topicExpression/Con creteSet">
  2. tns1:VideoAnalytics//.|tns1:RuleEngine//.
  3. </wsnt:TopicExpression>

寻找由一个LineDetector或FieldDetector产生的通知:

  1. <wsnt:TopicExpression Dialect="http://www.onvif.org/ver10/tev/topicExpression/ConcreteSet">
  2. tns1:RuleEngine/FieldDetector//.|tns1:RuleEngine/LineDetector//.
  3. </wsnt:TopicExpression>

上一章|继续阅读