加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML 语法以及DTD语法

发布时间:2020-12-16 05:26:53 所属栏目:百科 来源:网络整理
导读:XML XML(ExtensibleMarkupLanguage),翻译过来就是可扩展标记语言 XML是W3C组织发布的,目前遵循的是W3C发布的XML1.0 1.其中XML文件用于作为配置文件 2.用于保存有关的数据 在一个软件系统中,系统启动的模块,可以通过XML文件来实现 XML语言出现的根本的目

XML

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

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

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

2.用于保存有关的数据

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

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

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

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

1.严谨性差

2.编码的时候不严谨

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

1.文档的声明

2.元素

3.属性

4.注释

5.CDATA区,特殊字符

6.处理指令(progressinstruction)

文档的声明

最简单的文档声明

<?xmlversion=”1.0”?>

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

用encoding来确定编码

<?xmlversion=”1.0”encoding=”gb2312”>

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

例如:

当文件数据的编码是

<?xmlversion-=”1.0”encoding=”UTF-8”?>

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

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

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

<?xmlversion=”1.0”encoding=”gb2312”?>

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

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

2.将encoding方法改成gb2312

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

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

<?xmlversion=”1.0”encoding=”gb2312”standalone=”yes”?>

但是这个一般是没有用的

<?xmlversion=”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中,也是需要用“”来括起来

<yellowcongname=”heima”></yellowcong>

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

<yellowcong>

<name>heima</name>

</yellowcong>

注释

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

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

重点

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

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

CDATA

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

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

语法:

<![CDATA[

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

]]>

转义字符

&&

><

<>

“(双引号)"

‘(单引号)'

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

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

处理指令(processinginstrustion简称PI)

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

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

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

例子:

建立一个xml文件

<?xmlversion="1.0"encoding="gb2312"?>

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

<xml-body>

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

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

</xml-body>

然后建立css文件

#a1{

font-size:150px;

color:red;

}








DTD:

对XML进行约束的

一:元素的声明:

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

<!ELEMENT元素名称类别>

1任意类型的元素

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

<!ELEMENT元素名称ANY>

如:<!ELEMENT书籍列表ANY>

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

2空元素

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

<!ELEMENT元素名称EMPTY>

如:<!ELEMENT书籍列表EMPTY>

3字符串值的元素

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

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

如:

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

<!DOCTYPE书籍列表[

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

]>

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

4包含子元素

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

定义要求顺序的子元素:

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

例如:

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

定义互斥的子元素:

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

例如:

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

5混合元素

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

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

如:

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

二:属性

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

属性声明使用下列语法:

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

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

如:

DTD实例:

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

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

XML实例:

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

以下是属性类型的选项:

类型属性值描述

CDATA值为字符数据(characterdata

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

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

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

ID值为唯一的id

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

IDREF值为另外一个元素的id

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

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

ENTITY值是一个实体

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

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

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

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

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

值解释

#REQUIRED属性值是必需的

#IMPLIED属性值可有可无

#FIXEDvalue属性值是固定的

三:实体

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

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

实体声明

语法:

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

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

&实体名;

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

例子:

DTD例子:

<!ENTITYspring"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:实例

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读