这里定义的基本cc/pp用法将使用到的值的进一步解释留给了处理应用程序。将来的cc/pp版本可能会引入一些额外的结构来实现客户设置文件和其它资源元数据的标准化匹配。为了适应这种发展,并且简化与ietf媒体特性描述的交互工作,推荐任何简单的属性值应该按照下面列出的数据类型来进行定义。
归根结底,所有属性值都是ucs (unicode)字符序列。可以认为在特定的rdf数据编序中字符编码问题,是通过封装于内部的xml表达来定义的。
注意:属性比较超出了本文档的范围,同样对一个给定的属性值确定其相应的简单类型的详细的机制也是如此。我们假定应用知道如何处理任何需要进行操作的cc/pp属性。
在允许的情况下,正式的语法表达式使用在第6节xml规范[xml]中的符号。
4.1.1.1 字符串
cc/pp属性值的数据类型可以定义为区分大小写的文本字符串。
rdf字面值是局限于xml schema 数据类型"string"所定义的词法空间的[xmlschema-2]。任何'lang'标签都将被忽略。
通常,可以比较这些值是否相等或者不等。比较文本值时,每个字符都必须匹配才可以认为是相等的。
一些例子:
- 浏览器名:"mozilla"
- 浏览器版本:"5.0"
4.1.1.2 整数
cc/pp属性值的数据类型可以定义为整数。
rdf字面值局限于xml schema数据类型"int"所定义的词汇空间内[xmlschema-2]。任何'lang'标签都将被忽略。
整数可以是正数、零或者负数。他们是由十进制阿拉伯数字组成的一列字符串,可以配上'+'或'-'的前缀。前导的0都将被忽略。数值是作为十进制数来解释。推荐具体的实现可以支持和生成值域为-2147483648到+2147483647,或-(2^31) 到(2^31-1)的整数值;如,绝对值可以表示为31-bit的无符号二进制数的整数。
signed-integer ::= ( '+' | '-' )? unsigned-integer unsigned-integer ::= digit (digit)* |
一些例子:
- 0
- 1
- +0768
- -256
注意:推荐的值域选择是基于对广泛地应用在web上的java和其他编程语言的支持。
4.1.1.3 有理数
cc/pp属性值数据类型可以定义为有理数。
rdf字面值局限于下面定义的词汇空间内。任何'lang'标签都被忽略。
有理数表示成二个整数的比。这两个整数是由'/'分开,可以加上前缀标记符'+'或'-'。
推荐具体的实现可以支持和生成的有理数的分子(第一个数,在'/'之前)为0到2147483647 (2^31-1)的整数,分母(在'/'之后)的值域为1到 2147483647。
rational-number ::= signed-integer ( '/' unsigned-integer )? |
如果分母被省略,可以认为分母值为'1';可以作为整数对待。
一些例子:
- 1/2
- 768/1024
- -254/100
- +2000/65536
注意:上面描述的有理数schema在xml-schema[xmlschema-0]可以被定义为:
图 4-4:有理数的可能的xml-schema <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.w3.org/tr/2003/wd-ccpp-struct-vocab-20030728/"> <xs:simpletype name="rational"> <xs:annotation> <xs:documentation> the canonical lexical representation of any value will be the form of the value reduced to its lowest common denominator, and with '1' in the denominator if applicable. </xs:documentation> </xs:annotation> <xs:restriction base="xs:string"> <xs:pattern value="[-+]?[0-9]+(/0*[1-9][0-9]*)?"/> </xs:restriction> </xs:simpletype> </xs:schema>注意上面模式提供了一个词法上的定义,但并不完善:它不接受任何空白符。并且,上面的简单的类型定义没有定义数的值空间;排序,相等性,和对算术操作的隐含支持也没有如一些这样的类型的用户所期望的被定义——处理器只认为这是字符串。由于这些缺点,使用这里定义的有理数可能会危害到互用性。(将来xml-schema工作组可能会定义一个可使用的有理数数据类型。)
4.1.2 复杂的cc/pp属性数据
除了上面所描述的简单类型的值,cc/pp属性也可能有复杂类型的值,这种值是通过有着自己rdf参数和相关值资源的形式来表达的。通过这种方式来表现的具体数据类型有:
- 值的集合
- 值的顺序
设置文件中的一个组件中绝对不允许一个属性出现多。需要包含多个值的cc/pp属性应该使用集合或顺序。其他复杂的cc/pp属性值可以使用任意的rdf资源来表示。对于如何解释这样的值定义超出本规范标准的范围。
4.1.2.1 值的集合
集合是由零个、一个或多个不同的值组成的,这些值的顺序无关紧要。
集合值在表现特定类型的设备特征方面十分有用;如一个客户端支持的字体范围,一个浏览器所支持的html版本。
一个集合是由一个'rdf:bag'来表示,集合里面的每一个成员都对应那个资源的一个参数,'rdf:_1','rdf:_2'等等。这个构造在rdf模型和语法规范标准[rdf]的第3节中也有描述。
[(client-resource)]
+--(attributename)--> [<rdf:bag>]
+--rdf:_1--> (set-member-value-1)
+--rdf:_2--> (set-member-value-2)
:
+--rdf:_n--> (set-member-value-n) |