• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:16来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

文字形式出现在C D ATA部分中;它们不需要(也不能)替换为“ & l t ;”和“& a m p ;”。C D ATA部
分不能嵌套。
在下面的C D ATA部分,“< g r e e t i n g >”和“< / g r e e t i n g >”被识别为字符数据,而不是标记:
2.8 序言和文档类型声明
X M L文档可以且应该以X M L声明开头,声明指定了所使用的X M L版本。例如,下面是一个
完整的X M L文档,它是格式正规的,但不是有效的:
它等同于下面的文档:
版本号1 . 0表示文档符合此版本的规范;如果不遵守此版本的规范的文档使用了值“ 1 . 0”就
会产生错误。X M L工作组决心制定更高版本的规范,但是这并不意味着将来一定会有新的X M L
版本诞生,即使产生新的规范,也不一定会使用任何特定的编号方式。由于有可能出现新的版
本,X M L声明为自动版本识别提供了可能性,因此该语句本应该成为必须的。如果处理器不支
持文档所标识的版本,它将产生错误通知。
在X M L文档中,标记的作用是描述文档的存储布局和逻辑结构,并且将属性-值对与其逻辑
结构相关联。X M L提供的文档类型声明能够定义对逻辑结构的约束,并支持使用预定义的存储
单元。如果X M L文档有相关的文档类型声明,且文档符合声明中的约束,则认为X M L文档是有
效的。
文档类型声明必须位于文档的第一个元素之前。
表A - 1 0
序言
[ 2 2 ] p r o l o g : : = XMLDecl? Misc* (doctypedecl Misc*)?
[ 2 3 ] X M L D e c l : : = '<?xml' VersionInfo EncodingDecl? SDDecl? S?
' ? > '
[ 2 4 ] Ve r s i o n I n f o : : = S 'version' Eq (" ' " VersionNum " ' " | ' " '
VersionNum '"')
[ 2 5 ] E q : : = S? '=' S?
[ 2 6 ] Ve r s i o n N u m : : = ([a-zA-Z0-9_.:] | '-')+
[ 2 7 ] M i s c : : = Comment | PI | S
818使用XML 高级编程
下载
X M L文档类型声明包含或指向标记声明,标记声明提供了某一类文档的语法。该语法又称
为文档类型定义(Document Type Definition,D T D)。文档类型声明可以指向包含标记声明的外
部子集(特殊类型的外部实体),也可以直接在内部子集中包含标记声明,或者两者兼而有之。
文档的D T D是由这两种类型的子集构成的。
标记声明可以是元素类型声明、属性列表声明、实体声明或者表示法声明。正如下面介绍
格式正规约束和有效性约束时所描述的,这些声明可以全部或部分包含在参数实体中。要了解
更完整的信息,参见“ 4. 物理结构”。
表A - 11
文档类型定义
[ 2 8 ] d o c t y p e d e c l : : = '<!DOCTYPE' S Name [ V C:根元素类型]
(S ExternalID)? S?
('[' (markupdecl
PEReference
S)*']' S?)? '>'
[ 2 9 ] m a r k u p d e c l : : = elementdecl [ V C:正确的声明/ P E嵌套]
AttlistDecl
EntityDecl
NotationDecl
PI | Comment
[ W F C:内部子集中的PE ]
标记声明可以全部或部分由参数实体的置换文本构成。本规范后面要定义的各个非终结符
( e l e m e n t d e c l,A t t l i s t D e c l,等等)产生式描述了在所有的参数实体被包含之后的声明。
有效性约束:根元素类型
文档类型声明中的N a m e必须与根元素的元素类型匹配。
有效性约束:正确的声明/ P E嵌套
参数实体的置换文本必须与标记声明正确嵌套。这意味着如果标记声明(即:上面的
m a r k u p d e c l)的第一个字符或最后一个字符包含在参数实体引用的置换文本中,则整个标记声明
必须包含在同一置换文本中。
格式正规约束:内部子集中的P E
在内部D T D子集中,参数实体引用只能出现在标记声明可以出现的位置,而不能位于标记
声明中。(这条约束不适用于外部参数实体中的引用或外部子集中的引用。)
与内部子集类似, D T D引用的外部子集和外部参数实体必须由一系列完整的标记声明构成,
其中可以夹杂空白字符或参数实体引用,非终结符m a r k u p d e c l定义了所允许的标记声明类型。然
而,利用条件部分结构,可以根据特定的条件忽略外部子集或外部参数实体的部分内容;而这
在内部子集中是不允许的。
表A - 1 2
外部子集
[ 3 0 ] e x t S u b s e t : : = TextDecl? extSubsetDecl
附录A XML 1.0规范使用819 下载
(续)
外部子集
[ 3 1 ] e x t S u b s e t D e c l : : = ( markupdecl | conditionalSect
| PEReference | S )*
外部子集和外部参数实体与内部子集还存在着一些差异,它们的参数实体引用不仅可以出
现在标记声明之间,而且可以位于标记声明内。
下面是一个含文档类型声明的X M L文档的例子:
系统标识符“h e l l o . d t d”指定了文档D T D的U R I。
声明也可以直接包含在文档中,例如下面的例子:
如果文档同时使用了内部子集和外部子集,系统认为内部子集出现在外部子集之前。这意
味着内部子集中的实体和属性列表声明具有更高的优先级。
2.9 独立文档声明
当X M L处理器将文档传递给应用程序时,标记声明会影响文档的内容,例如:属性缺省值
和实体声明。独立文档声明可以是X M L声明的一部分,它用于说明文档实体之外是否有这类标
记声明。
表A - 1 3
独立文档声明
[ 3 2 ] S D D e c l : : = S 'standalone' Eq ((" ' " [ V C:独立文档声明]
('yes' | 'no') " ' ") | (' " '
('yes' | 'no') ' " '))
在独立文档声明中,值“ y e s”表示文档实体没有外部标记声明(无论在D T D外部子集中,
还是在内部子集的外部参数实体引用中),因此没有外部声明会影响X M L解析器传递给应用程序
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程下(83)