Skip to content

Latest commit

 

History

History
59 lines (48 loc) · 2.7 KB

09.05.02.md

File metadata and controls

59 lines (48 loc) · 2.7 KB

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”操作模式应当被使用。

上一章|继续阅读