9.5.2 消息格式(Message Format)

[ONVIF概要]中定义了NotificationMessage消息元素,定义呈列如下(请注意,这里包含的结构描述仅供参考。[ONVIF Schema]包含标准结构描述定义。):

  1. <xs:element name="Message" type="Message">
  2. <xs:element name="Message">
  3. <xs:complexType>
  4. <xs:sequence>
  5. <xs:element name="Source" type="tt:ItemList" minOccurs="0"/>
  6. <xs:element name="Key" type="tt:ItemList" minOccurs="0"/>
  7. <xs:element name="Data" type="tt:ItemList" minOccurs="0"/>
  8. ...
  9. </xs:sequence>
  10. <xs:attribute name="UtcTime" type="xs:dateTime" use="required"/>
  11. <xs:attribute name="PropertyOperation" type="tt:PropertyOperationType"/>
  12. </xs:complexType>
  13. </xs:element>
  14. <xs:complexType name="ItemList">
  15. <xs:sequence>
  16. <xs:element name="SimpleItem" minOccurs="0" maxOccurs="unbounded">
  17. <xs:complexType>
  18. <xs:attribute name="Name" type="xs:string" use="required"/>
  19. <xs:attribute name="Value" type="xs:anySimpleType" use="required"/>
  20. </xs:complexType>
  21. </xs:element>
  22. <xs:element name="ElementItem" minOccurs="0" maxOccurs="unbounded">
  23. <xs:complexType>
  24. <xs:sequence>
  25. <xs:any namespace="##any"/>
  26. </xs:sequence>
  27. <xs:attribute name="Name" type="xs:string" use="required"/>
  28. </xs:complexType>
  29. </xs:element>
  30. </xs:sequence>
  31. </xs:complexType>
  32. <xs:simpleType name="PropertyOperationType">
  33. <xs:restriction base="xs:string">
  34. <xs:enumeration value="Initialized"/>
  35. <xs:enumeration value="Deleted"/>
  36. <xs:enumeration value="Changed"/>
  37. </xs:restriction>
  38. </xs:simpleType>

Message元素内的项分为三类:Source、Key和Data。不相关的属性通知不得使用key分组。各组内可以放置多个简单元素项。每个项都有一个名称和值。在ElementItem的情况下,该值表示一个XML元素内ElementItem元素。在SimpleItem的情况下,该值应指定属性的值。在此消息的任何一组内包含的所有项的名称应该是唯一的。

Vendor特定扩展应为qname表达SimpleItem和ElementItem名称属性。这就避免了潜在的Vendor特定扩展和未来ONVIF的扩展名称之间的冲突。

它推荐无论何时都使用SimpleItems替代ElementItems,因为SimpleItems易于Messages集成到一个通用的客户端。

从TopicSet中可以提取Simple和ElementItems的确切类型信息(请参阅9.7节),其中每个Topic可以增强消息有效负载的描述。

当通知涉及到属性时,PropertyOperation应该存在。“Initialized”操作模式应当用来通知客户端创建一个属性。当一个同步点已请求时,“Initialized”操作模式应当被使用。

上一章|继续阅读