博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XML
阅读量:5129 次
发布时间:2019-06-13

本文共 4033 字,大约阅读时间需要 13 分钟。

XML的学习目标:

1)能用XML描述现实中的有层次关系的数据

2)能使用程序读取到XML中表示的数据

一、XML是什么?作用是什么?

1.XML是指可扩展标记语言,用户自定义的标签,是相对于HTML来讲的(标签预定义的)。

2.XML被设计的宗旨是表示数据(传输和存储数据)。HTML是用来显示数据的。目前经常使用的XML版本是1.0。

3.XML除了表示数据外。在实际的企业开发中,主要用XML作为程序的配置文件。

(在一个软件系统中,通过XML配置文件可以提高系统的灵活性。即程序的行为是通过XML文件来配置的,而不是硬编码。

4.XML是一种通用的数据交换格式。

二、XML文档的组成

一个XML文件一般由以下几个部分组成:

1.文档声明

作用:用于标识该文档是一个XML文档

注:声明必须出现在文档的第一行(之前连空行都不能有,也不能有任何的注释)

最简单的XML声明:<?xml version="1.0"?>

声明中的encoding属性:说明解析当前XML文档时所使用的编码。默认是UTF-8

<?xml version="1.0" encoding="GB2312"?>

声明中的standalone属性:说明XML文档是否是独立的。

<?xml version="1.0" standalone="yes"?>

2.元素

XML元素指XML文件中出现的标签。

一个标签分为起始和结束标签。结束标签不能省略。

eg:包含标签体<mytag>apple</mytag>

   不包含标签体<mytag/>

一个XML文档必须且只能有一个根标签,其他标签都是这个根标签的子标签或孙标签。

XML文档中不会忽略回车和换行及空格(注:在XML文档中不使用回车换行等,可提高在网络上传输效率)

标签的命名规范:元素(标签)的名称可以包含字母、数字、减号、下划线和英文句点。严格区分大小写。

3.元素的属性

一个元素可以有多个属性,每个属性都有它自己的名称和取值。

元素的属性取值一定要用引号引起来(单引号或双引号)

在XML中,标签属性所代表的信息也可以被改成用子元素的形式来描述。

4.注释

<!--这是注释-->

注释不能嵌套

5.CDATA区

作用:把CDATA中的内容都当做是文本。

语法:

<![CDATA[

         文本内容

]]>

例如:

<![CDATA[

         <福建>

                   <厦门></厦门>

                   <福州></福州>

         </福建>

]]>

6.特殊字符

&  -->  &amp;

<   -->  &lt;

>  -->  &gt;

"  -->  &quot;

'  -->  &apos;

7.处理指令(PI)

作用:用来指挥软件如何解析XML文档。

语法:必须以"<?"作为开头,以"?>"作为结尾。

eg:

eg:

demo.xml

s.cssbig{ font-size:400px; color:red;}medium{ font-size:100px; color:blue;}small{ font-size:40px; color:green;}

三、XML约束

XML技术中,可以编写一个文档来约束一个XML的书写规范,这个文档称之为约束。

1.格式良好的XML文档:符合XML语法的。

2.有效的XML文档:遵循约束规范的。

格式良好的不一定是有效的,有效的必定格式良好。

四、DTD的基本语法

DTD:文档类型定义

作用:约束XML的书写规范。

DTD文件保存到磁盘时,必须使用UTF-8编码

1.引入外部的DTD文档来约束当前的XML文档

DTD文件在本地:<!DOCTYPE 根元素名称 SYSYTEM "DTD文件的路径">

DTDT文件在网络上:<!DOCTYPE 根元素名称 PUBLIC "DTD名称" "DTD的路径URL">

2.定义元素

语法:<!ELEMENT 元素名称 使用规则>

使用规则:

(#PCDATA):指示元素的主体内容只能是普通的文本。

EMPTY:指示元素不能有主体内容。

ANY:用于指示元素的主体内容为任意类型

(子元素):指示元素中包含的子元素

         如果子元素用逗号分开,说明必须按照声明顺序去编写XML文档

         如果子元素用“|”分开,说明任选其一

         用+、*、?来表示元素出现的次数

         如果元素后面没有+、*、?表示必须且只能出现一次

         +:表示至少出现一次,一次或多处

         *:表示可有可无,零次、一次或多处

         ?:表示可有可无,有的话只能有一次。

3.定义属性

语法:<!ATTLIST 元素名

                            属性名1 属性值类型 设置说明

                            属性名2 属性值类型 设置说明>

属性值类型:

                            CDATA:说明该属性的取值为一个普通文本

                            ENUMERATED (DTD没有此关键字)

                                     语法:<!ATTLIST 元素名称 (值1|值2)  "值1">

                            ID:属性的取值不能重复

设置说明:

                   #REQUIRED:表示该属性必须出现

                   #IMPLIED:表示可有可无

                   #FIXED:表示属性的取值为一个固定值

                                     语法:#FIXED "固定值"

                                     直接值:表示属性的取值为该默认值

4.定义实体(ENTITY)

实体的定义分为引用实体和参数实体

引用实体:

                   作用:在DTD中定义,在XML中使用

                   语法:<!ENTITY 实体名称 "实体内容">

                   在XML中使用:&实体名称;

参数实体:

                   作用:在DTD中定义,在DTD中使用

                   语法:<!ENTITY % 实体名称 "实体内容">

                   在DTD中使用:%实体名称;

eg:

instance.dtd

instance.xml

AAA
2013-04-13
TT
DD

五、Schema

1.Schema简介

1)XML Schema是一种用于定义和描述XML文档结构与内容的模式语言。

2)XML Schema文件自身就是一个XML文件,但它的扩展名通常为.xsd。

3)一个XML Schema文档通常称为模式文档(约束文档),遵循这个文档书写的XML文件称为实例文档

2.快速入门案例

根据book.xsd编写book.xml

book.xsd

book.xml

JavaSE
张三
80.0

分析:(根据xsd约束文档编写xml的步骤)

a、首先看Schema文档,找到根元素

<书架>

b、思考:书架来自于哪个名称空间?看Schema文档,targetNamespace就是名称空间。

用xmlns关键字(xmlns名称空间声明)来声明我的元素来自哪个名称空间(xmlns:xml namespace)

c、思考:名称空间与哪个xsd文件对应呢?使用schemaLocation关键字来关联名称空间和xsd的对应关系

d、schemaLocation来自哪里?来自一个标准的名称空间

         (http://www.w3.org/2001/XMLSchema-instance)

3.引用两个Schema文件

company.xsd

department.xsd

company.xml

人力资源部
小刘

 

转载于:https://www.cnblogs.com/EvanLiu/p/3662548.html

你可能感兴趣的文章
2048游戏原理(二)
查看>>
springboot导入excel到mysql
查看>>
解决flask的端口占用
查看>>
第一次作业+105032014087
查看>>
vue mounted组件的使用
查看>>
RepotService添加空格符
查看>>
IP Address Configuration on Linux (RHEL 5.4)
查看>>
JS浏览器检测判断
查看>>
使用linux内核hrtimer高精度定时器实现GPIO口模拟PWM,【原创】
查看>>
Xshell配色方案啊【学习笔记】
查看>>
10秒钟执行一次计划任务
查看>>
Java魔法堂:类加载机制入了个门
查看>>
重拾算法(3)——用458329个测试用例全面测试二叉树和线索二叉树的遍历算法
查看>>
缺货流程
查看>>
去除inline-block元素间间距的N种方法
查看>>
hdu4965矩阵快速幂
查看>>
Tensorflow 学习三 可视化
查看>>
Artifact contains illegal characters的解决
查看>>
@@ERROR和@@ROWCOUNT的用法
查看>>
Train Problem II(卡特兰数+大数乘除)
查看>>