9.5.4 消息描述语言(Message Description Language)

上一节中介绍了消息有效载荷的结构。该结构包含三组:Source、Key和Data。每个组包含一套Simple和ElementItems。对于每个topic,设备可以描述哪些项将使用消息描述语言产生这个topic的部分通知。下面的描述语言描述了消息项的强制性(请注意,这里包含的结构描述仅供参考。[ONVIF Schema]包含标准结构描述定义):

  1. <xs:complexType name="MessageDescription">
  2. <xs:sequence>
  3. <xs:element name="Source" type="tt:ItemListDescription" minOccurs="0"/>
  4. <xs:element name="Key" type="tt:ItemListDescription" minOccurs="0"/>
  5. <xs:element name="Data" type="tt:ItemListDescription" minOccurs="0"/>
  6. ...
  7. </xs:sequence>
  8. <xs:attribute name="IsProperty" type="xs:boolean"/>
  9. </xs:complexType>
  10. <xs:complexType name="ItemListDescription">
  11. <xs:sequence>
  12. <xs:element name="SimpleItemDescription" minOccurs="0" maxOccurs="unbounded">
  13. <xs:complexType>
  14. <xs:attribute name="Name" type="xs:string" use="required"/>
  15. <xs:attribute name="Type" type="xs:QName" use="required"/>
  16. </xs:complexType>
  17. </xs:element>
  18. <xs:element name="ElementItemDescription" minOccurs="0" maxOccurs="unbounded">
  19. <xs:complexType>
  20. <xs:attribute name="Name" type="xs:string" use="required"/>
  21. <xs:attribute name="Type" type="xs:QName" use="required"/>
  22. </xs:complexType>
  23. </xs:element>
  24. </xs:sequence>
  25. </xs:complexType>

一个项(Item)的名称属性应该独立于它的所属组(Source,Key,Data),在所有的项(Items)中是唯一的。当所描述的消息涉及到属性时,IsProperty属性应当设置为true。然而,如果该消息没有涉及到属性,那么Key组应不存在。一个SimpleItemDescriptor的Type属性应当使用XML结构描述(内置简单类型)、ONVIF标准结构描述或者vendor结构描述中定义的简单类型。同样,一个ElementItemDescriptor的Type属性应匹配一个XML结构描述声明的全局元素。

消息描述语言兵不强制每个Source、Key和Data在项中的顺序。另外,被一个可选的ONVIF事件定义记录的项不需要出现在消息中。这也适用于相关MessageDescription中所描述的可选项。

所有结构描述文件用来描述消息负载的位置都中列在了9.8节的GetEventPropertiesResponse消息中。

9.5.4.1 消息描述示例(Message Description Example)

下面的代码是一个对应9.5.3节中属性示例的消息描述示例:

  1. <tt:MessageDescription IsProperty="true">
  2. <tt:Source>
  3. <tt:SimpleItemDescription Name="VideoSourceConfigurationToken" Type="tt:ReferenceToken"/>
  4. <tt:SimpleItemDescriptionD Name="VideoAnalyticsConfigurationToken" Type="tt:ReferenceToken"/>
  5. <tt:SimpleItemDescription Name="Rule" Type="xs:string"/>
  6. </tt:Source>
  7. <tt:Key>
  8. <tt:SimpleItemDescription Name="ObjectId" Type="xs:integer"/>
  9. </tt:Key>
  10. <tt:Data>
  11. <tt:SimpleItemDescription Name="IsInside" Type="xs:boolean"/>
  12. </tt:Data>
  13. </tt:MessageDescription>

上一章|继续阅读