首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

4.2.2  XML基础

之前说过XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。用户可以定义自己需要的标记。这些标记必须根据某些通用的原理来创建,但在标记的意义上,也具有相当的灵活性。在XML文档中,既可以借用别人已经定义好的标记,也可以自己制作标记来使用。例程4-3是一份简单XML文档:

例程4-3  sample4_2.xml

<?xml version="1.0" encoding="GB2312"?>

<book>Ajax开发详解</book>

这份XML文档可以用浏览器打开显示,效果如图4-4所示。

4-4  一份简单的XML文档

在这份文档中,<book>…</book>并非已经定义的专用标记,用户完全可以按照自己的习惯和喜好命名,比如<bookname>…</bookname>。但是,XML标记和文档的建立不是随意的,必须符合一定的规范,即该XML文档必须是形式良好的。如果某个XML文档不是形式良好的,就不能被应用程序和浏览器正确地识别和解析。接下来看看形式良好的MXL文档所要遵循的基本规范。

一个XML文档由两个部分组成:一部分是序言,包括文档声明、注释、空白;另一部分是文档元素,这两者是必需的。这两者之外,用户还可以选择性地包含注释、处理指令,以及空白。

XML文档声明由“<?xml”开始,以“?>”结束,这个声明的作用在于告诉XML处理程序:该文档是按照XML文档规范对数据进行组织的。XML声明至少应该提供文档所用的版本号,即<?xml version=”1.0”>。除了版本号外,还有两个属性可选:编码(encoding)声明和独立文档(standalone)声明。

版本声明指明文档所采用的XML版本号,必须排在第一位。目前1.0是惟一可用的版本。这个属性是XML文档声明必需的。

编码声明则指明该文档所使用的编码方式,是可选属性。XML默认的字符集是UnicodeUnicode是一种双字节字符,可以标识当今使用的大多数字符包括汉字。UTF-8Unicode的压缩版本,而UTF-16则是Unicode的双字节编码实现。如果文档不使用默认的Unicode编码方式,则必须为encoding属性指定一个编码方式。中文简体采用GB2312编码,繁体中文则采用BIG5编码。例程4-2就是采用GB2312编码方式。对于某些XML处理程序而言,GB2312有时候会出现中文乱码的情况。所以建议读者根据实际情况选择合适的编码方式,UTF-8GB2312BIG5或者ISO8859-1

独立文档声明指明该文档是否有外部的标记声明文件相配套使用,属性取值为“yes”或者“no”。这也是可选属性。

XML声明是大小写敏感的,不可以用“<?XML”或者其他形式。而且,XML声明必须在文档的最前面,之前不能出现任何的空白或者注释。

XML文档注释以“<!--”开始,以“-->”结束。在解析的时候,这些注释内容会全部被XML处理程序忽略不显示。这些注释内容不能出现在XML声明之前,也不能放在任何标记当中;不过,可以包围和隐藏标记。另外,“--”只能作为注释起始和结束标志,不能出现在注释内容当中。

处理指令被用来为XML处理程序提供信息,以“<?处理指令名称 处理指令信息?>”的格式呈现。比如:

<?xml-stylesheet type="text/xsl" href="ex1.xsl"?>

这个指令指明了与其所属文档配套使用的样式表的类型为XSLeXtensible Style sheet Language),文件名称为ex1.xsl,并且与该XML文档在同一个目录下。在显示XML文档内容的时候,为XML文档指定相应的XSL是一种比较快捷的方式。如果没有指定样式表,则浏览器按照自己默认的样式呈现文档内容,IE浏览器将文档源码呈现出来,如图4-4所示。

XML空白是指由一个或者更多的空格符、制表符、回车符、换行符等组成的字符或者字符串。通常,为了使XML文档显示起来更直观,在开始标记、结束标记、注释、处理指定等地方添加空白是必要的。

元素是XML文档信息内容的载体,是基本的逻辑单元。数据之间的逻辑关系和层次结构也通过元素来体现。一个元素通常这样组成:一个开始标记,然后是元素内容,最后是结束标记。这有点类似闭合的HTML标记,比如例程4-3提到的:

<book>Ajax开发详解</book>

其结构如图4-5所示。

4-5  XML文档元素格式

为自定义标记取名称的时候,可以采用中文或者英文,但是名称必须以一个字母或者下划线开始。开始标记的名称必须与结束标记的名称一致,包括所有字母的大小写。

元素内容可以是嵌套的元素,单层或者多层的嵌套都可以。比如:

<book>

    <chapter>1</chapter>

    <chapter>2</chapter>

</book>

元素内容也可以是字符数据。这种情况下,内容就是表示一个元素的信息内容的文本,比如例程4-3<book>标记中的内容。但是内容中不能包含小于号(<)、连字符(&)、或者字符串]]>。因为XML文档解析器会将<字符误认为一个嵌套元素的开始,把&误认为一个字符引用的开始,把]]>误认为一个CDATA片段的结束。

元素内容有时候是一个字符引用,包括实体引用和字符引用。实体实际上就是数据或者资源。XML文档可以引用已经定义的实体。

另一个比较常用的元素内容类型是CDATA片段。这是一个以“<![CDATA[”开始,以“]]>”结束的文本块。CDATA片段的内容将不会被解析,而是全部显示。字符数据段中除了不能有结束标志“]]>”外,还可以插入任何的字符或者字符序列,包括之前的“<”、“&”字符。比如:

<book>

    <![CDATA[

        <chapter>

            4

        </chapter>

    ]]>

</book>

XML文档中,空元素也是允许的。可以使用一个空元素告诉XML应用程序执行某种行为或者显示一个对象,或者通过空元素的属性来存储信息。空元素的格式不要即:不要写成…形式写成开始标记与结束标记的形式,直接以“<元素名称/>”的形式呈现。

XML元素可以拥有自己的属性,这是让文档包含有关信息的一种简单的方式。属性说明及其取值成对出现,中间以等号(=)分隔开,两者均为字符串。每个元素可以包含零个或者多个属性。属性通常被用来表现那些与元素内容无关的简单数据,或者不希望呈现给用户的非结构化数据。属性的命名必须符合如下的规则:

属性名以一个字母或者下划线开始,名称中不能含有空格。

同一个元素不能有两个同名的属性,即属性在元素中只能出现一次。

属性名是区分大小写的。

带有前缀“xml”开始的属性名为标准保留字,不允许使用。

属性取值则是由引号界定的一系列字符,也应该遵守如下相应的规则:

属性取值由引号界定,可以使用单引号或者双引号,但必须配对出现。

属性取值字符串不能包含用于界定它的同种引号,不能包含<字符。

属性取值不能包含&字符,除非以一个字符或者实体引用开始,比如“Cold& Windy”。

如果一个元素a位于另外一个元素b的内部,即a的开始标记和结束标记被嵌套在b的开始标记和结束标记之中,则元素b包含了元素a。比如:

<book>

    <chapter>1</chapter>

    <chapter>2</chapter>

</book>

元素<chapter>包含在元素<book>之中。在这种情况下元素b称为元素a的父元素,元素a则为元素b的子元素。类似的多个层次结构,即使XML文档构成树状层次结构,根元素称为树根,不含子元素的为树叶,其他元素为分枝。按照XML规范的要求,一个形式良好的XML文档只能有一个顶层元素即根元素,所有另外的元素都嵌套在它里面。例程4-4是一个以本书章节目录为数据的XML文档,其指定编码方式为GB2312IE浏览器显示效果如图4-6所示。

4-6  一个完整的XML文档

例程4-4  sample4_3.xml

<?xml version="1.0" encoding="GB2312"?>

<book title="Ajax开发详解">

    <chapter name="1 Ajax介绍">

        <section>Ajax的由来</section>

        <section>Ajax的定义</section>

        <section>Web应用程序的解决方案</section>

        <section>Ajax的工作方式</section>

        <section>小结</section>

    </chapter>

    <chapter name="2 B/S请求响应机制与Web开发模式">

        <section>HTTP请求响应模型</section>

        <section>B/S请求响应机制</section>

        <section>Web开发模式</section>

        <section>开发环境的设置与配置</section>

        <section>小结</section>

    </chapter>

</book>

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论