XML

本文介绍了XML的基本概念及其与HTML的区别,探讨了XML的设计目的、自定义标签特性及文档结构,同时展示了XML的语法规则和一些实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

      看到XML的第一反映就是,XML又是什么鬼,是HTML的近亲还是远方亲戚呢?带着这个疑问,咱们先上一张图体会一下:

          

      从上图可以看出,XML是HTML的近亲,是有SGML和HTML共同演化而来的。SGML主要用于大量高度结构化数据的分类和索引,人们对SGML进行了简化衍生出了HTML,但是HTML不能解决所有解释数据的问题,像是影音文件或化学公式、音乐符号等其他形态的内容等问题,为了解决以上问题,专家们使用SGML精简制作,并依照HTML的发展经验,产生除了使用上规则严谨,但是简单的描述数据语言:XML。

XML是什么

       XML的全称为EXtensible Markup Language,指可扩展标记语言。XML的设计宗旨是传输数据,而HTML的作用是显示数据。另外我们需要知道XML仅仅是纯文本,没有任何行为,我们需要编写软件或者程序,才能传送,接受和显示出这个文档。

XML 与 HTML 的主要差异

<1>XML 和 HTML 为不同的目的而设计:

XML 被设计为传输和存储数据,其焦点是数据的内容。

HTML 被设计用来显示数据,其焦点是数据的外观。

<2>XML是把数据从HTML分离

如果你需要在 HTML 文档中显示动态数据,那么每当数据改变时将花费大量的时间来编辑 HTML。
通过 XML,数据能够存储在独立的 XML 文件中。这样你就可以专注于使用 HTML 进行布局和显示,并确保修改底层数据不再需要对 HTML 进行任何的改变。
通过使用几行 JavaScript,你就可以读取一个外部 XML 文件,然后更新 HTML 中的数据内容。

<3>自定义标签和预定义标签

XML没有预定义的标签,允许创作者定义自己的标签和自己的文档结构。而HTML中使用的标签都是预定义的,而且只能使用在HTML标准中定义过的标签(比如<P1>,<h1>等等),浏览下一部分“XML树结构”中的实例可有助于理解。

HTML 旨在显示信息,而 XML 旨在传输信息。XML 不是 HTML 的替代。

XML树结构

XML文档形成了一种树结构,它从“根部”开始,然后扩展到“树叶”,且XML文档必须要有跟元素。实例如下:


第一行是XML的声明。它定义了XML的版本(1.0)和所用的编码(utf-8)。

第二行描述文档的根元素:书籍列表

第三行描述“书籍列表”的子元素:计算机书籍

接下来的三行描述子元素“计算机书籍”的子元素:书名,价格和简要介绍

最后两行分别为子元素“计算机书籍”和根元素“书籍列表”的结尾

XML元素

元素是开始标签、结束标签以及位于二者之间的所有内容。

在上例中,<书籍列表>和<计算机书籍>都拥有元素内容。<书名>只有文本内容,因为它进包含文本。

语法规则:

所有XML元素都须有关闭标签;

XML标签对大小写敏感,必须使用相同的大小写来打开标签和关闭标签;

XML必须正确地嵌套。例如:<b><i>This text is bold and italic</i></b>,由于 <i> 元素是在 <b> 元素内打开的,那么它必须在 <b> 元素内关闭;

XML文档必有根元素,也就是说XML文档必须有一个元素是所有其他元素的父元素;

XML的属性值须加引号,可以使用单引号,也可以使用双引号,但要始终保持一致;

XML属性

XML元素可以在开始标签中包含属性,类似HTML。但是属性必须加引号,不过单引号和双引号均可使用,比如一个的性别,peison标签可以这样写:

<person sex="female">

也可以这样写:

<person sex='female'>

元素VS属性

<person sex="female">
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person> 

<person>
  <sex>female</sex>
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person> 
在第一个例子中,sex 是一个属性。在第二个例子中,sex 则是一个子元素。两个例子均可提供相同的信息。

没有什么规矩可以告诉我们什么时候该使用属性,而什么时候该使用子元素。在 HTML 中,属性用起来很便利,但是在 XML 中,应该尽量避免使用属性。如果信息感觉起来很像数据,那么请使用子元素吧。

避免使用属性,而使用元素可以有以下好处:

  •     属性无法包含多重的值(元素可以)
  •     属性无法描述树结构(元素可以)
  •     属性不易扩展(为未来的变化)
  •     属性难以阅读和维护

XML实体引用

实体引用,其实就相当与转义符。例如“<”或“>”在XML中拥有特殊的意义,如果把这些符号放在XML元素中,容易引起混淆,为了避免混淆,提供了实体引用如下:

&lt;<
小于

&gt;>大于
&amp;%和号
&apos;'单引号
&quot;"双引号

XML CDATA

术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。在 XML 元素中,"<" 和 "&" 是非法的。"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。

某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代码定义为 CDATA。CDATA 部分中的所有内容都会被解析器忽略。

CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束:

<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
  {
  return 1;
  }
else
  {
  return 0;
  }
}
]]>
</script>
在上面的例子中,解析器会忽略 CDATA 部分中的所有内容。

结语

用XML来交换数据真的是相当方便,初步学习,已经感受到了XML的伟大,后续还得深入学习,Faight!

评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子松的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值