XML 语法以及DTD语法

XML

XML(Extensible Markup Language) ,翻译过来就是可扩展标记语言

XML 是W3C 组织发布的,目前遵循的是W3C发布的XML1.0

1.其中XML文件用于作为配置文件

2.用于保存有关的数据

在一个软件系统中,系统启动的模块,可以通过XML文件来实现

XML语言出现的根本的目标在于描述途中有关系的数据

其中XML开始出现的原因主要是为了取代HTML这们语言,

其中HTML文件主要是主要的特点是:

1.严谨性差

2.编码的时候不严谨

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

1.文档的声明

2.元素

3.属性

4.注释

5.CDATA区,特殊字符

6.处理指令(progress instruction)

文档的声明

最简单的文档声明

<?xml version=”1.0” ?>

其中注意格式,其中问号前面 还有一个空格

用encoding 来确定编码

<?xml  version=”1.0” encoding=”gb2312”>

其中一定要注意到乱码的问题

例如:

当文件数据的编码是

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

数据的编码是UTF-8 但是数据的保存是 按照 gb2312,这样在硬盘上存储的数据是 并不是按照UTF -8 而是按照 gb2312 ,这样保存的数据并不是,我们想要的数据了

在通过浏览器,解码的时候是按照XML文旦中的 encoding编码所以会变成 乱码

其中我们在变成的时候一般用的是

<?xml version=”1.0” encoding=”gb2312”?>

解决这种乱码的方法有两种

1.保存的时候,是按照UTF -8 

2.将encoding 方法改成 gb2312

我们一般使用的 Eclipse进行开发,通过这个工具类开发,帮我们隐藏了许多的问题

使用 standalone 属性说明数据的文档是独立的

<?xml version=”1.0” encoding=”gb2312” standalone=”yes” ?>

但是这个一般是没有用的

<?xml version=”1.0” encoding=”gb2312” standalone=”no”?>

在IE中任然是可以打开的。

如果没有文档声明,那么这种XML文档称为格式不良好的文档声明

元素

XML文档中的元素就是标签

标签有开始和结束标签

例如

包含了标签体

<yellowcong>我是黑马</yellowcong>

不包含标签体

<yellowcong />

标签可以嵌套多个标签,但是不可以交叉嵌套的问题

格式良好的标签必须有一个根标签,其他的标签都是子标签和根标签

对于XML标签中出现的所有的空格和换行都会当做标签的类容进行处理的

下面的标签的类容是不一样的

<yellow>我是神</yellow>

<yellow>

我是神

</yellow>

由于在XML文件中换行和空格的良好的习惯就需要改变了。

这个对于XML中是很重的,如果你们掌握的不好,就可能出现问题

命名规范

1.区分大小写

2.不能以数字和“_”下划线开头

3.不能以XML开头

4.不能包含空额

5.文件中不能有冒号

XML的属性

一个标签中可以多个属性,每个属性都有自己的取值和名称

XML文件的属性想HTML中,也是需要用 “”来括起来

<yellowcong name=”heima”></yellowcong>

还有一种方法,其中的元素可以使用标签的方法来定义

<yellowcong>

<name>heima</name>

</yellowcong>

注释

其中XML的注释和HTML的注释是类似的 

<!-- 注释的类容-->

重点

1.XML的注释不可以将注释写在声明的前面

2.XML中的注释不可以嵌套

CDATA

在编译XML文件中,如果有些类容,不想XML系统解析,而是当成原始类容来处理

这时我们可以使用CDATA来处理

语法:

<![CDATA[  

<!--不处理的类容-->

]]>

转义字符

&                                                &

>                                                <

<                                                >

“(双引号)                                "

‘(单引号)                                '

其中注意的是数据其中后面的“;” 是一定要写的,对于这个对于人,来说区别不大,但是对于计算机来说,区别是很大的,应为电脑没有处理数据

对于数据,如果给人看,那么,就是用转义字符,如果给程序看,就不使用转义字符

处理指令(processing instrustion简称 PI)

例如在XML 文档中使用xml-stylesheet指令,通过xml解析,会调用css文件,来显示数据

<?xml-stylesheet typle=”text/css” href=”1.css”?>

其中指令以<?开头,并以?>是常见的指令的一种处理,其中开头的声明,就是一句指令

例子:

建立一个xml文件

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

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

<xml-body>

        <!--其中有些要点,请大家注意一下,对于一些编程的词,一定不要写错了,刚刚我就把hret给写错了,搞了半天-->

        <yellowcong id="a1">我是黑马程序员</yellowcong>

</xml-body>

然后建立css文件

#a1{

        font-size:150px;

        color:red;

       

}








DTD:

对XML进行约束的

一:元素的声明:

DTD中,XML元素通过元素声明来进行声明。元素声明使用下面的语法: 

<!ELEMENT 元素名称 类别

任意类型的元素

带有任何内容(字符串、子元素、空元素)的元素,通过类别关键词ANY声明的元素,可包含任何可解析数据的组合: 

<!ELEMENT 元素名称 ANY> 

如:<!ELEMENT 书籍列表 ANY> 

注意:应尽量避免使用ANY定义。

 

空元素 

空元素通过类别关键词EMPTY进行声明: 

<!ELEMENT 元素名称 EMPTY> 

如:<!ELEMENT 书籍列表 EMPTY> 

字符串值的元素 

通过圆括号中的#PCDATA进行声明: 

<!ELEMENT 元素名称 (#PCDATA)> 

如: 

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

<!DOCTYPE 书籍列表

<!ELEMENT 书籍列表 (#PCDATA)> 

]> 

<书籍列表>描述</书籍列表

包含子元素 

带有一个或多个子元素通过圆括号中的子元素名进行声明:

定义要求顺序的子元素: 

<!ELEMENT 元素名称 (子元素名称1, 子元素名称2, ……)> 

例如: 

<!ELEMENT 计算机书籍 (书名作者价格简介)> 

定义互斥的子元素: 

<!ELEMENT 元素名称 (子元素名称1 | 子元素名称2 | ……)> 

例如

<!ELEMENT 计算机书籍 (书名 作者 价格 简介)> 

混合元素 

混合元素的语法格式如下: 

<!ELEMENT 父元素名称 (#PCDATA | 子元素名)*> 

如: 

<!ELEMENT 计算机书籍 (#PCDATA | 书名 作者 价格 简介)*> 

二:属性 

DTD中,属性通过ATTLIST声明来进行声明。 

属性声明使用下列语法: 

<!ATTLIST 元素名 属性名 属性类型 元素对属性的要求 默认值)> 

其中,默认值可有可无,要求可有可无 

如: 

DTD实例: 

<!ATTLIST 作者 地址 CDATA #REQUIRED)> 

或 

<!ATTLIST 作者 地址 CDATA #FIXED "广州" )> 

XML实例: 

<作者 地址="广州" >李刚</作者

以下是属性类型的选项: 

类型 属性值描述

 

CDATA 值为字符数据(character data) 

如:<!ATTLIST 作者 地址 CDATA #REQUIRED)> 

(en1 | en2 | ..) Enumerated:此值是枚举列表中的一个值 

如:<!ATTLIST 肉 类型 (鸡肉 牛肉 猪肉 鱼肉) "猪肉")> 

ID 值为唯一的id 

如:<!ATTLIST 计算机书籍 ISBN ID #REQUIRED)> 

IDREF 值为另外一个元素的id 

如:<!ATTLIST 计算机书籍 ISBN IDREF #REQUIRED)> 

IDREFS 值为其他id的列表,多个引用之间以空格隔开 

ENTITY 值是一个实体 

ENTITYS 值是一个实体列表,多个实体之间以空格隔开 

NMTOKEN 值为合法的XML名称,表示属性值只能有字母、数字、下划线、英文点(.)、英文冒号(:)、英文中划线(-)等符号组成 

NMTOKENS 值为合法的XML名称的列表,表示属性值由多个NMTOKEN组成,多个NMTOKEN之间以空格隔开 

NOTATION 此值是符号的名称(过期了,尽量避免使用) 

默认值参数可使用下列值: 

值 解释 

#REQUIRED 属性值是必需的 

#IMPLIED 属性值可有可无 

#FIXED value 属性值是固定的 

三:实体 

实体引用就是用一个字符串代替另一个字符串。 

实体可在内部或外部进行声明。 

实体声明 

语法: 

<!ENTITY 实体名 "实体值"> 

XML文档中使用实体引用的语法: 

&实体名

注意:在内部DTD和外部DTD都可以如此定义,但都是应用在XML文档中。 

例子: 

DTD例子: 

<!ENTITY spring "Spring2.0宝典"> 

XML例子: 

<书名> &spring;</书名

应用在外部DTD中的实体声明 

语法: 

<!ENTITY % 实体名 "实体值"> 

DTD中使用实体引用的语法: 

%实体名


例子:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<!-- 内部DTD,指定了文档根元素:书籍列表 --> 
<!DOCTYPE 书籍列表[ 
<!ELEMENT 书籍列表 (计算机书籍)*> 
<!ELEMENT 计算机书籍 (书名, 作者, 价格, 简介)> 
<!ELEMENT 书名 (#PCDATA)> 
<!ELEMENT 作者 (#PCDATA)> 
<!ELEMENT 价格 (#PCDATA)> 
<!ELEMENT 简介 (#PCDATA)> 
]> 
<!-- XML文档部分 --> 
<书籍列表> 
 <计算机书籍> 
  <书名>XML宝典</书名> 
  <作者>刘洪</作者> 
  <价格>79.00</价格> 
  <简介>该书详细介绍了XML的基础知识</简介>
 </计算机书籍> 
</书籍列表> 



总结 :定义的有三种:

ELEMENT: :标签

ATTLIST:属性

ENTITY: 实例



你可能感兴趣的:(XML 语法以及DTD语法)