9.5.2 消息格式(Message Format)
[ONVIF概要]中定义了NotificationMessage消息元素,定义呈列如下(请注意,这里包含的结构描述仅供参考。[ONVIF Schema]包含标准结构描述定义。):
<xs:element name="Message" type="Message"><xs:element name="Message"><xs:complexType><xs:sequence><xs:element name="Source" type="tt:ItemList" minOccurs="0"/><xs:element name="Key" type="tt:ItemList" minOccurs="0"/><xs:element name="Data" type="tt:ItemList" minOccurs="0"/>...</xs:sequence><xs:attribute name="UtcTime" type="xs:dateTime" use="required"/><xs:attribute name="PropertyOperation" type="tt:PropertyOperationType"/></xs:complexType></xs:element><xs:complexType name="ItemList"><xs:sequence><xs:element name="SimpleItem" minOccurs="0" maxOccurs="unbounded"><xs:complexType><xs:attribute name="Name" type="xs:string" use="required"/><xs:attribute name="Value" type="xs:anySimpleType" use="required"/></xs:complexType></xs:element><xs:element name="ElementItem" minOccurs="0" maxOccurs="unbounded"><xs:complexType><xs:sequence><xs:any namespace="##any"/></xs:sequence><xs:attribute name="Name" type="xs:string" use="required"/></xs:complexType></xs:element></xs:sequence></xs:complexType><xs:simpleType name="PropertyOperationType"><xs:restriction base="xs:string"><xs:enumeration value="Initialized"/><xs:enumeration value="Deleted"/><xs:enumeration value="Changed"/></xs:restriction></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”操作模式应当被使用。
