当前位置:网站首页>XML配置文件(DTD详细讲解)
XML配置文件(DTD详细讲解)
2022-07-05 23:34:00 【客行.】
目录
一.XML介绍
1.什么是XML文件?
Extensible Markup Language(可扩展标记语言),简称XML,类似于HTML,用来传输和存储数据。
可扩展标记语言是什么?
- 在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。例如:table标签,浏览器解析以后,生成一个表格。
2.XML文件的作用
- 用来保存数据,而且这些数据具有自我描述性
- 可以作为项目或者模板的配置文件
- 可以用来做网络传输数据的数据(但是现在用的不多,目前都是使用JSON为主)
- XML里面的DTD可以定义规范,作用相当于接口,即只有使用这个规范才可以实现XML的功能
- 为了便于不同应用、不同平台之间的数据共享和通信。
3.XML格式
有一个根元素(根元素就像HTML中的<html></html>标签一样,所有的其他标签都是写在该标签中的,所有该标签只能有一个)
- XML标签是严格区分大小写的
- 正确使用结束标签,有始有终(<html></html>就像是这样子有始有终)
- 正确嵌套标签
- 使用合法的标签名
- 定义有效的属性
二.元素定义
1.什么是DTD
- DTD的全称为Document Type Definition,是一种文件定义格式。
- DTD规定了XML文件结构为XML文件提供了语法与规则。
- 在DTD中定义XML文件的结构,然后按照DTD的声明来编写XML文件。就好像编程语言中的函数定义,在使用函数时要根据函数声明的格式进行来引用。
PS:简而言之,DTD就是用来约束XML文档的,使其在一定的规范下使用,除了DTD技术外,还有Schema技术,也是用于约束XML文档的。
2.DTD声明语句
在XML中加入DTD声明 <!DOCTYPE root[]>,root---->根元素
例如:
该代码中的根元素为<persons></persons>,那么我们语句改为<!DOCTYPE persons[]>。
然后我们定义规范时的代码都是写在DTD声明语句中的。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persons[]>
<persons>
<person pid="p1" sex="男" qq="aaa" parent="p2">
<name>张小明</name>
<age>10</age>
<contact>
<phone>1234567</phone>
</contact>
<br/>
</person>
<person pid="p2">
<name>张大明</name>
<age>35</age>
<contact>
<email>[email protected]</email>
</contact>
</person>
</persons>
3.元素的分类
3.1 <ELEMENT 元素名称 EMPTY>空元素
什么是为空元素?
- 没有内容的标签就被称为空元素。
- 由于HTML元素的内容是开始标签与结束标签之间的内容。而某些 HTML 元素具有空内容。(empty content),那些含有空内容的HTML元素,就是空元素。空元素是在开始标签中关闭的。
ps:我随便定义一个标签<abc/>这就是一个空元素,我们常见的html的一些标签也是空元素,例如<br><hr><input>这些都是空元素。
3.2 <ELEMENT 元素名称 (#PCDATA)> 文本元素
所谓文本元素,就是在该标签体中可以放入文本型的数据
例如:
<name>张小明</name>
3.3 <ELEMENT 元素名称 (e1,e2)> 混合元素
混合元素指的是该元素下面还有别的子元素。
例如:
<persons><contact>元素下面就有很多子元素
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE persons[ ]> <persons> <person pid="p1" sex="男" qq="aaa" parent="p2"> <name>张小明</name> <age>10</age> <contact> <phone>1234567</phone> </contact> <br/> </person> <person pid="p2"> <name>张大明</name> <age>35</age> <contact> <email>[email protected]</email> </contact> </person> </persons>
3.4.元素限制
- 元素符号
1.与( ,)
2.非( | )
- 元素出现次数
1. 0或1:?
2. 0-N: *
3. 1-N:+
元素定义代码实操:
打好了详细的备注啦,都是上面刚刚所涉及到的内容
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persons[
<!ELEMENT persons (person+)> <!--persons有1-N个person元素-->
<!ELEMENT person (name,age,contact,br*)> <!--person元素下有name,age,contact,br这些子元素-->
<!ELEMENT name (#PCDATA)> <!--name为文本元素-->
<!ELEMENT age (#PCDATA)> <!--age为文本元素-->
<!ELEMENT contact (phone|email*)> <!--contact下面可以有phone元素或者email元素-->
<!ELEMENT phone (#PCDATA)> <!--phone为文本元素-->
<!ELEMENT email (#PCDATA)> <!--email为文本元素-->
<!ELEMENT br EMPTY> <!--br为空元素-->
]>
<persons>
<person>
<name>张小明</name>
<age>10</age>
<contact>
<phone>1234567</phone>
</contact>
<br/>
</person>
<person>
<name>张大明</name>
<age>35</age>
<contact>
<email>[email protected]</email>
</contact>
</person>
</persons>
三.属性定义
1.语法
<!ATTLIST 元素名字 属性名称 类型 描述>
2.属性类型
- ID :给节点赋一个id号,id号不可以重复
- CDATA :文本型
- IDREF: 引用类型,输入需要引用的元素的ID
- (男|女):要么是男要么是女,也可以设置别的,比如1|2,要么为1要么为2
3.属性描述
- #REQUIRED:必填
- #IMPLED:非必填
- "默认值",只有像(男|女)类型时,描述才可以用默认值的方式。
属性定义代码实操
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persons[
<!ELEMENT persons (person+)> <!--persons有1-N个person元素-->
<!ELEMENT person (name,age,contact,br*)> <!--person元素下有name,age,contact,br这些子元素-->
<!ELEMENT name (#PCDATA)> <!--name为文本元素-->
<!ELEMENT age (#PCDATA)> <!--age为文本元素-->
<!ELEMENT contact (phone|email*)> <!--contact下面可以有phone元素或者email元素-->
<!ELEMENT phone (#PCDATA)> <!--phone为文本元素-->
<!ELEMENT email (#PCDATA)> <!--email为文本元素-->
<!ELEMENT br EMPTY> <!--br为空元素-->
<!--属性描述代码实操-->
<!ATTLIST person
pid ID #REQUIRED
sex (男|女) "男"
qq CDATA #IMPLIED
parent IDREF #IMPLIED
>
]>
<persons>
<person pid="p1" sex="男" qq="193968" parent="p2">
<name>张小明</name>
<age>10</age>
<contact>
<phone>1234567</phone>
</contact>
<br/>
</person>
<person pid="p2">
<name>张大明</name>
<age>35</age>
<contact>
<email>[email protected]</email>
</contact>
</person>
</persons>
四.XML所存在问题
我们设置规范就是为了让我们没有按照规范写时,立马提示我们有问题,但是如果怎么写都没有问题的话,大家按照下面步骤来设置。
先打开Window ==> Preferences ==>Validation,然后勾选图片所选中的。在点击应用,然后重启eclipse。
今天的学习就到这里啦。
边栏推荐
- Why use weak pointers for delegation- Why use weak pointer for delegation?
- MySQL (1) -- related concepts, SQL classification, and simple operations
- 有什么不起眼却挣钱的副业?
- Initialiser votre vecteur & initialisateur avec une liste Introduction à la Liste
- MySQL delete uniqueness constraint unique
- CAS and synchronized knowledge
- Rasa 3. X learning series -rasa 3.2.1 new release
- 如何提升口才
- [classical control theory] summary of automatic control experiment
- Cwaitabletimer timer, used to create timer object access
猜你喜欢
Live tiktok shop 2022 latest gameplay card slot overseas live e-commerce new traffic
orgchart. JS organization chart, presenting structural data in an elegant way
Hcip course notes-16 VLAN, three-tier architecture, MPLS virtual private line configuration
20.移植Freetype字体库
C# 反射与Type
20220703 周赛:知道秘密的人数-动规(题解)
My colleagues quietly told me that flying Book notification can still play like this
5. Logistic regression
用列錶初始化你的vector&&initializer_list簡介
Neural structured learning - Part 2: training with natural graphs
随机推荐
PV静态创建和动态创建
CAS and synchronized knowledge
Why use weak pointers for delegation- Why use weak pointer for delegation?
golang代码检查工具
Spire Office 7.5.4 for NET
Research notes I software engineering and calculation volume II (Chapter 1-7)
PADS ROUTER 使用技巧小记
rsync远程同步
有什么不起眼却挣钱的副业?
20.移植Freetype字体库
AsyncSocket长连接棒包装问题解决
5. Logistic regression
yate. conf
[SQL] SQL expansion languages of mainstream databases (T-SQL, pl/sql, pl/pgsql)
Technical specifications and model selection guidelines for TVs tubes and ESD tubes - recommended by jialichuang
How to design API return code (error code)?
开关电源Buck电路CCM及DCM工作模式
How to rotate the synchronized / refreshed icon (EL icon refresh)
STM32__ 06 - single channel ADC
GFS分布式文件系统