XML介绍

1、什么是 XML文件?

  XML即可扩展标记语言(eXtensible Markup Language)。标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。

  通俗的讲,XML文件一般用来保存有关系的数据。除此之外,在程序开发中,我们通常用来做各种框架的配置文件。

2、XML 文件由以下几个部分组成:

  ①、文档声明

  ②、元素

  ③、属性

  ④、注释

  ⑤、CDATA区、特殊字符

  ⑥、处理指令(processing intruction)

一、文档声明

  在编写 XML 文档时,需要首先使用文档声明,声明 XML 文档的类型。

  ①、最简单的语法:

    <?xml version="1.0" ?>

  ②、用 encoding 属性说明文档的字符编码:

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

    常见的字符编码:gbk,gb2312,utf-8,基本上我们使用utf-8,全世界通用,不会出现乱码的现象。

  ③、用 standalone 属性说明文档是否独立:

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

    standalone有两个属性,yes和no。如果是yes,则表示这个XML文档时独立的,不能引用外部的DTD规范文件;如果是no,则该XML文档不是独立的,表示可以用外部的DTD规范文档。

二、元素

  ①、XML 元素指的是 XML 文件中出现的标签,一个标签分为开始标签和结束标签,分为两种写法:

    1、包含标签体:<user>Tom</user>

    2、不包含标签体:<user></user>,也可以简写为<user/>

  ②、一个标签中也可以嵌套其他的若干个子标签。但所有的标签必须合理的嵌套,绝不允许交叉嵌套:

    合理写法:<users>

            <name>Tom</name>

         </users>

    错误写法:<users><name>Tom</users></name>

  ③、格式良好的 XML 文档必须有且仅有一个根标签,其他的标签都是这个标签的子孙标签。

  ④、对于 XML 标签中出现的所有空格和换行,XML 解析都会当做标签内容进行处理。比如下面两个是不一样的

    1、<name>Tom</name>

    2、<name>

        Tom

      </name>

    注意:由于在 XML 中,空格和换行都会作为原始内容被处理,所以在编写 XML 文件的时候使用换行和缩进等方式来让原文件中的内容清晰可读的良好习惯可能要被迫改变。

       这和 HTML 标签的书写是有点区别的。

  ⑤、元素的命名规范:

    1、区分大小写,例如:<P>和<p>是不一样的

    2、不能以数字或下划线“-”开头

    3、不能以 xml(或XML,Xml)作为开头

    4、不能包含空格

    5、名称中间不能包含冒号“:”

三、属性

  ①、一个元素可以有多个属性,每个属性都有它自己的名称和取值,比如:

    <input name="tom" />

  ②、属性值一定要用双引号或单引号引起来

  ③、属性的命名规范和元素的命名规范一样

  ④、XML 文件中,元素属性所代表的信息,也可以改为用子元素来表示,比如:

    <input name="tom" />

    可以写为:

    <input>

      <name>tom</name>

    </input>

四、注释

  ①、XML 文件中注释采用:"<!-- 注释 -->" 这样的格式

  ②、XML 声明之前不能有注释

  ③、注释不能嵌套,比如下面不合规范:

    <!-- 全局注释   <!-- 局部注释 -->-->

五、CDATA区和特殊字符

①、在编写 XML 文档时,有些内容可能不想让解析引擎解析执行,而是当做原始内容处理,那么我们就可以把这些内容放到 CDATA区里面,对于 CDATA 区里面的内容,XML 解析程序不会处理,而是原封不动的输出。

    语法:<![CDATA[内容]]>        

    比如:<![CDATA[

          <input>

            <name>tom</name>

          </input>

       ]]>

    注意:CDATA和[内容]之间不能有空格

  ②、转义字符:对于一些单个字符,如果想显示其原始样式,可以使用转义的形式

六、处理指令processing instruction

  ①、用来解析引擎如何解析 XML 文档内容

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

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

    处理指令必须以<? 开头,以 ?> 结尾

3、XML 约束

一、什么是 XML 约束?

在 XML 文档中,可以编写一个文档来约束它的书写规范,这称为 XML 约束

二、为什么需要 XML 约束?

因为往往我们写一个 xml 文档,里面的元素基本上是需要确定的,以便于我们方便的解析数据。如果没有约束,那编写 XML 文档的人员可以随便写,而且万一元素不小心写错了,这也会对我们后期解析造成困难。如果有 XML 约束以后,那 XML 文档的元素便是确定的,不会发生写错的情况(写错了文档会提示报错的)

三、常用的约束技术

  ①、XML DTD(Document Type Definition)

    1、引入 dtd 文件的两种方式:

      当引用文件在本地时:<!DOCTYPE 文档根节点 SYSTEM "dtd文件的URL">

        比如:<!DOCTYPE BookPlay SYSTEM "book.dtd">

      当引用文件是一个公共文件时:<!DOCTYPE 文档根节点 PUBLIC  SYSTEM "dtd名称""dtd文件的URL">

比如:<!DOCTYPE BookPlay PUBLIC SYSTEM

            "-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN"

            "http://java.sun.com/dtd/-app_2_3.dtd">

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏各种机器学习基础算法

如何通过jq和php实现返回父级页面(附带记忆功能)

在开发项目的时候,往往会有一些父级页面,例如这样: ? 点击即可返回上一层目录,可是这样是返回到父级页面的首页,我们原本的操作记录清空了(比如说我们翻到第3页博...

2796
来自专栏GreenLeaves

JavaScript之怎样获取元素节点

JavaScript获取元素节点一共有三种方法,分别是通过元素ID、通过标签名字和通过类名字来获取; 1.通过元素ID属性的ID值来获得元素对象-getElem...

1638
来自专栏Puppeteer学习

一步一步学习Vue(十一)

1432
来自专栏前端小叙

事件绑定的几种常见方式

在项目开发中,经常遇到绑定事件不起作用,或者事件绑定多次,导致重复触发。 1.事件绑定的几种常见方式(以click事件为例) jquery: $(select...

3298
来自专栏编程

AngularJS 指令

AngularJS 通过被称为指令的新属性来扩展 HTML。 AngularJS 通过内置的指令来为应用添加功能。 AngularJS 允许你自定义指令。 ? ...

16810
来自专栏州的先生

Python爬虫实战入门五:获取JS动态内容—爬取今日头条

1072
来自专栏编程

python中的变量

变量与数据类型 变量 编程语言中为了能够更好的处理数据,都需要使用一些变量。Python 语言的变量可以是各种不同的数据类型,使用变量的时候不需要声明直接使用就...

1680
来自专栏desperate633

Java中对于unsigned byte类型的转换处理问题由来Java中unsigned byte 的转换测试程序小结

阅读到上述源代码时,对于int luminance = row[x] & 0xFF;最初不是很理解。查询之后,发现原来Java中是没有unsigned byte...

832
来自专栏彭湖湾的编程世界

【javascript】原生js更改css样式的两种方式

下面我给大家介绍的是原生js更改CSS样式的两种方式: 1通过在javascript代码中的node.style.cssText="css表达式1;css表达式...

1688
来自专栏CDA数据分析师

全栈数据工程师养成攻略:Python 基本语法

Python简单易学,但又博大精深。许多人号称精通Python,却不会写Pythonic的代码,对很多常用包的使用也并不熟悉。学海无涯,我们先来了解一些Pyt...

1718

扫码关注云+社区