DTD -- XML验证
DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。
DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。
DTD简介
内部的 DOCTYPE 声明
假如 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>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend</body> </note>
!DOCTYPE note (第二行)定义此文档是 note 类型的文档。
!ELstrongENT note (第三行)定义 note 元素有四个元素:"to、from、heading,、body"
!ELstrongENT to (第四行)定义 to 元素为 "#PCDATA" 类型
!ELstrongENT from (第五行)定义 frome 元素为 "#PCDATA" 类型
!ELstrongENT heading (第六行)定义 heading 元素为 "#PCDATA" 类型
!ELstrongENT body (第七行)定义 body 元素为 "#PCDATA" 类型
外部文档声明
假如 DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个 DOCTYPE 定义中:
<!DOCTYPE root-element SYSTEM "filename">
以下是 XML 文档,这个XML文档和上面的 XML 文档相同,但是拥有一个外部的 DTD:
<?xml version="1.0"?> <!DOCTYPE note SYSTEM "note.dtd"> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
这是包含 DTD 的 "note.dtd" 文件:
<!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
为什么使用 DTD?
通过 DTD,您的每一个 XML 文件均可携带一个有关其自身格式的描述。
通过 DTD,独立的团体可一致地使用某个标准的 DTD 来交换数据。
而您的应用程序也可使用某个标准的 DTD 来验证从外部接收到的数据。
您还可以使用 DTD 来验证您自身的数据。
DTD - XML 构建模块
XML 文档构建模块
所有的 XML 文档(以及 HTML 文档)均由以下简单的构建模块构成:
Elements :元素
Attributes :属性
Entities :实体
PCDATA :
意思是被解析的字符数据(parsed character data)。
可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。
PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。
文本中的标签会被当作标记来处理,而实体会被展开。
不过,被解析的字符数据不应当包含任何 &、< 或者 > 字符;需要使用 &、< 以及 > 实体来分别替换它们。
CDATA :
意思是字符数据(character data)。
CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。
DTD - 元素
在一个 DTD 中,元素通过元素声明来进行声明。
声明一个元素
在 DTD 中,XML 元素通过元素声明来进行声明。元素声明使用下面的语法:
<!ELEMENT element-name category> 或 <!ELEMENT element-name (element-content)>
空元素
空元素通过类别关键词EMPTY进行声明:
<!ELEMENT element-name EMPTY>实例:<!ELEMENT br EMPTY>XML example:<br />
只有 PCDATA 的元素
只有 PCDATA 的元素通过圆括号中的 #PCDATA 进行声明:
<!ELEMENT element-name (#PCDATA)>实例:<!ELEMENT from (#PCDATA)>
带有任何内容的元素
通过类别关键词 ANY 声明的元素,可包含任何可解析数据的组合:
<!ELEMENT element-name ANY>实例:<!ELEMENT note ANY>
带有子元素(序列)的元素
带有一个或多个子元素的元素通过圆括号中的子元素名进行声明:
<!ELEMENT element-name (child1)> 或 <!ELEMENT element-name (child1,child2,...)>实例:<!ELEMENT note (to,from,heading,body)>
当子元素按照由逗号分隔开的序列进行声明时,这些子元素必须按照相同的顺序出现在文档中。在一个完整的声明中,子元素也必须被声明,同时子元素也可拥有子元素。"note" 元素的完整声明是:
<!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
声明只出现一次的元素
<!ELEMENT element-name (child-name)>实例:<!ELEMENT note (message)>
上面的例子声明了:message 子元素必须出现一次,并且必须只在 "note" 元素中出现一次。
声明最少出现一次的元素
<!ELEMENT element-name (child-name+)>实例:<!ELEMENT note (message+)>
上面的例子中的加号(+)声明了:message 子元素必须在 "note" 元素内出现至少一次。
声明出现零次或多次的元素
<!ELEMENT element-name (child-name*)>实例:<!ELEMENT note (message*)>
上面的例子中的星号(*)声明了:子元素 message 可在 "note" 元素内出现零次或多次。
声明出现零次或一次的元素
<!ELEMENT element-name (child-name?)>实例:<!ELEMENT note (message?)>
上面的例子中的问号(?)声明了:子元素 message 可在 "note" 元素内出现零次或一次。
声明"非.../既..."类型的内容
实例:<!ELEMENT note (to,from,header,(message|body))>
上面的例子声明了:"note" 元素必须包含 "to" 元素、"from" 元素、"header" 元素,以及非 "message" 元素既 "body" 元素。
声明混合型的内容
实例:<!ELEMENT note (#PCDATA|to|from|header|message)*>
上面的例子声明了:"note" 元素可包含出现零次或多次的 PCDATA、"to"、"from"、"header" 或者 "message"。
DTD - 属性
DTD - 实体
转载于:https://www.cnblogs.com/hf8051/p/4846432.html
DTD -- XML验证相关推荐
- XML—— 验证XML文档
[0]README 0.0)本文文字描述转自 core java volume 2 , 旨在理解 XML-- 验证XML文档 的基础知识 0.1)problem+solution (干货--不推荐使用 ...
- eclipse 关闭英文拼写检查,关闭xml验证
eclipse 关闭英文拼写检查,关闭xml验证 1. 关闭英文拼写检查 Preferences–>General–>Editors–>Text Editors–>Spelli ...
- Java工具类——通过配置XML验证Map
Java工具类--通过配置XML验证Map 背景 在JavaWeb项目中,接收前端过来的参数时通常是使用我们的实体类进行接收的.但是呢,我们不能去决定已经搭建好的框架是怎么样的,在我接触的框架中有一种 ...
- java xml 验证工具_验证xml格式
原文链接http://zhhll.icu/2020/12/20/xml/xml%E7%9A%84%E6%A0%BC%E5%BC%8F/ 验证xml格式 DTD验证 可以使用DTD来定义XML文档的合法 ...
- xml验证 java代码,使用Java代码进行XML验证
我需要一些代码示例,该示例说明如何针对架构验证xml文件.下面是我的XML文档: January 21 1983 我要针对其验证上述XML的架构是: schemaLocation="http ...
- 关闭英文拼写检查,关闭xml验证
http://blog.sina.com.cn/s/blog_70b623e4010173ce.html eclipse里面的许多设置对于国内开发者日常使用不太适用,反而会成为干扰.既然是完全可配置的 ...
- DTD – XML 构建模块概述
XML 和 HTML文档的主要的构建模块是元素标签. XML 文档构建模块 所有的 XML 文档(以及 HTML 文档)均由以下简单的构建模块构成: 元素 属性 实体 PCDATA CDATA 元素 ...
- struts2 xml 验证出现 Invalid field value for field 的解决方法(转)
缺省情况下, 所有的装换错误使用通用的i18n信息 xwork.default.invalid.fieldvalue , 你可以在你的全局il8n资源包中替换他(缺省文本是"Invalid ...
- web 前端学习线路图
web 前端学习线路图 一.HTML 教程 HTML教程 HTML简介 HTML编辑器 HTML基础 HTML元素 HTML属性 HTML标题 HTML段落 HTML样式 HTML格式化 HTML引用 ...
最新文章
- IDEA报错Web server failed to start. Port 8080 was already in use的解决方法
- php 正则表达式 匹配中日韩字符(GBK)
- 如何为JBoss Developer Studio 8设置集成和SOA工具
- 魔兽三国服务器维护,魔兽三国开服七天技巧
- 数据库学习,树形结构的数据库表Schema设计方案
- Qt工作笔记-QGraphics框架场景中图元的移除与析构
- 小玉在游泳(洛谷-P1423)
- MySQL 历史版本安装和下载
- Apache常见配置及问题
- 四轮驱动移动机器人(SSMR)与两轮差速驱动机器人、car-like robot的对比分析
- javascript手机号码、电子邮件正则表达式 一种解决方案
- [Java基础] 使用JMAP dump及分析dump文件
- 如何编写用户故事的验收标准
- Spring实战(第4版)第1章 Spring之旅
- 汇编语言程序设计思维导图
- 不确定性原理的前世今生(转载)
- 计组--CISC和RISC特点和区别
- 从第三方应用跳回uniapp开发的app
- C语言 指针的解引用详解
- 最小覆盖模型matlab_MATLAB求解最小球覆盖问题
热门文章
- 牛客网编程练习之编程马拉松:解读密码
- Swift:如何判断一个对象是否是某个类(或其子类)的实例
- sharepoint 2010 彻底删除用户
- 用C#抓取AJAX页面的内容
- 上班族不知不觉发财的十大秘诀
- mysql 之 一个库中所有表复制到另一个数据库中的方法和工具
- 窗口句柄、窗口类对象的关系
- python 列表比较不同_python实现比较两段文本不同之处的方法
- std::ostream_iterator、std::cout、std:copy实现输出
- Android开发之限制输入框长度 | 限制EditText输入长度 | 限制AppCompatEditText长度的方法