前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XML的约束——DTD

XML的约束——DTD

作者头像
用户10196776
发布2022-11-22 14:23:48
5210
发布2022-11-22 14:23:48
举报
文章被收录于专栏:SpringBoot+MyBatis前端

1.什么是DTD?有什么作用? 简单来说:文档类型定义(约束)

规范一点就是:是一套关于标记符的语法规则。它是XML1.0版规格的一部分,是XML文件的验证机制,属于XML文件组成的一部分。DTD 是一种保证XML文档格式正确的有效方法,可通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。XML文件提供应用程序一个数据交换的格式,DTD正是让XML文件能成为数据交换标准,因为不同的公司只需定义好标准DTD,各公司都能依DTD建立XML文件,并且进行验证,如此就可以轻易的建立标准和交换数据,这样满足了网络共享和数据交互。DTD文件是一个ASCII文本文件,后缀名为.dtd。

2.那么什么是XML? HTML:超文本标记语言   a/b/c/z XML:可扩展标记语言  (

XML文档中的标签和标签继承性称为模式。

一些模式是随意组成的(例如,本文中的示例XML代码纯粹是即兴创作的),而其他模式则由标准组织严格定义。例如,可缩放矢量图形(SVG)模式由W3C定义,而DocBook模式由Norman Walsh定义。 模式强制执行一致性。最基本的模式通常也是最严格的。在我的示例XML代码中,将发行版名称放在节点中是没有意义的,因为文档的隐含模式清楚地表明 mascot必须是发行版的“子”元素。

3.XML的两种文档约束(<!DOCTYPE pers SYSTEM "test.dtd">——在下面XML中这句代码DOCTYPE要在XML首句) DTD Schema

(简单解释一下下:a: 两种形式 dtd schema,b: 本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的),c:有DOM,SAX,STAX等 DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多)

4.XML格式要求(合法XML)     1)有且只有一个根节点;     2)由开始标签和结束标签组成;     3)XML标签区分大小写;     4)正确嵌套标签; 下面来看看XML代码案例:——xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 
1.DTD申明
1)内部申明:<!DOCTYPE 根节点[ ]>
2)外部申明:<!DOCTYPE 根节点[ ]SYSTEM "DTD外部文件路径">
2.元素定义:
1)语法:<!ELEMENT 元素名称 元素类型> 
2)类型:
2.1)空元素:EMPTY
2.2)文本元素:(#PCDATA)
2.3)混合元素:(e1,e2,e3.....)
3)限制
3.1) ,(逗号代表):元素出现的顺序
3.2) |代表:多选一
3.3) ?代表:元素出现0次或者1次(可有可无)
3.4) *代表:元素出现1次或者N次
3.5) +代表:元素出现1次或者N次
3.属性定义
1)语法:<!ATTLIST 元素名称属性名称 属性类型 设置说明>
2)类型:
2.1)ID:唯一
2.2)CDATA:文本
2.3)枚举:多选一,例如(男 | 女)
3)设置说明
3.1)必须:#REQUIRED 
3.2)可选:#IMPLIED
4.特殊符号转义
 -->
 <!-- <!DOCTYPE persons[
 	<!ELEMENT persons (person+)>
 	<!ELEMENT person (name,age,contact,br?>
 	<!ELEMENT name #PCDATA>
 	<!ELEMENT age #PCDATA>
 	<!ELEMENT contact (phone|mail|qq|wechat)>
 	<!ELEMENT phone (#PCDATA)>
 	<!ELEMENT mail (#PCDATA)>
 	<!ELEMENT br EMPTY>
 	<!ATTLIST person
 		pid ID  #REQUIRED
 		paddr CDATA #IMPLIED
 		psex (男|女) "男"
 	>
 ]> -->
 <!DOCTYPE pers SYSTEM "test.dtd">
<persons>
	<person pid="p01" paddr="123" psex="男">
		<name>张三</name>
		<age>22</age>
		<contact>
			<phone>select * from t_book where price&gt;200 and price&lt;200 </phone>
		</contact>
		<br/>
	</person>
	<person pid="p02">
		<name>李四</name>
		<age>23</age>
		<contact>
			<mail>123@qq.com</mail>
		</contact>
	</person>
</persons>

5.使用DTD

    5.1 在XML中加入DTD申明         1)内部申明:<! DOCTYPE root[]>     2)外部申明:<!DOCTYPE 文档根节点 SYSTEM “DTD文件名”>    5.2 元素定义语法(DTD对元素的限制)         基本语法:<! ELEMENT 元素名称 元素类型 >         元素分类:EMPTY     空元素  (#PCDATA)  文本元素  (e1,e2)    混合元素       元素限制:,(顺序)、|(或,多选一)、?(0或1次),*(1*0=0,0次或多次), +(1+0=1,1次或多次) 5.3 属性定义语法(DTD对属性的限制)     基本语法:<!ATTLIST 元素名称 属性名称 属性类型 设置说明>     属性类型:ID/CDATA/ENUM (男|女)     设置说明:#REQUIRED(必须)/#IMPLIED(可选)     5.4 特殊符号转义     &(逻辑与)      -->  &amp;     >(大于)     -->  &gt;     <(小于)     -->  &lt;     ‘(单引号)     -->  &apos;     “(双引号)     -->  &quot;

 最后看看DTD代码案例(与XML相连)——text.dtd

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 
1.DTD申明
1)内部申明:<!DOCTYPE 根节点[ ]>
2)外部申明:<!DOCTYPE 根节点[ ]SYSTEM "DTD外部文件路径">
2.元素定义:
1)语法:<!ELEMENT 元素名称 元素类型> 
2)类型:
2.1)空元素:EMPTY
2.2)文本元素:(#PCDATA)
2.3)混合元素:(e1,e2,e3.....)
3)限制
3.1) ,(逗号代表):元素出现的顺序
3.2) |代表:多选一
3.3) ?代表:元素出现0次或者1次(可有可无)
3.4) *代表:元素出现1次或者N次
3.5) +代表:元素出现1次或者N次
3.属性定义
1)语法:<!ATTLIST 元素名称属性名称 属性类型 设置说明>
2)类型:
2.1)ID:唯一
2.2)CDATA:文本
2.3)枚举:多选一,例如(男 | 女)
3)设置说明
3.1)必须:#REQUIRED 
3.2)可选:#IMPLIED
4.特殊符号转义
 -->
 <!-- <!DOCTYPE persons[
 	<!ELEMENT persons (person+)>
 	<!ELEMENT person (name,age,contact,br?>
 	<!ELEMENT name #PCDATA>
 	<!ELEMENT age #PCDATA>
 	<!ELEMENT contact (phone|mail|qq|wechat)>
 	<!ELEMENT phone (#PCDATA)>
 	<!ELEMENT mail (#PCDATA)>
 	<!ELEMENT br EMPTY>
 	<!ATTLIST person
 		pid ID  #REQUIRED
 		paddr CDATA #IMPLIED
 		psex (男|女) "男"
 	>
 ]> -->
 <!DOCTYPE pers SYSTEM "test.dtd">
<persons>
	<person pid="p01" paddr="123" psex="男">
		<name>张三</name>
		<age>22</age>
		<contact>
			<phone>select * from t_book where price&gt;200 and price&lt;200 </phone>
		</contact>
		<br/>
	</person>
	<person pid="p02">
		<name>李四</name>
		<age>23</age>
		<contact>
			<mail>123@qq.com</mail>
		</contact>
	</person>
</persons>

小伙伴们今日分享就到这里啦!加油!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.什么是DTD?有什么作用? 简单来说:文档类型定义(约束)
  • 2.那么什么是XML? HTML:超文本标记语言   a/b/c/z XML:可扩展标记语言  (
  • 3.XML的两种文档约束(<!DOCTYPE pers SYSTEM "test.dtd">——在下面XML中这句代码DOCTYPE要在XML首句) DTD Schema
  • (简单解释一下下:a: 两种形式 dtd schema,b: 本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的),c:有DOM,SAX,STAX等 DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多)
  • 4.XML格式要求(合法XML)     1)有且只有一个根节点;     2)由开始标签和结束标签组成;     3)XML标签区分大小写;     4)正确嵌套标签; 下面来看看XML代码案例:——xml
  • 5.使用DTD
    •  最后看看DTD代码案例(与XML相连)——text.dtd
      • 小伙伴们今日分享就到这里啦!加油!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档