通常,一个XML文档是由XML声明、元素、属性、CDATA段、处理指令、注释等部分组成。

XML声明
XML文档一般要包含XML声明。XML声明必须出现在文档的第一行,并且XML声明前不可以有任何东西,包括空格。XML声明起于<?xml,止于?>,共有三个属性version,encoding和standalone。version属性一般取值为1.0。encoding属性用以表示XML文档所使用的编码格式,并且在一个XML文档中只可以使用一种编码格式。standalone属性用以表示XML文档是否是独立的,即是否需要引用外部资源。
例子:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>

元素
元素起于起始标记<TagName>,止于终止标记</TagName>。起始标记和终止标记必须相互匹配、成对出现。元素用TagName(标记名)标识,用属性来描述。元素可以是处理指令、注释、字符数据(CDATA)段、字符或者为空。元素可以有子元素。DocumentElement(文档元素)是XML文档的根元素,在一个XML文档中有且又有一个。注意:元素的后代是有序的。元素的属性是无序的。
XML并没有定义任何元素,它允许XML的设计者来选择要使用的名称。元素名称是区分大小写的,它必须开始于字母或者下划线(_),后跟任意长度的字母、数字、句点(.)、连字符(-)和下划线(_)。注意,冒号(:)一般用于命名空间,以xml的元素名称被"XML规范"保留使用。
例子:
<group>
    <person />
    <person name="andy">
        <age>21</age>
        <sex>male</sex>
    </person>
</group>

属性
元素用属性来描述。属性被串行化在元素的起始标记中。属性表示为用等号(=)分开的名/值对。属性值是自然的文本形式,出现在单引号对('')或双引号对("")的内部。元素可以有任意数目的属性,但名称必须不同。
例子:
<group>
    <person name="andy" age="21" sex="male" />
</group>

CDATA段
CDATA段用来"块转义"文字文本,起于<![CDATA[,止于]]>。在这两个字符序列之间,XML处理程序忽略所有的标记符号,如大于号(>)、小于号(<)、&号。在CDATA段中,唯一可以被XML处理程序识别的是终止字符序列]]>。注意,CDATA段不能嵌套。
例子:
<sometext>
    <![CDATA["x < y" & "z > y"]]>
</sometext>

处理指令
处理指令通常用来为处理XML文档的应用程序提供信息。这些信息包括指令如何处理文档,如何显示文档等。处理指令可以作为元素的后代出现,也可以作为文档的顶层结构出现在文档元素的前面或者后面。处理指令由两部分组成:处理指令的目标或名称以及数据或信息。处理指令的语法形式为<?target data?>。目标的构造规则与元素名和属性名的构造规则一样。除了终止字符序列?>以外,在处理指令内容过程中所有标记都会被忽略。
例子:
<?display table-view?>

注释
注释不能用来编码真实的数据。注释可以作为元素的后代出现,也可以作为顶层结构出现在文档元素的前面或者后面。注释起于<!--,止于-->。字符序列--不能出现在注释中。其他标记符号如小于号、大于号、&号都可以出现在注释中,且不会被视作标记符号。注意,出现在注释中的实体引用不会被识别。
例子:
(合法的注释)
<!--<注释>&文本-->
(不合法的注释)
<!--注释文本--->

良构的XML文档
所有的XML文档都应该是良构的。良构的XML文档应该是这样的:所有的构造从语法上讲都是正确的;只有一个顶层元素;所有的起始标记都有与之相对应的终止标记,或者使用空元素速记语法;所有的标记都正确嵌套;元素的所有属性都使用不同的名字。如果属性是命名空间限定的,那么命名空间名称和本地名的组合命名空间一定不能重复。同样,一个元素的所有命名空间声明必须赋予不同的前缀。所有使用过的命名空间前缀在作用域里必须有与之对应的命名空间声明。
 posted on 2008-04-01 19:02  巴别塔工人  阅读(616)  评论(0编辑  收藏  举报