XML文档类型定义(DTD)

2023-11-29 01:58
文章标签 xml 文档 类型定义 dtd

本文主要是介绍XML文档类型定义(DTD),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、格式良好的 XML文档
符合语法的XML文档称为结构良好的XML文档 。

2、有效XML文档
有效XML文档:内容结构严格遵守它自身的标记说明,能通过自身的语法检查;通过DTD验证的XML文档称为有效的XML文档 。

格式良好的XML文档与有效的XML文档的区别?

有效地XML文档肯定是格式良好的XML文档。反过来,一个格式良好的XML文档不一定是有效的XML文档。有效的XML文档遵守DTD或Schema定义的规则。

3、文档类型定义(Document Type Definition,DTD)是关于文档中所用到标记符的语法规则。
4、一个DTD文档包含:

元素(ELEMENT)的定义规则

元素之间的关系规则

属性(ATTLIST)的定义规则

可使用的实体(ENTITY)或符号(NOTATION)规则

5、DTD与XML文档实例的关系

类与对象

数据库表结构与数据记录

6、DTD的基本结构

DTD的基本结构包括XML声明、元素(ELEMENT)声明和属性列表(ATTLIST)声明等。

7、定义元素及其后代

定义元素即对XML文档中所使用元素及其使用方法的定义。定义包括元素名称和构成元素的基本类型两部分,构成元素的基本类型包括简单类型和复合类型两种。

简单的类型:

<!ELEMENT 名称 (#PCDATA)>

符合类型:

<!ELEMENT 我的电脑 (CPU, 内存+, 硬盘+)>

8、元素的定义

元素类型声明的基本格式:

   <!ELEMENT  元素名  元素内容模式>

元素内容模式

•空模式

元素不能包含任何子元素,也不能包含任何数据内容。

语法:<!ELEMENT 元素名 EMPTY>

例DTD定义如下:

<!ELEMENT person EMPTY>

•任意模式

元素可以包含任何子元素或数据

语法:

  <!ELEMENT 元素名 ANY>

•#PCDATA模式

声明为#PCDATA类型的元素是不包含任何其他元素而只包含字符数据即文本数据的元素;

一般语法结构为:
<!ELEMENT 元素名   (#PCDATA)>

#PCDATA示例

  <!ELEMENT title  (#PCDATA)>

对应的XML元素:
<title>元素的数据内容</title>

  <title></title>

•子元素模式

子元素定义集模式用来说明那些有严格层次结构包含关系的元素。利用子元素定义集模式可以说明某元素必须包含哪些子元素及其相互位置、层次关系。

有3种形式:

•逗号[子元素之间有严格的先后顺序]
•竖线[必须任选其一]
•逗号与竖线可以混合使用

例如:

<!ELEMENT 我的电脑 (CPU, 内存, 硬盘)>

<!ELEMENT CPU (AMD | Intel )>

<!ELEMENT GREETINGS  ((SEASON|NAME),POSTFIX)>

9、元素指示符

?修饰符:说明它所修饰的子元素组合可以出现零次或一次,即这种组合可以出现,也可以不出现。

+修饰符:说明它所修饰的子元素组合可以出现一次或一次以上的任意多次,即+修饰符所修饰的子元素组合至少必须出现一次。

*修饰符:说明它所修饰的子元素组合可以出现零次到任意多次,即*修饰符所修饰的子元素组合可以出现,也可以不出现,可以出现一次,也可以出现多次。

<!ELEMENT 我的电脑 (CPU, 内存+, 硬盘+,音响?,描述*)>

10定义元素属性

DTD中的属性声明用来定义所有元素可接受的属性。

在DTD声明元素的同时,还可以指定元素具有的属性。DTD中的属性声明不仅约束了XML文档中元素的属性名,还约束了元素的取值类型。

属性定义的一般语法:

<!ATTLIST 元素名 属性名1  属性1类型   缺省的属性1取值

           属性名2  属性2类型   缺省的属性2取值

                               属性名3  属性3类型   缺省的属性3取值

>

元素属性的声明顺序不对XML文档构成限制,但为了便于理解和后期维护,这里建议在XML文档中的属性顺序应按照其引用的DTD中的声明顺序来排列。

11、预定义属性值

元素某属性可能是在XML文档定义时必须单独填写的,也可以是可有可无的,还可能要求必须使用某一个指定的值。这些要求决定了DTD必须分别对待不同情况。#REQUIRED、#IMPLIED、#FIXED三个关键词与上诉三种情况分别对应。

#REQUIRED

属性不能忽略,必须在元素的属性列表中出现

#IMPLIED

可选属性,可以不在元素的属性列表中出现

#FIXED

可选属性,如出现此属性,则其取值必须是固定的属性值。如忽略此属性,在验证文档后,元素将隐含此属性,其取值为固定的属性值

这篇关于XML文档类型定义(DTD)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/431034

相关文章

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图

Python批量替换多个Word文档的多个关键字的方法

《Python批量替换多个Word文档的多个关键字的方法》有时,我们手头上有多个Excel或者Word文件,但是领导突然要求对某几个术语进行批量的修改,你是不是有要崩溃的感觉,所以本文给大家介绍了Py... 目录工具准备先梳理一下思路神奇代码来啦!代码详解激动人心的测试结语嘿,各位小伙伴们,大家好!有没有想

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎

Python调用LibreOffice处理自动化文档的完整指南

《Python调用LibreOffice处理自动化文档的完整指南》在数字化转型的浪潮中,文档处理自动化已成为提升效率的关键,LibreOffice作为开源办公软件的佼佼者,其命令行功能结合Python... 目录引言一、环境搭建:三步构建自动化基石1. 安装LibreOffice与python2. 验证安装

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre