XML 出来接客了!

时间:2022-07-26
本文章向大家介绍XML 出来接客了!,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.1 XML 简介

1.1.1 概述

   XML 是可扩展标记语言,标准通用标记语言的子集。XML 的简单易于在任何应用程序中读/写数据,这使 XML 很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其他的数据交换格式,但不久之后它们都将支持 XML,那就意味着程序可以更容易的与 Windows、Mac OS、Linux 以及其他平台下产生的信息结合,然后可以很容易加载 XML 数据到程序中并分析它,并以 XML 格式输出结果。

1.1.2 发展史

   XML 有两个先驱:SGML 和 HTML,这两个语言都是非常成功的标记语言,但是都有一些与生俱来的缺陷。XML 正是为了解决它们的不足而诞生的。

SGML    早在 Web 未发明之前,SGML(Standard Generalized Markup Language,标准通用标记语言)就已存在,正如它的名称所言,SGML 是国际上定义电子文件结构和内容描述的标准。SGML 具有非常复杂的文档结构,主要用于大量高度结构化数据的访问和其他各种工业领域,在分类和索引数据中非常有用。    虽然 SGML 的功能很强大,但是它不适用于 Web 数据描述,而且 SGML 软件的价格非常昂贵;另外,SGML 十分庞大,既不容易学,又不容易使用,在计算机上实现也十分困难:不仅如此,几个主要的浏览器厂商都明确拒绝支持 SGML,这无疑是 SGML 在网上传播遇到的最大障碍。鉴于这些因素,Web 的发明者——欧洲核子物理研究中心的研究人员,根据当时(1989年)的计算机技术,发明并推出了HTML。

HTML    1989年,HTML 诞生,它抛弃了 SGML 复杂庞大的缺点,继承了 SGML 的很多优点。 HTML 最大的特点是简单性和跨平台性。    HTML 是一种界面技术,它只使用了 SGML 中很少的一部分标记,例如 HTML 4.0 中只定义了 70 余种标记。为了便于在计算机上实现,HTML 规定的标记是固定的,即 HTML 语法是不可扩展的。HTML 这种固定的语法使它易学易用,在计算机上开发 HTML 的浏览器也十分容易。正是由于 HTML 的简单性,使得基于 HTML 的 Web 应用得到了极大的发展。

XML的产生    随着 Web 应用的不断发展,HTML 的局限性也越来越明显地显现了出来,如 HTML 无法描述数据、可读性差、搜索时间长等。人们又把目光转向 SGML,再次改造 SGML 使之适应现在的网络需求。随着先辈的努力,1998年2月10日,W3C(World WideⅥiebConsortium,万维网联盟)公布 XML 1.0 标准,XML 诞生了。    XML 最初的设计目的是为了 EDI(Electronic Data Interchange,电子数据交换),确切地说是为 EDI 提供一个标准数据格式。    当前的一些网站内容建设者们已经开始开发各种各样的 XML 扩展,比如数学标记语言 MathML、化学标记语言 CML 等。此外,一些著名的 IT 公司,如 Oracle、IBM 以及微软等都积极地投入人力与财力研发 XML 相关软件与服务支持,这无疑确定了 XML 在 IT 产业的重要地位。 XML 不是 HTML 的替代,而是 HTML 的补充。在大多数 Web 应用程序中,XML 用于传输数据,而 HTML 用于格式化并显示数据。

1.1.3 特点

   XML 可以共享数据。XML 数据以纯文本格式存储,这使得 XML 更易读、更便于记录、更便于调试,使不同系统、不同程序之间的数据共享变得更加简单。    XML 可以充分利用数据。XML 是与软件、硬件和应用程序无关的,数据可以被更多的用户、设备所利用,而不仅仅限于基于 HTML 标准的浏览器。其他客户端和应用程序可以把 XML 文档作为数据源来处理,就像操作数据库一样,XML 的数据可以被各种各样的“阅读器”处理。    总之,XML 使用一个简单而又灵活的标准格式,为基于 Web 的应用提供了一个描述数据和交换数据的有效手段。但是,XM L并非是用来取代 HTML 的。HTML 着重如何描述将文件显示在浏览器中,而 XML 与 SGML 相近,它着重描述如何将数据以结构化方式表示。

1.2 XML 基本语法

1.2.1 声明

  XML 首行必须定义为文档声明,如下所示:

<?xml version="1.0" encoding="utf-8"?>

1.2.2 标签

  XML 必须包含根元素,它是所有其他元素的父元素,文档中有且仅有一个根标签。XML 标签对大小写敏感。标签 <Letter> 与标签 <letter> 是不同的。必须使用相同的大小写来编写打开标签和关闭标签。

<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

1.2.3 属性

  与 HTML 类似,XML 元素也可拥有属性(名称/值的对)。在 XML 中,XML 的属性值必须加引号。

<note date="12/11/2007">
	<to>Tove</to>
	<from>Jani</from>
</note>

1.2.4 注释

  在 XML 中编写注释的语法与 HTML 的语法很相似。

<!-- This is a comment -->

1.3 XML 元素

1.3.1 什么是 XML 元素

  XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。一个元素可以包含:其他元素、文本、属性或混合以上所有

<?xml version='1.0' encoding="UTF-8" ?>
<bookstore>
    <book category="CHILDREN">
        <title>Harry Potter</title>
        <author>J K. Rowling</author>
    </book>
    <book category="WEB">
        <title>Learning XML</title>
        <author>Erik T. Ray</author>
    </book>
</bookstore>

1.3.2 XML 元素是可扩展的

  可扩展标记语言,见名只意,他的标签是可以扩展的,以携带更多的信息。

<?xml version='1.0' encoding="UTF-8" ?>
<users>
    <user id='001'>
        <name>tom</name>
        <age>18</age>
        <gender>male</gender>
        <br/>
    </user>
    
    <user id='002'>
        <name>jack</name>
        <age>18</age>
        <gender>female</gender>
    </user>
</users>

  XML 语法严格,标签可以自定义,主要用来存储数据。如果想要数据原样展示可以使用 CDATA 区<![CDATA[ 数据 ]]>

1.3.3 XML 命名规则

XML 元素必须遵循以下命名规则:   ♞ 名称可以包含字母、数字以及其他的字符   ♞ 名称不能以数字或者标点符号开始   ♞ 名称不能以字母 xml(或者 XML、Xml 等等)开始   ♞ 名称不能包含空格 可使用任何名称,没有保留的字词。

1.4 XML 约束

1.4.1 什么是 XML 约束

  由于 XML 是可扩展的,里面的标签都是可以自定义的,只要符合 XML 的最基本要求,那么就可以写一个 XML 文件。但是在实际应用中,我们需要指定一个规范,来约束 XML 的编写方式,这个规范就是 XML 约束。一般使用的约束有:   ♞ DTD 约束:语法简洁,共能比较单一;因为简单,他有漏洞。   ♞ Schema 约束:语法复杂,功能比较强大。

1.4.2 DTD 使用方法

内部 DTD:将约束规则定义在xml文档中

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE users[
    <!ELEMENT users (user+) >    
    <!ELEMENT user (name,age,addr) >    
    <!ELEMENT name (#PCDATA) >    
    <!ELEMENT age (#PCDATA) >    
    <!ELEMENT addr (#PCDATA) >    
]>
<users>
    <user>
        <name>zhangsan</name>
        <age>23</age>
        <addr>shanghai</addr>
    </user>
    <user>
        <name>lisi</name>
        <age>24</age>
        <addr>beijing</addr>
    </user>
</users>

外部 DTD:将约束的规则定义在外部的dtd文件中

<?xml version="1.0" encoding="UTF-8"?>
<!-- 一种是 SYSTEM 系统外部约束文档,也就是 xml 文档和 dtd 约束文档都在同一台机器上 -->
<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">
<!-- 一种是 PUBLIC 公共外部约束文档,需要通过网络把 dtd 文档下载到本地 -->
<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">
<users>
    <user>
        <name>zhangsan</name>
        <age>23</age>
        <addr>shanghai</addr>
    </user>
    <user>
        <name>lisi</name>
        <age>24</age>
        <addr>beijing</addr>
    </user>
</users>

1.4.3 Schema 使用方法

<!-- 
	xml 文档的根元素
		xmlns:xsi : 这里必须是这样的写法,也就是这个值已经固定了。
    	xmlns : 这里是命名空间,也固定了,写的是schema里面的顶部目标名称空间
    	xsi:schemaLocation : 有两段: 前半段是命名空间,也是目标空间的值 , 后面是约束文档的路径。
     -->
<students 
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xmlns="http://www.test.cn/xml"
		xsi:schemaLocation="http://www.test.cn/xml  student.xsd">

说明   在每个 xml 文件中,我们都会看到xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"这个命名空间是实例命名空间,我们在 xml 中引入的 schema 实例,都必须和http://www.w3.org/2001/XMLSchema-instance进行绑定,绑定是通过一个前缀进行绑定。实例命名空间的前缀可以修改,但必须保持一致。