4.5.1.1键—长度—值结构
KLV协议用16个字节的全局标签(Universal Label, UL)作为标识键,其后跟随给出数据值长度的数字值。键是一个全局标签,根据SMPTE 298M,开头以一个对象标识开始,紧跟着一个全局标签大小。全局标签标识以一个标识组织用的标准的编码开始,其后是SMPTE的次级标识符。接下来的字节标识符是注册的类别,如SMPTE元数据字典,6和7字节更具体地标识带有版本编号的注册和结构。在全局标签标识中,对特别条目的特殊标识由9~16字节表示。
长度部分根据基本编码规则(Basic Encoding Rules, EBR)编码。可以根据ISO标准使用长度字节的长或短的编码。数据值可以是单个数据或者数据组。
4.5.1.2KLV数据编码
单个数据的编码应用键来标识参考框架和数据类型、长度以及编码值。因为对于一个描述符有很多种字典提供了表达的方法,所以要选择用哪种方法来表示,(根据所应用的表示键)要选择一个初始的定义表示方法。备选方案在最左边字节由非零值和字典中存储的值表示。
为了支持个体数据元素的逻辑组或者使一组元素可以编码在一起,定义了分组编码方案。该编码方案可以用键单元减少冗余信息。分组编码也可以用于建立数据元素的逻辑组。KLV编码协议可以用于广义集合、全局集合、局部集合、可变长度包以及定长包。编码效率从广义集合到定长包递增,即广义集合效率最低,定长包效率最高。KLV分组编码详细介绍如下:
·广义集合,用来构建一个数据元素和其他KLV编码项目的逻辑组。在广义集合中用到了全部的KLV编码。
·全局集合,和广义集合定义方式一样,但是编码效率比广义集合要高,因为它使用共享的键头,这和原始键能够完全恢复的无压缩编码效果一样。
·局部集合,和广义集合编码方式一样,但是由于使用了简短的局部标识而有了更高的编码效率。这些标识只在局部集合中有意义,它保存了KLV数据结构的构架,但是局部标识需要有独立和具体的定义标准来定义其具体意义。同时也要定义局部标识如何映射在广义的标识键值中。
·可变长度包,用来定义为一个数据元素的深度分组(并且移除了组中所有元素的UL键和局部标识)的使用。可变长度包依赖于定义包中数据元素顺序的标准或规范。
·定长包,不仅移除了UL键和局部标识的使用,同时也去除了组中所有单个元素的长度。因此,定长包基于定义了包中数据元素的命令和每个数据元素长度的标准。这样使得定长包成为编码最有效率但也是最不灵活的数据元素编组。
集合和包是由很多KLV集合和大包数据的结构编码归组的单个数据元素组成。它们由SMPTE注册机关给予注册的广义标识键所定义。由集合编码的数据元素可能不仅仅是一个数据字典的项目,同时可能是其他包和集合的元素;而包只能编码一个数据字典中的一组单个项目,如它们不能使用循环递归编码。键的第5个字节定义了集合和包,第6字节定义了集合和包的类型。
标签是标识标签自己定义的有意义(或者值)的对象的特殊类型。因此,标签不需要长度域和值域,它们要在特殊的标签字典中被定义。
4.5.2可扩展标记语言
可扩展标记语言(eXtensible Markup Language, XML)是由W3C定义,由SGML(见3.5.2.1节)发展而来的非常灵活的文本格式。XML最初被大型电子出版业使用,现在已用于更广泛的数据范围(特别是网络)。它为数据内容定义了一个容器格式和自动验证结构,如XML描述了一个数据对象类(称为XML文档)并部分描述了计算机程序处理过程的行为。XML的设计目标是:
·在互联网上直接使用。
·支持广泛的应用。
·可以与SGML相媲美。
·优化处理XML文档的程序开发。
·最小化的可操作特征。
·XML编码文档易懂,可以方便、快速地建立。
·XML文档易被建立。
XML定义了文档建立的方式、描述了文档的结构、指定了其要包含的实体。XML文档的关键元素是标记,它以标签的方式存在,最常用的是封装文本元素的开始标签和结束标签。标签被用于结构化文档和部分文档。标签还组成实体和参数属性、描述、文档类型和XML声明,以及处理指令和内部别名。
根据标签的定义和文档类型的声明,并没有规定具体的结构,如并没有定义XML文档的具体形式、所包含元素的数量、元素的格式,以及判断一个好的XML文档的具体标准。XML1.0定义了一个文档需要包含一个或者多个元素,每个元素都由开始标签和结束标签限定。因此,它提供了一个语义框架以形成完整的能够供检索系统使用的XML文档。除了简单元素之外,XML文档还包含属性,即文档中可以赋值的实体。
如果XML文档中没有任何元素的深层定义和量化、没有元素的特征和关系、没有元素在文档中出现的次数统计以及没有给定文档结构中的指定位置,XML文档就不能被编译。因为没有参考点,所以就不能决定文档是否是完好的和有效的。另外,为了交换XML文档中的信息,有必要使所有参与的部分有着和文档内容一样的结构意义和编译方法。可以应用一个XML方案来指定XML文档元素的特征和关系以及XML文档类的属性。信息和文档的分类以及交换由具体的XML方案或者文档类型优化。这基本为特殊文档类型定义了一个框架。有很多XML方案可以用于定义XML文档类型和指定分类。最常用的是文档类型定义(Document Type Definitions, DTD)和W3C XML方案。
内容管理中重要的是不仅可以将XML应用于文档,还可以将其应用于数据流。因此,除了适合基本的文件转换以外,XML还特别适用于内容传输。
4.5.2.1文档类型定义
能够指定XML文档结构的一种形式是使用DTD。DTD是用非XML语法写成的,它描述了特定文档类型的文档结构和允许的内容。DTD基于SGML使用扩展的Bakus-Naur形式(Extended Bakus-Naur Form, EBNF)。DTD声明了XML的文档类型、元素和属性。因为它主要是定义文档的(即它的中心是文档定义而不是数据定义),所以不太支持多种数据类型。DTD只声明元素的特征数据而不指定该数据类型。因此,它不能指定数据类型的所属范围和具体元素的属性,它只给出某一个类型的文档所应该包含的结构和元素。
4.5.2.2W3C XML方案
W3C最初指定了用XML语义的XML方案,它不仅定义了XML文档和文档类型的结构,还综合了XML命名空间、结构方案、数据类型以及继承用法。W3C XML方案定义(XML Scheme Definition, XSD)的三种主要方案——XML方案第0部分:入门;XML方案第1部分:结构;XML方案第2部分:数据类型。第1部分定义了XML方案的定义语言,它用来描述XSD所定义的XML文档的结构和内容组成。第2部分描述了一些植入的、基本的数据类型(如整数、日期和二进制数据),并定义了附加数据类型用XML方案的定义语言定义的方法。XSD提供和DTD相似的元素类型声明和属性声明的机制,另外它还支持对于最大和最小出现频率的定义。
XSD和DTD最大的不同是XSD定义了数据类型列表。XSD区别了简单数据类型和推导出的数据类型。推导出的数据类型定义了由规则和列表推导出的进一步的数据类型。
除了简单数据类型,第2部分还定义了很多的推导数据类型(如规则字符串、名称、ID、长短字节等)。XSD定义的命名空间要加xsd命名空间前缀。