DTD约束的基本概述

简介: DTD约束的基本概述

一、前言

1.什么是DTD

              DTD,全称为“文档类型定义”(Document Type Definition),是一种定义 XML 或 HTML 等文档的结构的方式。DTD 通常包含对元素、属性、实体、命名空间等方面的定义。

作用:

        DTD 主要用于指定 XML 或 HTML 文档中元素、属性、实体等的定义和规范。使用 DTD 可以定义标记、元素、实体、注释等,从而确保 XML 或 HTML 等文档的结构和格式的正确性。

        DTD 可以内联在 XML 或 HTML 文档中,也可以作为一个外部文件引用,以进行重复使用。通过使用 DTD 可以实现文档的可验证性(验证文档结构是否符合规范)、可读性(便于人类理解)和可扩展性(方便增加和调整文档内容)。

2.什么是XML

            XML(可扩展标记语言)是一种用于描述数据的标记语言,其设计目标是传输数据、数据的存储和数据的交换。XML 的设计宗旨是具有通用性、简单性和易用性,它为所有的语言和所有的操作系统提供了一种统一的数据格式。

XML与HTMl的不同之处:

        XML 与 HTML 类似,但不同于 HTML 的是,XML 可以根据需要定义标记,并允许创建自定义的标记。XML 的标记没有事先定义好,而是由开发者自己定义。XML 的标记需被正确地嵌套,且标记名称需严格相符,这使得XML文档中的数据更加结构化、可读性更高。

       XML 适合于数据的描述、传输和处理,通常应用于数据交换、web服务、数据存储等领域。在 XML 中,节点和属性都是以标记(元素)的形式出现,并且在数据处理方面,XML 通常与 XSL、XQuery、XPath 等技术一起使用,从而实现数据的处理和转换。

二、XML的两种文档约束

在 XML 中,常见的两种文档约束是 DTD 和 XML Schema。

1.DTD(Document Type Definition)文档约束

DTD 是一种基于 XML 的约束语言,它定义了 XML 文档中可以出现哪些元素和属性,以及它们之间的关系和规则。使用 DTD 可以确保 XML 文档的有效性和一致性。

DTD 一般以独立的 .dtd 文件形式存储,也可以直接嵌入到 XML 文档中进行定义。DTD 的定义包括元素(Element)、属性(Attribute)、实体(Entity)、注释(Comment)等。

2.XML Schema 文档约束

XML Schema 是一种基于 XML 的语言,它是一种更强大和灵活的文档约束,可以定义比 DTD 更复杂且精确的数据模型。和 DTD 不同,XML Schema 可以通过命名空间(Namespace)来对不同的元素和属性进行区分。

XML Schema 的定义一般以 .xsd 文件形式存储,也可以作为声明性元素嵌入到 XML 文档中。XML Schema 的定义包括类型(Type)、元素(Element)、属性(Attribute)、注释(Annotation)等。

总的来说,XML Schema 比 DTD 更强大和灵活,但也更加复杂和繁琐,需要更多的学习和使用成本。

三、XML格式要求

既然是门“语言”肯定有约束,下面让我们来看看XMl的约束吧!

1.XML文档有且只有一个根元素

2.XML中的元素必须要有关闭标签(首尾呼应)

3.XML标签严格区分大小写

4.XML的属性需要加双引号

5.XML标签必须正确的嵌套

6.XMl中的特殊字符必须处理

7.XML中合法的使用标签名

四、特殊字符

有特别的字符出现是需要用到特殊标记的。

>     >
< &lt;
& &amp;
' &apos;
" &quot;

五、元素(标签)定义

1.DTD声明

<!DOCTYPE [   ]>

声明用于定义 XML 文档的文档类型、元素、属性、数据类型等的规则。

2.元素(标签)的分类

<!ELEMENT  元素名称   EMPTY>-------------空元素     (一个标签例如:  <br/> )

<!ELEMENT 元素名称  (#PCDATA)>--------文本元素(只有内容没有子标签)

<!ELEMENT 元素名称 (子元素名称1,子元素名称2,...)>--------------混合元素    (有子标签)

3.元素(标签)的限制    

如果混合标签内有多个子标签用“ ”隔开。

存在是非标签用“ | ”隔开(两个标签的情况下)。

允许标签出现零次或者一次用 “ ”。

允许标签出现零次或者N次用 “ * ”。

允许标签出现一次或者N次用 “ + ”。

六、属性定义

1.DTD属性声明

<!ATTLIST 元素名称 属性名称 属性类型 设置说明>

2.type属性类型

  • CDATA:表示属性值是字符数据可以是任意字符。
  • ID:表示属性值是唯一标识符(ID),用于唯一标识文档中的某个元素。
  • IDREF:表示属性值是另一个元素的唯一标识符(ID)引用。
  • IDREFS:表示属性值是多个 IDREF 的空格分隔列表。
  • NMTOKEN:表示属性值是名称令牌(NMTOKEN),只能包含字母、数字、下划线、连字符等标识符字符。
  • NMTOKENS:表示属性值是多个 NMTOKEN 的空格分隔列表。
  • ENTITY:表示属性值是实体引用名称(ENTITY)。
  • ENTITIES:表示属性值是多个实体引用名称(ENTITY)的空格分隔列表。
  • NOTATION:表示属性值是标注名称(NOTATION)。
  • (XXX|XXX):表示选择标签 ,在后面可以设置默认值,但默认值只能是括号内的。

3.设置说明

  • #REQUIRED:属性值必须在元素上出现。
  • #IMPLIED:属性值是可选的。
  • #FIXED value:属性值必须是固定值 value

注意:只有(XXX|XXX)选择标签的时候,desc才可以使用默认的方式并且写了默认值

下面我给大家看一篇我自己写的范文,供参考!

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persons [
<!--元素约束-->
<!ELEMENT persons (person*)>
<!ELEMENT person (name,age,contact,br?)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT contact (phone|email)>
<!ELEMENT phone (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT br EMPTY>
<!--标签约束-->
<!ATTLIST
person pid ID  #REQUIRED
       sex (男|女|变态) "变态"
       qq CDATA #IMPLIED
       parent IDREF #IMPLIED
>
]>
<persons>
  <person pid="p1" sex="男" qq="aaa" parent="p2">
    <name>xxw</name>
    <age>10</age>
    <contact>
      <phone>1234567</phone>
    </contact>
    <br />
  </person>
  <person pid="p2">
    <name>xw</name>
    <age>35</age>
    <contact>
      <email>123@qq.com</email>
    </contact>
  </person>
</persons>

编写不易,博主叹气😥给博主个免费心心吧!!

相关文章
|
9月前
|
Java 数据库连接
hibernate validator】(三)声明和验证方法约束
hibernate validator】(三)声明和验证方法约束
|
19天前
|
XML 存储 数据格式
探索 DTD 在 XML 中的作用及解析:深入理解文档类型定义
DTD(文档类型定义)用于定义XML文档的结构和合法元素、属性。它允许不同团体就数据交换标准达成一致,并用于验证XML数据的有效性。DTD可通过内部声明(在XML文档内)或外部声明(在单独文件中)来定义。内部声明示例显示了如何定义`note`元素及其子元素的结构,而外部声明则引用外部DTD文件。元素、属性、实体和PCDATA/CDATA是XML构建模块。DTD中,元素通过ELEMENT声明定义,属性通过ATTLIST声明定义,实体声明提供特殊字符或外部资源的快捷方式。
22 0
|
存储 Java 数据库
|
8月前
|
XML 存储 程序员
Xml-DTD约束
Xml-DTD约束
19 0
|
9月前
|
Java 数据库连接
【hibernate validator】(六)创建自定义约束
【hibernate validator】(六)创建自定义约束
|
12月前
|
XML 存储 JavaScript
xml基本组成+约束+解析
xml基本组成+约束+解析
|
12月前
|
XML 程序员 数据格式
|
12月前
|
XML 前端开发 数据格式
【XML】标准化DTD与Schema
【XML】标准化DTD与Schema
82 0
|
XML 数据格式
DTD的概念及编写
DTD的概念及编写
|
SQL 存储 数据可视化
Java Web之Hibernate的高级应用(数据库实体关联之间的映射规则、实体继承关系映射、Hibernate查询语言)
Java Web之Hibernate的高级应用(数据库实体关联之间的映射规则、实体继承关系映射、Hibernate查询语言)
157 0
Java Web之Hibernate的高级应用(数据库实体关联之间的映射规则、实体继承关系映射、Hibernate查询语言)