【XML】XML和DTD,简单讲一讲
一、XML是什么
X(extensible:可扩展的)M(markup:标记/扩展)L(language:语言),也即是可扩展标记语言!
xml是一种非常灵活的语言,没有固定的标签,所有的标签都可以自定义。
HTML语言:网页标签语言
xml语言的作用
- 存:特殊的文件,如手机中单机游戏的等级,装备等等。这些数据若是存放在数据库,就会因为数据库太大,普通文件太慢,所以采用xml文件保存软件中的数据。
- 传:在网络上传递数据
- 配置文件:*.properties
xml的良好格式(要注意空格存在!!!)
-
声明信息,用于描述xml的版本和编码格式
<? xml version="1.0" encoding="UTF-8" ?>
-
xml有且仅有一个根元素
-
xml中大小写敏感
-
标签成对,并且正确嵌套
-
属性值要使用双引号
-
注释的写法
<!-- 这里是注释 -->
示例
<?xml version="1.0" encoding="UTF-8"?>
<scores>
<student id="1">
<name>王同</name>
<coures>java</coures>
<score>89</score>
</student>
<student id="2">
<name>李佳</name>
<coures>sql</coures>
<score>58</score>
</student>
</scores>
二、DTD
简介
DTD,Document Type Definition,文档类型定义
DTD用于约束xml的文档格式,保证xml是一个有效的xml
DTD 包括内部DTD和外部DTD
-
内部DTD
-
外部DTD
内部DTD的定义(要注意空格存在!!!)
- 内部DTD的定义,语法如下:
<!DOCTYPE 根元素 [元素声明]>
- 元素声明语法
<!ELEMENT 元素名(子元素 , ...)> <!-- 声明元素及其嵌套的子元素 -->
<!ELEMENT 元素名(#PCDATA)> <!-- 声明元素和元素内的文本类型 -->
<!ELEMENT 元素名 ANY> <!-- 声明元素以及元素内可含任何类型 -->
- 数量词
> +:表示出现1次或多次
> ?:表示出现0次或1次
> *:表示出现任意次
- 属性声明语法
<!ATTLIST 元素名 属性名 属性类型 默认值>
> 属性类型:CDATA,表示字符数据
> 默认值:#REQUIRED,表示必须出现;#IMPLIED,表示不是必须的
格式良好且有效的xml示例:
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 声名内部DTD -->
<!DOCTYPE scores [
<!ELEMENT scores (student*) >
<!ELEMENT student (name, course, score) >
<!ELEMENT name (#PCDATA)>
<!ELEMENT course (#PCDATA)>
<!ELEMENT score (#PCDATA)>
<!ATTLIST student id CDATA #REQUIRED>
]>
<scores>
<student id="1">
<name>王同</name>
<course>java</course>
<score>89</score>
</student>
<student id="2">
<name>李佳</name>
<course>sql</course>
<score>58</score>
</student>
<student id="3">
<name>张三</name>
<course>fata</course>
<score>80</score>
</student>
</scores>
外部DTD的定义(要注意空格存在!!!)
- 创建一个独立的dtd文件
<?xml version="1.0" encoding="UTF-8" ?>
<!ELEMENT scores (student*) >
<!ELEMENT student (name, course, score) >
<!ELEMENT name (#PCDATA)>
<!ELEMENT course (#PCDATA)>
<!ELEMENT score (#PCDATA)>
<!ATTLIST student id CDATA #REQUIRED>
- 在xml中引用外部DTD文件
<!-- 引用外部DTD -->
<!DOCTYPE scores SYSTEM "scores.dtd">