XML介绍

Extensible Markup Language,可扩展标记语言。

XML 不会替代 HTML,理解这一点很重要。在大多数 Web 应用程序中,XML 用于传输数据,而 HTML 用于格式化并显示数据。

对 XML 最好的描述是:XML 是独立于软件和硬件的信息传输工具。
XML出现的根本目标就在于,描述在现实生活中经常出现的有关系的数据。
在XML语言中,它允许用户自定义标签,一个标签用于描述一段数据,一个标签可以分为开始标签和结束标签,在开始标签和结束标签之间,又可以使用其他标签描述其他数据,以此来实现数据关系的描述。

除了描述有关系的数据,还用做软件的配置文件,描述程序模块之间的关系:
比如一个软件在启动时,需要启动A和B两个模块,但是A和B两个模块在启动时有需要启动A1、A2和B1、B2模块,那么这种关系用XML文件来描述也是最合适不过的了。
(xml最开始是为了替代html的,但是显然失败了)

一个XML文件分为如下几个部分:

1. 文档声明;
2. 元素(标签);
3. 属性;
4. 注释;
5. CDATA区,特殊字符;
6. 处理指令(processing instruction)

1.文档声明

编写XML文档的时候,首先要进行文档声明,声明XML文档的类型。有文档声明的XML文件才是格式良好的文档。

最简单的声明语法:

<?xml version="1.0" ?>

声明了XML的版本号是1.0,没有其他信息。注意,其中前面的和?之间的空格是英文半角空格,不是中文的全角空格,不能出错。
如何检测一个XML文件的文档格式是否正确,就是直接右键把这个文件用IE浏览器打开,如果可以打开,就说明格式首先没问题。IE可以当做一个XML的解析工具。

在文档声明里也可以增加encoding属性,说明文档的字符编码:

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

这里的编码就是UTF-8,一旦文档里有中文数据,那么一定要告诉解析引擎用什么编码来处理中文,如果没有encoding属性告诉用什么编码处理,就会报错。

有些时候,用记事本编辑这样第一个xml文件:

<?xml version="1.0" encoding="UTF-8" ?>
<soft><a><a1>中国</a1><a2></a2></a><b><b1></b1><b2></b2></b>
</soft>

再次打开ie会打不开,又是乱码问题(我的电脑没有这种情况),原因是因为,虽然这个xml文件声明UTF-8的编码,但是在保存的时候,是记事本这个软件保存的,保存在内存里,是要进行编码的,那么,记事本的默认保存的时候,进行编码的码表可能不是utf-8,因此再此用IE浏览器打开的时候,读硬盘,那么为了显示,读到字符的时候,为了显示内容,会用这个文档的最开始的utf-8编码,去解码,可能就会乱码。为了文档的通用性,那么在编写XML文件保存的时候,把软件都设置为编码格式是UTF-8编码会比较好
但是呢,如果我们用eclipse做开发,这些问题都不是问题了。

文档声明里还可以增加另外一个属性,standalone属性,它用来说明文档是否独立:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

当standalone属性为no的时候,依赖于别的文档。

2.元素(标签)

XML元素就是指XML文件中出现的标签,一个标签分开为开始标签和结束标签,书写形式可以包含标签体,也可以不包含标签体:

<a>www.baidu.com</a>
<a></a>

上面的标签a里面包含的就是标签体,下面的不含标签体的可以简写成</a>

标签中可以嵌套,但是不能交叉。(显然前面简介xml文档的时候已经知道了,内部嵌套的先开始肯定要先结束,因为他是层层包裹的)标签里嵌套的标签叫子标签。

格式良好的XML文档有且只能有一个根标签,其他都是这个根标签的子孙标签。父、子以及同胞等术语用于描述元素之间的关系。父元素拥有子元素。相同层级上的子元素成为同胞(兄弟或姐妹)。
所有的元素都可以有文本内容和属性(类似 HTML 中)。

对于XML标签中出现的所有空格和换行,XML解析程序都会当作标签内容进行处理。例如:

<网址>www.baidu.com</网址>

这段内容和:

<网址>www.baidu.com
</网址>

含义是不一样的:上面是一个网址标签,里面嵌套了内容。下面的网址标签里包含的还有换行和空格,对于解析引擎来说,是完全不一样的。

这是由于在XML中,空格和换行都作为原始内容被处理,因此不能为了让文件内容清晰可读,就乱加缩进和空格。

XML元素的命名规范:可以包含字母、数字以及其他一些可见字符,但是必须遵守下面的规范:

1. 区分大小写,例如,<P>和<p>是不同的标记
2. 不能以数字或下划线开头
3. 不能以xml(或XML或Xml等等)开头,类似java的关键字
4. 不能包含空格
5. 名称中间不能包含冒号

在 XML 中,一些字符拥有特殊的意义。如果把字符 “<” 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始,显然就像是一个新的标签。那么小于号想要表示,要用什么呢,要用&lt;
这是XML中的特殊字符实体引用:

在 XML 中,只有字符 “<” 和 “&” 确实是非法的。大于号是合法的,但是用实体引用来代替它是一个好习惯。

3.属性

一个标签可以有多个属性,每个属性都有他自己的名字和取值,并且属性值内容一定要用双引号或者单引号引起来,例如:

<input name="text">

定义属性的时候,遵循和定义标签一样的命名规范。

注意,在XML技术里,标签的属性代表的信息,也可以改成用子标签(子元素)的形式来描述,例如上面的input标签里有name属性,也可以改成这样:

<input><name>text</name>
</input>

(毕竟XML是用来保存数据,那属性值用子标签来封装也一样)

元素&属性:

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

第一个例子里,sex是属性,第二个例子里,sex是元素。

这两个例子提供了一样的信息。

W3C的建议是,在html里,属性用起来很方便,但是在XML里,应该尽量避免使用属性,而尽可能使用元素,为什么呢?

  • 属性不能包含多个值(元素可以)
  • 属性不能包含树结构(元素可以)
  • 属性不容易扩展(为未来的变化)

4.注释

XML中的注释采用和html一样的格式:

<!--注释内容-->

注释不能嵌套,并且 一定要写在文档声明之后,想想,文档声明声明了这个文档是XML格式,然后下面注释的格式才能被识别出来这是注释。

5.CDATA区

在XML文档里有些内容不想让解析引擎解析执行,而是当做原始内容处理,就像上面的特殊字符,说过了的例子,"<" 会产生错误,因为解析器会把该字符解释为新元素的开始;"&" 会产生错误,因为解析器会把该字符解释为字符实体的开始。

那在某些文本,比如 JavaScript 代码,包含大量 “<” 或 “&” 字符。为了避免错误,可以将脚本代码定义为 CDATA。 CDATA 部分中的所有内容都会被解析器忽略解析程序不会处理而是直接原封不动的输出。

语法如下, 由 “<![CDATA[" 开始,由 "]]>” 结束:

<script>
<![CDATA[
function matchwo(a,b) {if (a < b && a < 0)then { return 1; }else{ return 0; }}]]></script>

(显然,变成CDATA的语法,后面增加了“]]>”,显然在CDATA的内容里就不能出现这个字符串, 不然就会出现错误)

6.处理指令PI

处理指令(PI,processing instruction),用来指挥解析引擎如何解析XML文档的内容。

例如在XML文档中可以使用xml-stylesheet指令,通知XML解析引擎,应用css文件显示xml文档的内容:

<?xml-stylesheet type="text/css" href="1.css" ?>

处理指令要以<?为开头,?>为结尾。看他的格式就可以发现,我们的XML文档开始的第一行文档声明的那一行其实也是一个处理指令。

那么其实XML文档来保存数据,然后用css文档来设置显示的格式。( 但是W3C 推荐用CSS格式化XML不常用,这组织推荐使用 XSLT+XML)

XML语言介绍以及语法讲解相关推荐

  1. javaweb学习总结七(XML语言作用、语法)

    一:XML语言的概念以及作用 1:xml概念:extensible Markup language,可扩展行标记语言,因为html的语法比较混乱,不够严谨. 用html写的系统不好维护,所以w3c组织 ...

  2. 网站建设学习(十四)——XML介绍及语法

    经过前一段时间的介绍,已经将前端基础大致介绍完毕,通过html,css,JavaScript可以设计出与用户具有一定交互性的动态页面,网站的建设还包括服务器以及数据库等等,接下来会按照开发步骤继续介绍 ...

  3. C语言代码示范与讲解+C语言编程规范及基础语法+编程实战

    上一篇文章:C语言程序设计概述+C语言简介+算法概述 C语言代码示范与讲解+C语言编程规范及基础语法+编程实战 一:代码示范集加讲解 1.C语言第一个代码:打印"This is the fi ...

  4. Go语言基础语法讲解与学习

    Go语言基础语法讲解与学习 1 Go语言基础知识介绍 ​ 介绍Go语言之前,我们先了解一下有哪些开源项目是Go语言开发的,其中就包括 Docker.Go-Ethereum.Thrraform 和 Ku ...

  5. 【C语言入门】SDUT《程序设计基础I 》实验1-顺序结构程序设计题解 c语言入门语法讲解

    SDUT<程序设计基础I >实验1-顺序结构程序设计题解 && c语言语法讲解 链接 前言: 为方便更多同学入门C语言, 特在此编写SDUT OJ c语言入门150题题解即 ...

  6. Flash ActionScript3 殿堂之路 第一章:ActionScript3语言介绍与开发环境

    本章简略介绍ActionScript3语言的历史.新增特色和开发工具,并讲解了各种开发环境设置,以及第一个ActionScript3程序. 本章导读 对于ActionScript3初学者,本章将带你了 ...

  7. 五十分钟带你看遍C语言初阶语法(总纲)

    C语言初阶语法(总纲) 此篇博客包含了前面C语言所有的基础语法,写这一期的博客不仅是为了记录自己的学习成果也是为了让更多的朋友能学到对自己有用的知识,如果总有一个知识点帮助到了你,给卑微博主点点关注加 ...

  8. (转)ASP.NET 脚本语言介绍

    (转自) http://www.72e.net/support/docread-99.aspx Asp.Net 脚本语言介绍 查看次数:117017   更新时间:2005-11-27        ...

  9. JSON JOLT介绍 及语法详解-shift篇

    有很多同学跟我反映  博客里的很多图都没了,真的很抱歉: 目前CSDN这里的博客不会再维护了,关于NIFI的文章会陆续在 https://nifichina.gitee.io https://nifi ...

最新文章

  1. 清华孵化,打造智能驾驶感控平台,超星未来获千万A轮融资
  2. Android网络之数据解析----SAX方式解析XML数据
  3. CompletableFuture API用法介绍(二)
  4. linux 安装软件_Linux:其它软件安装方式
  5. 全国计算机等级考试题库二级C操作题100套(第44套)
  6. redhat配置oracle yum源,Redhat5和6 YUM源配置的区别
  7. java栈最小值的实现,关于java:算法图解如何找出栈中的最小值
  8. QuartusII-项目工程的功能仿真
  9. 热敏电阻温度计算 公式 程序
  10. windows7 C盘清理(图解)
  11. html中背景简写,css中background简写属性
  12. 2022电工(初级)操作证考试题及模拟考试
  13. MODBUS TCP/IP通信协议及测试方法
  14. 关于人像后期处理基础的相关技术步骤
  15. 基于C++实现一个支持简单交互绘图小程序
  16. Python生成图片到visio的矢量图
  17. C/C++内存泄漏和野指针的区别
  18. 【技术整合】各技术解决方案与对应解决的问题
  19. python爬虫苏宁易购店铺商品数据爬取
  20. 将CentOS/ubuntu的目录添加到windows的网络位置/将centOS目录影射为windows网络驱动器

热门文章

  1. Win10系统自带的CPU和内存悬浮窗口
  2. 利用百度语音识别接口将语音转换成文字教程
  3. easyui dialog 中打开地图
  4. MATLAB GUI设计——绘图
  5. 一分钟教会你ai绘画如何使用
  6. 小米手机上锁BL锁方法
  7. UGUI原理学习笔记
  8. VR与AR:哪个有更大的潜力改变未来?
  9. 5款知乎大佬都说好用的软件,每一个都值得安装
  10. 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。