浅读XML技术(二)

    在上一篇文章中我们初步认识到了XML技术,并知道XML的主要作用以及它与HTML和数据库之间的区别和联系。在今天的
文章中我们将进一步解读XML语言的细节知识,主要包括它的语法规则。
     像任何一门技术性语言一样,XML也提供了自己开发规范,具体的说就是在XML的语法规则。那么XML有那些基本的语法呢?
下面我们将对它的基本语法进行一个简单的介绍
    (一)文档声明
     一个完整的XML文档必须包括一个XML的文档声明,虽然在某些XML文档中我可以不使用文档声明来标识自己是一个XML文件
但是这样的XML文档我们可以认为它不是一个完整的XML文档。简单的XML文档声明如下:
      <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
首先我们要注意的是在一个<和?之间和最后一个?和>之间不能出现任何空格,并且在第一个?和XML之间也不允许出现任何空格
在第二个?之前可以没有,也可以有一个或多个空格。声明中的version声明此XML文档所遵循的XML版本,不同的解析器对不同
版本的XML会有很大的不同,虽然现在XML的版本只是1.0,但是在文档声明中必须设置version的属性。encoding属性指定了解析器
以什么样字符集来解析XML中的数据。encoding的默认属性是"Unicode"当我们没有设置encoding的属性的时候,解析器便会按照
UTF-8或者UTF-16(具体情况看开发者在开发文档时采用的字符集编码),来解析文档内容,当解析器在解析的过程中发现任何错误时
就会报错,从而停止解析。
    standalone的属性设置表明XML文档的存在是否倚赖于其他的文件。我们知道XML的最大作用就是承载数据,并且把数据内容
和显示分离。那么XML文档的样式到底是怎么控制的呢。我们可以通过CSS或XSL来对XML文档的格式进行控制,那么这样CSS,XSL
便和XML紧密的联系在了一起,那么XML的存在就对其他的文件产生了倚赖性。这样的声明就可以通过对standalone属性的设置来
告诉解析器。即把standalone的值设置为‘yes'.一般的XML的文档是受到其他元语言文档来约束的,所以XML在一般的情况下都会
倚赖外部的文件,固而standalone的属性默认被设置成了’yes'.
    (二)文档元素的定义。
    如同HTML语言一样,一个XML文档也是由多个元素组成的。在XML文档中的元素包括开始和结束标记和其中的内容。如
<servlet-name>TestServelt </servlet-name>便是一个完整的XML元素。而标记的作用就是用来标记元素的内容,标记名也
就是元素名。一个XML元素中可以嵌套多个子元素。没有嵌套在任何元素内的元素叫做XML文档的根元素。格式良好的XML文档
必须有且只有一个XML的根元素,其他元素都是这个元素的子孙元素。
    在XML规范中规定,一个开始标记必须匹配一个结束标记。而这在HTML中却没有限定。此外当一个XML的开始标记和结束标记
之间没有任何内容的元素叫做空元素。我们也可以在一个标记之内的末尾加上/来表示这是一个空元素。如<Context url="..."/>
这就是一个空元素。
    XML元素的标记名称中可以包含字母,数字和其他一些可见字符。但必须遵守以下规定。
    1,区分大小写,例如<Context>和<context>是两个完全不同的标签。
    2,不能以数字和下划线开头(在JAVA的语言规范中我们只定义了所以的命名不能以数字开头).
    3,  不能以任意大小写字符组合xml开头
    4,不能包含空格
    5,名称中间不能有包含冒号。
   (三)属性定义
   与HTML一样,XML也可以设置自己元素的属性。但是与HTML不同的是HTML的属性属性值可以用“或‘引起来,或者不使用任何引号。
而在XML中,属性值一定要用”或’引起,否则被视为错误。属性也可以被设置能子元素来表达同样的意思。属性不容易被扩展,但程序
处理的速度比设置子元素的时候要快。
   (四)注释
   XML的注释方法和HTML相同。
   (五)回车换行
   在HTML中当元素中有回车换行时,最后总是显示为一个空格。而XML中却要把这些符号如实的交给下游程序去处理
   例如
   <servlet-name>
            TestServlet
   </servlet-name>
   和
   <servlet-name>TestServlet</servlet-name>是两个完全不同的元素。因为前者包含了回车和换行,这在数据处理时也会把这些符号
所对应的数据来对待。<a name=""></a>
    (六)CDATA区
    在日常工作中,有时我们会碰到嵌套在<![CDATA[XXXXXXX]]>这样的标记。我们把这种标记和其所包含的数据叫做CDATA区。CDATA区指的是
不被XML解析器解读而直接交给其他程序的数据区。也就是说XML解析器不会解析CDATA区里面的任何数据,而是把它们原封不动移交。这样我们就
可以在CDATA区存放任何字符而不怕被XML解析器误解(比如在里面出现的<和>号)。但是我们依然要注意在CDATA区中出现回车换行依然会如数的
被移交。
  (七)特殊字符
   在HTML文档中和XML文档中我们都会遇到一些特殊的字符,如果我们不对这样的字符进行处理那么很有可能引起解析器的误解,从而导致程序出错。
比如在文档中的出现的<,>,&,",'等符号很容易引起程序的误会。在HTML中我们把用来替代这些符号的字符叫做转意字符。但是在XML中我们把这些字符
叫做预定义实体。在XML中常用的预定义实体必须以分号结尾,否则解析器不会把这样的字符串看作是一个个的预定义实体,而是把他们当作一个个普通的
字符对待。在XML中常用的预定义实体有:
   & ----->&amp;
   < ------> &lt;
   > ------->&gt;
   " -------->&quot;
   ' -------->&apos;
   (八)处理指令
   处理指令是简称PI,是用来处理XML文档的应用程序提供的指示信息。处理指令以<?开头和?>结尾。XML文档的文档声明就是一种最常见的处理指令。
在XML解析过程中会把处理指令原封不动的传给应用程序,由应用程序来解释这个指令,按照它所提供的信息进行处理。例如用以下处理指令来告诉
应用程序XML的文档样式是由一个CSS文件来控制的。
  <?xml -stylesheet type="text/css" href="test.css" ?> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值