JavaWeb学习日记----DTD
DTD:文档类型定义,可以定义合法的XML文档构建模块。使用一系列的合法标签元素来定义文档的结构。
现有一个XML文档内容如下:
<?xml version="1.0"?>
<note>
<to>Luffy</to>
<from>John</from>
<heading>Reminder</heading>
<body>Hello World!</body>
</note>
DTD的三种引入方式:
1.DTD文件位于XML源文件的外部,可通过以下格式引入外部的DTD文件:
格式:
<!DOCTYPE 根元素名称 SYSTEM "DTD文件路径">
示例:
<!DOCTYPE note SYSTEM "note.dtd">
2.DTD位于XML文件中:
格式:
<!DOCTYPE 根元素名称 [元素声明]>
示例:
<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>Luffy</to>
<from>John</from>
<heading>Reminder</heading>
<body>Hello World!</body>
</note>
3.可以直接使用外部的DTD文件(多为网络上以有的DTD文件),这总方式在以后学struts2框架中使用配置文件时会用到。
格式:
<!DOCTYPE 根元素名称 PUBLIC "DTD名称" “DTD文档的URL”>
示例:
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
使用DTD定义元素:在DTD文档中使用ELEMENT关键字来声明一个XML元素
复杂元素:带有子元素的元素
语法:
<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>
示例:
<!ELEMENT note (to,from,heading,body)>
简单元素:没有子元素
语法:
<!ELEMENT 元素名称 约束>
在定义复杂元素时,子元素列表定义一个元素,则只能出现一个子元素。若想出现多个则可以使用加号:+,星号:*,问号:?来表示出现的次数。其中,加号表示出现一次或者多次,问号表示零次或者一次,星号表示零次或者多次(任意次)。另外,在子元素列表中可以使用竖线:| 表示枚举列表中的一个值
简单元素中常见约束如下:
(#PCDATA) 表示元素名为字符串类型
EMPTY 元素为空(没有内容)
ANY 任意
示例:
<!ELEMENT TVSCHEDULE (CHANNEL+)>
<!ELEMENT CHANNEL (BANNER,DAY+)>
<!ELEMENT BANNER (#PCDATA)>
<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
<!ELEMENT HOLIDAY (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
<!ELEMENT TIME (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT DESCRIPTION (#PCDATA)>
DTD属性:
使用ATTLIST进行声明
语法:
<!ATTLIST 元素名称 属性名称 属性类型 默认值>
常见属性类型:
CDATA: 字符串
枚举 : 表示只能在一定的范围内出现值,但是只能每次出现其中的一个
ID: 值只能是字母或者下划线开头
常见属性的约束:
#REQUIRED:属性必须存在
#IMPLIED:属性可有可无
#FIXED: 表示一个固定值 #FIXED "AAA"
属性的值必须是设置的这个固定值
<!ATTLIST color ID CDATA #FIXED "blue">
实体的定义:
实体是用于定义用于定义引用普通文本或特殊字符的快捷方式的变量。
实体引用是对实体的引用。
实体可在内部或外部进行声明。
内部实体声明:
语法:
<!ENTITY 实体名称 "实体的值">
示例:
<!ENTITY writer "大魔王">
实体的使用:&实体名称; (&+实体名称+;)
<author>&writer;</author>
外部实体声明:
语法:
<!ENTITY 实体名称 SYSTEM "URI/URL">
示例:
<!ENTITY writer SYSTEM "https://www.cnblogs.com/fxxk/">
使用:
<author>&writer;</author>
案例示范:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE TVSCHEDULE [ <!ELEMENT TVSCHEDULE (CHANNEL+)>
<!ELEMENT CHANNEL (BANNER,DAY+)>
<!ELEMENT BANNER (#PCDATA)>
<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
<!ELEMENT HOLIDAY (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
<!ELEMENT TIME (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT DESCRIPTION (#PCDATA)> <!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
<!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
<!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
<!ATTLIST TITLE RATING CDATA #IMPLIED>
<!ATTLIST TITLE LANGUAGE CDATA #IMPLIED> ]> <TVSCHEDULE NAME="院线大片">
<CHANNEL CHAN="cctv-6">
<BANNER>动作片</BANNER>
<DAY>
<DATE>05-20</DATE>
<PROGRAMSLOT>
<TIME>19:0:0</TIME>
<TITLE>复仇者联盟</TITLE>
<DESCRIPTION>Hello World!</DESCRIPTION>
</PROGRAMSLOT>
</DAY>
</CHANNEL>
</TVSCHEDULE>
日期:2019-04-04
时间:22:21:43
JavaWeb学习日记----DTD的更多相关文章
- JavaWeb学习日记----XML基础
1.XML基础: XML全称为eXtensible Markup Language;即可扩展标记型语言,同HTML一样使用标签来操作.它的可扩展性体现在标签可以由自己定义,可以是中文标签. XML用途 ...
- JavaWeb学习日记----表单提交方式
1.表单提交方式 (1) 使用input控件中的submit提交 代码如下: <!DOCTYPE html> <html lang="en"> <he ...
- JavaWeb学习日记----XML的解析
XML的解析简介: 在学习JavaScript时,我们用的DOM来解析HEML文档,根据HTML的层级结构在内存中分配一个树形结构,把HTML的标签啊,属性啊和文本之类的都封装成对象. 比如:docu ...
- JavaWeb学习日记----SAX解析XML
1.SAX解析XML文档的方式: 与DOM方式解析不同,DOM方式解析是根据XML的层级结构在内存中分配一个树形结构,把xml的标签,属性和文本都封装成对象.优点是可以很方便实现增删改操作.缺点是,如 ...
- JavaWeb学习总结-04 Servlet 学习和使用
一 Servlet 1 Servlet概念 Servlet时运行在服务器端的Java程序. Servlet的框架核心是 javax.servlet.Servlet 接口. 所有自定义的Servlet都 ...
- JavaWeb学习之Servlet(二)----Servlet的生命周期、继承结构、修改Servlet模板
[声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140466.html 一.http协议回顾: 在上一篇文章中:JavaW ...
- JavaWeb学习----JSP内置对象详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- JavaWeb学习----JSP脚本元素、指令元素、动作元素
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- (转)JavaWeb学习总结(十三)——使用Session防止表单重复提交
如何防止表单重复提交 在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复 ...
随机推荐
- Redis-03.事务
Redis事务: 在一个队列(queue)中依次执行一系列的命令. 事务的三个阶段: 1.开始事务(MULTI) 2.命令加入队列 (QUEUE) 3.执行事务 (EXEC) 示例1: MULTI & ...
- python爬虫学习之XPath基本语法
XPath 使用路径表达式来选取 XML 文档中的节点或节点集.节点是通过沿着路径(path)或者步(steps)来选取的. XML实例文档 我们将在下面的例子中使用这个XML文档. <?xml ...
- Android 关于解决MediaButton学习到的media控制流程
问题背景:话机连接了头戴式的耳机,在通话过程中短按按钮是挂断电话,长按按钮是通话静音.客户需求是把长按改成挂断功能,短按是静音功能. android版本:8.1 在通话中,测试打印信息,可以看到but ...
- phpspreadsheet导出数据到Excel
之前我们使用PHP导出Excel数据时使用的是PHPExcel库,但是phpoffice已经官方宣布PHPExcel已经被废弃不在维护,推荐使用phpspreadsheet,如下图所示 我们可以通过c ...
- 小程序上传wx.uploadFile - 小程序请假
小程序上传wx.uploadFile UploadTask wx.uploadFile(Object object) 将本地资源上传到服务器.客户端发起一个 HTTPS POST 请求,其中 cont ...
- 哦,这就是java的优雅停机?(实现及原理)
优雅停机? 这个名词我是服的,如果抛开专业不谈,多好的名词啊! 其实优雅停机,就是在要关闭服务之前,不是立马全部关停,而是做好一些善后操作,比如:关闭线程.释放连接资源等. 再比如,就是不会让调用方的 ...
- JavaScript深入(操作BOM对象)
浏览器对象模型(BOM) BOM的核心是window, 向下有: document(文档):document下由button,text,from,等等表单元素组成. location(地址对象),hi ...
- Ubuntu 16.04 系统无法挂载u盘的问题
Ubuntu系统无法挂载U盘设备,提示错误为:mount:未知文件系统类型“exfat”.这是因为Ubuntu默认情况下是不允许挂载U盘的,想在Ubuntu系统下挂载U盘,就要用下面的方法了. sud ...
- VIM -小技巧汇总
一 代码自动对齐: 1 命令行模式下先输入gg 然后按=后输入大写的G,这样整个文件的代码就对齐了. 二 选中多行缩进 1.按v进入visual状态,选择多行,用>或<缩进或缩出 2. 通 ...
- 提纲挈领webrtc音频处理算法之写在前面的话
最近工作用到了webrtc,发现webrtc是个宝库,里面有很多东西值得好好研究. 搜了这方面不少资料,发现介绍使用webrtc的不少,但是针对里面一些算法研究的 不多.特别是能把算法说的简洁明了的更 ...