XML基础与应用

来源:互联网 发布:英国本科留学费用 知乎 编辑:程序博客网 时间:2024/05/20 08:02

??XML

Extensible markup language,可扩展性标记语言,通过信息进行标记,计算机根据标记进行识别处理。XMLHTML便是两种相似而又各有千秋的标记语言,两者有着类似的功能和定义。

??Xml的基本结构

1、创建XML

简单的声明或者加上XML的版本、字符编码,告诉浏览器这个文件应该按照XML规则进行解析。

      <?xml version=”1.0” encoding=”utf-8”?>
  2、创建根元素

根元素的开始和结束标记用于包围 XML文档的内容。一个文件只能有一个根元素

     <?xml version=”1.0” encoding=”utf-8”?>        <flower>        ……       </flower>
  3、命名元素

  flower作为根元素,给元素起好名字,根据名称定义相应的DTD或者schema

    <?xml version=”1.0” encoding=”utf-8”?>      <flower>        <flowername>Rose</flowername>         <price>10 RMB</price>      </flower>

??XML的特点

相较于HTML而言,XML可自行创建元素,且大小写区分,精确的表达自己的信息,文档看作仅由标题和段落组成(HTML的结构)。为提高效率,可定义好一定数量的元素,然后统一使用(可在DTD或者schema中定义元素)。

XML主要用于传输和存储信息,焦点是信息的内容,而HTML主要着重于显示信息,焦点是信息的布局和显示,在识别信息方面不如XML。由此可以看出XML并不是为取代HTML而生的,两者同为标记语言,好比两姐妹一高一矮,一胖一瘦,但彼此发展目标不同,所以都有各自存在的必要和意义。


??结构良好的XML

  DTD的引入:

目的在于对文档的格式进行约束,确定标记、元素、属性和实体等内容,使得发送方和接收方对消息有相同的理解。(为了实现验证,必须在 XML文档的顶部附近包含文档类型(DOCTYPE)。

内部DTD:DTD信息写入XML文档中

    <?xml version=”1.0” encoding=”utf-8”?>      <!DECTYPE 花            <!--花为XML根名-->   [     <!ELEMENT  花(种类,颜色)>    <!--若包含子元素,则按顺序写好-->     <!ELEMENT  种类(#PCDATA)>   <!--若不包含子元素,只包含文本内容则用#PCDATA表示-->     <!ELEMENT  颜色(#PCDATA)>  ]>     <花>       <种类>玫瑰</种类>        <颜色>红色</颜色>    </花>

外部DTDDTD写好另存档,在需要使用的XML文档中添加引用,便于共享和扩展

    <!DECTYPE 花 SYSTEM “flowerDTD.dtd”    <!--flowerDTD.dtd 为该DTD的地址-->    [      <!ELEMENT  花(种类,颜色)>    <!--若包含子元素,则按顺序写好-->      <!ELEMENT  种类(#PCDATA)>    <!--若不包含子元素,只包含文本内容则用#PCDATA表示-->      <!ELEMENT  颜色(#PCDATA)>    ]>      <花>         <种类>玫瑰</种类>        <颜色>红色</颜色>      </花>

   根元素到底叫<>还是<flower>,是先写种类还是颜色,都是由DTD定义的。如果与DTD定义的顺序、名称不一致,便会报错为不合法XML。

??XML的主要应用

用于传送即携带数据信息:

即说明数据是什么,而非表现或者展示数据。XML定义结构、存储信息、传送信息。下例为Max发送给Jayemail,存储为XML

     <?xml version="1.0"?>

       <email>

        <收件人>Jay</收件人>

        <发件人>Max</发件人>

        <主题>attend a meeting </主题>

        <邮件内容> please attend the meeting on time ! </邮件内容>

      </email>

  上述例子中使用的仅是纯粹的信息标签,存储了这封邮件的所有相关信息。

编写配置文件:

由于xml携带数据方便,非常方便的通过JavaAPI来读取,同时可跨平台传递数据,故常用作配置文件对数据进行包装和传输。所以我们在用vs进行编程时,config文件中的代码有没有似曾相识的感觉?XML无处不在!

  应用于数据库:

  关系数据库对我们而言并不陌生,机房收费系统实践中也初步尝试使用配置文件访问数据库。这样做的好处主要在于当数据库发生改变,比如把SQL server数据库改成了oracle,则只需要更改配置文件即可。

另外,还可以完全基于XML来实现对数据库的管理和操作。例如,当我们需要管理的信息是一个学生名单,每个记录是一个学生的基本信息,包含姓名、专业两个字段。这个名单在关系数据库中就是一张再简单不过的表了,而在XML中,我们需要下面这样一个DTD

<!DOCTYPE DOCUMENT [   <!ELEMENT DOCUMENT (Info)*>   <!ELEMENT Info(name,major)>   <!ELEMENT name(#PCDATA)*>   <!ELEMENT major(#PCDATA)*>  ]>       <Info>     <name>钟艾伶</name>     <major>计算机</major>   </Info>

由此,我们就有了一个存储学生信息的XML文件,类比于数据库中的一张表,也简单的体现了XML与数据库之间的交互。

但值得注意的是,XML并不适用于大型数据库,由于XML自身的树结构特点,应用DTD每次都要对文档和使用的DTD进行分析获得数据,这样的操作相对于关系型数据库的处理速度而言,是非常慢的,且系统开销很大。而XML的特点在与它的可读性,由上例子可知,用户可以阅读和编辑XML文件以实现修改数据等操作,但这也造成了它可被不同用户修改并发访问,这一点也会造成问题。

鄙人愚见,欢迎诸位多多批评指教。


0 0
原创粉丝点击