XML以及DTD详解

简介: XML以及DTD详解

前言

框架通常借助设计模式、反射和配置文件等技术实现灵活的开发和可扩展性。而常见的配置文件有xml文件,今天我们就来学习它(今天主要介绍XML,以及XML的DTD约束)。

一、XML

1.1XML概念

  • XML 指可扩展标记语言(eXtensible Markup Language)
  • XML是一种常见的配置文件格式,可以使用各种XML解析器来解析和读取XML配置文件。XML可以方便地表示复杂的数据结构和层次关系,并且可以通过DTD或XSD等方式进行验证
  • 常用的技术:约束(Schema/DTD)、解析(Parsing)和建模技术(XML Schema/Relax NG)

1.2XML作用

1.2.1数据交换

XML可以作为数据交换的中间格式,供应用程序之间进行数据传输和交换。例如,Web服务可以使用XML格式传输数据。

1.2.2数据存储

XML可以作为数据存储格式,存储各种结构化数据,例如配置文件、日志文件、数据库数据等等。XML的可扩展性和灵活性使得它成为一个方便、可靠和可读的数据存储和传输方式。

1.2.3Web应用

XML是Web应用的核心技术之一,主要用于定义Web服务、SOAP消息、XML文档等。

1.2.4数据分析

XML可以作为数据分析的输入,将数据从文件中提取出来,并使用XML Schema或XSLT进行转换和处理。

1.3XML标准格式

  • XML声明:以 <?xml 版本="1.0" ?>的形式出现在XML文档的第一行,用于说明XML的版本和编码方式等信息。
  • 根元素:XML文档的根元素是XML文档的最外层元素,一个XML文档只能有一个根元素。
  • 元素:XML文档中的各个元素分别由开始标签、结束标签和元素内容组成。
  • 标签大小写正确区分;正确结束标签;正确嵌套标签
  • 属性:元素可以拥有零个或多个属性,属性是以键值对的形式出现在元素的开始标签中的。
  • 注释:以的形式出现在XML文档中,用于标记注释或者说明。

二、DTD约束

2.1概念

  • DTD(Document Type Definition)是一种用于定义XML文档结构和格式的语言,它可以用于定义XML文档的元素、属性、值、实体等信息,并对这些信息进行约束和验证。
  • DTD约束是指DTD规范定义的一些规则和约束,用于检查和验证XML文档是否符合DTD定义的结构和格式要求

2.2作用

DTD约束可以帮助开发人员检查和验证XML文档的结构、格式和内容是否符合规范和要求。通过使用DTD约束,可以确保XML文档在传递、存储和处理数据时的完整性、一致性和可靠性

2.3在XML中添加DTD

这跟在html里用css一样,可以外部引入,也可以内嵌。

<?xml version="1.0" encoding="UTF-8"?>
<!--外部引入-->
<!DOCTYPE catalog SYSTEM "root.dtd">
<!--自定义-->
<!DOCTYPE root[]>

三、常见的DTD约束

3.1元素约束

DTD可以用ELEMENT关键字定义XML文档中的元素和元素类型,约束元素在XML文档中出现的顺序、出现次数和内容等。

3.1.1元素的分类

空元素类

空元素类定义一个元素,只有开始标签;没有结束标签或结束标签是可选的。用<!ELEMENT ... EMPTY>来定义,例如:

<!ELEMENT hr EMPTY>

,表示“hr”元素为空元素,不需要结束标签。

文本元素类

指XML元素只包含文本数据,不包含子元素的类型,使用#PCDATA来定义。

例如,下面是一个文本元素类型的DTD定义:

<!ELEMENT title (#PCDATA)>

以上定义了一个名为title的元素,它只包含文本数据。

子元素序列类

子元素序列类定义了一组元素,这些元素必须以特定的顺序出现。序列元素类使用逗号分隔元素定义。例如:

<!ELEMENT person (name, telephone, email)>

表示“person”元素依次包含“name”、“telephone”、“email”三个子元素。

子元素选项类

子元素选项类定义了一组元素,这些元素中只能选择其中的一个来出现。用分隔符“|”组合多个定义项。例如:

<!ELEMENT phone (fax | email | url)>

表示“phone”元素中只能包含其中之一的子元素。

混合元素类

混合元素类包含了文本和子元素,即一个元素可以同时包含纯文本和子元素。

<!ELEMENT ... (#PCDATA | e1 | e2 |...) ><!ELEMENT ... (#PCDATA , e1 , e2 , ...) > 来定义.例如:

<!ELEMENT title (#PCDATA | emp | publisher)>

表示元素"title"可以包含文本和子元素“emp”和“publisher”这其中一个。

<!ELEMENT title (#PCDATA , emp , publisher)>

表示“title”元素依次包含文本和子元素“emp”和“publisher”。

3.1.2元素次数约束

使用+*以及?表示元素的出现次数。+表示元素至少出现一次,*表示元素可以出现零次或多次。对于一些特殊的元素出现次数约束,还可以使用?表示元素可以出现零次或一次。

例如:

<!ELEMENT title (#PCDATA , emp , publisher)*>

表示“title”元素依次包含文本和子元素“emp”和“publisher”,这些元素可以任意出现零次或多次。

3.2属性约束

DTD可以用ATTLIST关键字定义XML文档中的属性,约束属性的类型、值域和默认值等。

3.2.1属性类型

CDATA(Character Data)

字符数据类型,表示元素的属性可以是任何字符串,没有限制。

可以看到不管是什么字符串,都没有任何报错

ID(Identifier)

标识符类型,表示元素的属性值必须是唯一且非空的,它必须以字母或下划线开头,后跟字母、数字、连字符、下划线或句点的任意组合。

可以看到不满足条件的都会报错

我们将其修改成符合格式的:

IDREF(ID Reference)

引用标识符类型,表示元素的属性值必须引用其他元素的ID属性值。

ENTITY(实体类型)

表示元素的属性值必须是一个已定义的实体名称。

在这个例子中,我们使用#ENTITY声明了一个叫做author的实体,它的值是一个字符串John Doe。同时我们还声明了一个名为company的实体,它的值是ABC corp。在使用这些实体时,我们可以在合适的地方通过实体引用符(&和;)来调用这些实体,如上例中的&author;和&company;。

用实体的目的是在XML文档中共享和重复使用一些预定义的数据或代码块,可以提高代码的重用性和维护性

NMTOKEN(Name Token)

名称标记类型,表示元素的属性值必须是一个有效的名称标记,只能由字母、数字、下划线等字符组成,且不能以数字开头。通常用来实现非空需求,但它可重复。

3.2.2属性描述

#REQUIRED

属性值是必需的。

#IMPLIED

属性值是可选的,但在某些情况下可能需要使用它。

#FIXED value

定义固定属性值。这个属性值不能被修改。

好啦,今天的分享就到此为止!希望你看完本篇文章有所收获,祝你变得更强!!!

目录
相关文章
|
5月前
|
XML 开发框架 JSON
J2EE基础XML(dtd)
J2EE基础XML(dtd)
42 0
|
6月前
|
XML 存储 Java
XML之dtd
XML之dtd
70 0
|
6月前
|
XML 存储 开发框架
J2EE之XML(dtd篇超详细)
J2EE之XML(dtd篇超详细)
34 0
|
7月前
|
XML 存储 数据可视化
XML DTD原理及使用
是一种可扩展的标记语言,用于存储和交换数据,它被设计成具有简单、易于理解的格式,并能够方便地在不同的系统和应用程序之间共享数据。XML的语法规则类似于HTML,但XML的目的不仅仅是用于显示数据,更是用于描述数据的结构和关系。与HTML相比,XML更加严格和规范,它需要通过或RELAX NG等方式定义文档的结构,同时还可以使用命名空间和XSLT等技术来处理和转换XML文档。独立于任何特定的操作系统、平台或开发环境。可以与许多不同的编程语言和应用程序进行交互。
|
7月前
|
XML JSON 数据格式
XML之DTD
XML之DTD
38 0
|
1天前
|
XML 存储 数据格式
探索 DTD 在 XML 中的作用及解析:深入理解文档类型定义
DTD(文档类型定义)用于定义XML文档的结构和合法元素、属性。它允许不同团体就数据交换标准达成一致,并用于验证XML数据的有效性。DTD可通过内部声明(在XML文档内)或外部声明(在单独文件中)来定义。内部声明示例显示了如何定义`note`元素及其子元素的结构,而外部声明则引用外部DTD文件。元素、属性、实体和PCDATA/CDATA是XML构建模块。DTD中,元素通过ELEMENT声明定义,属性通过ATTLIST声明定义,实体声明提供特殊字符或外部资源的快捷方式。
4 0
|
4月前
|
XML 设计模式 数据格式
XML中的DTD
XML中的DTD
23 0
|
5月前
|
XML 存储 数据格式
XML之DTD
XML之DTD
51 0
|
5月前
|
XML 存储 NoSQL
XML中DTD的基本使用
XML中DTD的基本使用
62 0
|
6月前
|
XML 数据格式
XML基础入门:关于DTD知识点
XML基础入门:关于DTD知识点
36 0