XML学习笔记2??DTD_html/css_WEB-ITnose
在上一篇笔记中,将文档类型分类时,曾经根据文档是否使用并遵守了DTD或Schema来区分为格式良好的XML和有效的XML,那么什么是DTD和Schema呢?DTD和Schema都是用来规范XML文档的,对XML文档进行语义约束的,DTD简单易用,Schema则功能强大。在这篇笔记中,首先学习一下DTD(Document Type Definition,文档类型定义)。
1、在XML文档中怎么使用DTD
导入方式 | 语法格式 | 说明 |
内部DTD |
<!DOCTYPE 根元素名[ 元素描述]> Salin selepas log masuk | 将DTD定义放在XML文档内部,紧跟在XML声明和处理指令后面 如:
]> |
外部DTD |
<!DOCTYPE 根元素名 SYSTEM "外部DTD的URI"> Salin selepas log masuk | 将DTD单独定义在一个文件内,然后通过关键字SYSTEM导入DTD 如: |
公用DTD |
<!DOCTYPE 根元素名 PUBLIC "DTD的标识名" "公用DTD的URI"> Salin selepas log masuk | 公用DTD,这种DTD一般是由某个权威机构指定,供特定行业或公众使用,通过关键字PUBLIC导入 如: |
2、 DTD的结构
DTD文档本身不是XML文档,而只是为XML定义语义约束的文档,DTD文档的语法非常简单,大致有如下结构:
(1)第一行是DTD文档的声明,语法和XML的声明相同
(2)0到多个注释部分,DTD注释与XML注释语法相同
(3)0到多个定义,每个定义一个XML元素
(4)0到多个定义,每个为XML元素定义一个属性
(5)0到多个定义,每个定义一个实体
(6)0到多个定义,每个定义一个符号
其中、、、4个定义彼此完全独立,无须互相嵌套,下面就逐一说明这四种定义。
3、定义元素
(1)元素类型定义,Element Type Definition,简称ETD
(2) 元素类型
元素类型 | 定义格式 | 说明 |
任意类型 | 元素可以是字符串,可以是空元素,也可以包含子元素 | |
字符串值 | 元素值只能是字符串,不可以是空元素,也不能包含子元素 | |
空元素 | ||
包含子元素 | 比较复杂,需要详细定义子元素之间的顺序以及子元素出现的次数等 | |
混合类型 | 指定值只能是几个确定的类型,比任意类型有更强的约束,但功能相当,应尽量使用混合类型 |
关于混合类型的定义,说明几点:
A:#PCDATA必须放在最前面
B:#PCDATA和各子元素之间只能用竖线(|)分隔,不要使用逗号分隔
C:不要在子元素之后使用?、*、+等表示频率的修饰符
(3)定义子元素
定义子元素的语法 | 说明 | 子元素的出现频率修饰词 | 说明 |
(子元素1,子元素2,...) | 使用英文逗号定义有序的子元素 | 默认(没有修饰词) | 出现一次,且只能出现一次 |
(子元素1|子元素2|...) | 使用竖线定义互斥的子元素 | ? | 出现0或1次 |
((子元素1,子元素2)|(子元素3,子元素4)) | 使用括号将子元素分组 | + | 出现1或多次 |
(子元素1|子元素2|...)+ | 使用竖线互斥,然后使用频率修饰实现定义无序的子元素 | * | 出现0或多次 |
4、定义属性
在XML中,属性不能单独存在,因此定义属性时必须指定属于哪个元素。定义属性的语法格式如下:
<!ATTLIST 属性所属的元素名称 属性名称 属性类型 [元素对属性的约束] [默认值]>
(1)属性类型
类型 | 说明 |
CDATA | 该属性值只能是字符串数据 |
(en1|en2|en3) | 该属性值必须是一系列枚举值之一 |
ID | 该属性值必须是有些的标识符,且该属性值可用于标识该元素,因此必须在此XML文档中唯一 |
IDREF | 该属性值必须是引用另一个已有的ID类型的属性值 |
IDREFS | 该属性值必须是引用已有的一个或多个ID类型的属性值,多个ID类型的属性值之间使用空格分隔 |
NMTOKEN | 该属性值必须是合法的XML名称,必须是字符串数据,比CDATA约束更强,只能由字母、数字、下划线、中划线,点号和冒号组成 |
NMTOKENS | 该属性值必须是一个或多个NMTOKEN类型的属性值,多个使用空格分隔 |
ENTITY | 该属性值是一个外部实体,比如图片 |
ENTITIES | 该属性值是一个或多个ENTITY类型的属性值,多个使用空格分隔 |
NOTATION | 该属性值是在DTD中声明过的符号(NOTATION),这是个将要过期的规范,尽量避免使用 |
xml: | 该属性值是一个预定义的XML值 |
(2)元素对属性的约束与默认值的关系
元素对属性的约束 | 说明 | 默认值 |
未指定 | 必须指定默认值 | |
#REQUIRED | 必须的属性,必须为相应元素提供该属性 | 不能指定默认值 |
#IMPLIED | 该属性可有可无 | 不能指定默认值 |
#FIXED | 该属性值是固定的,定义时必须指定固定值 | 必须指定默认值 |
5、定义实体
实体引用就是用一个字符串代替另一个字符串,类似于C语言中的宏,上一篇笔记中已经提到过XML中内置的5个实体引用,在这里接着看看怎么自定义实体引用。
实体类型 | 使用场所 | 定义语法 | 使用语法 | 说明 |
普通实体 | XML | &实体名; | ||
参数实体 | DTD | %实体名; | 必须在使用前先定义 | |
外部实体 | XML | &实体名; | 这里外部文件必须是满足XML文档结构的文本文档 | |
公用外部实体 | XML | &实体名; | ||
外部参数实体 | DTD | %实体名; | ||
公用外部参数实体 | DTD | %实体名; | ||
未解析实体 | XML | 需要通过ENTITY等类型的属性调用 | 未解析实体不能由XML文档解析,而需要根据相应的符号名去解析 | |
公用未解析实体 | XML |
6、定义符号
定义符号也有两种语法格式,分别定义普通符号和公用符号:
符号类型 | 定义语法 |
普通符号 | |
公用符号 |
符号值通常有两种形式:
(1)MIME:通用MIME类型的文件总是由相应的程序负责处理
(2)外部程序所在路径:直接指定某个外部程序负责处理XML文档中的外部数据
符号通常有两种用途:
(1)如上,符号可以用来定义未解析实体
(2)符号可以作为ENTITY或ENTITIES类型的属性值
(3)符号还可以作为NOTATION类型的属性的值,定义NOTATION类型的属性时,语法如下:
<!ATTLIST 属性所属的元素 属性名 NOTATION (值1|值2|...) 约束 默认值>
比一般的属性定义多一个值的列表。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Artikel ini membincangkan html & lt; kemajuan & gt; elemen, tujuan, gaya, dan perbezaan dari & lt; meter & gt; elemen. Tumpuan utama adalah menggunakan & lt; kemajuan & gt; untuk menyelesaikan tugas dan & lt; meter & gt; untuk stati

Artikel ini membincangkan html & lt; datalist & gt; elemen, yang meningkatkan bentuk dengan menyediakan cadangan autokomplete, meningkatkan pengalaman pengguna dan mengurangkan kesilapan. Kira -kira: 159

Artikel ini membincangkan html & lt; meter & gt; elemen, digunakan untuk memaparkan nilai skalar atau pecahan dalam julat, dan aplikasi umum dalam pembangunan web. Ia membezakan & lt; meter & gt; dari & lt; kemajuan & gt; dan Ex

Artikel ini membincangkan tag Meta Viewport, penting untuk reka bentuk web responsif pada peranti mudah alih. Ia menerangkan bagaimana penggunaan yang betul memastikan skala kandungan yang optimum dan interaksi pengguna, sementara penyalahgunaan boleh membawa kepada isu reka bentuk dan kebolehaksesan.

Artikel ini membincangkan menggunakan atribut pengesahan bentuk HTML5 seperti had, corak, min, max, dan panjang untuk mengesahkan input pengguna secara langsung dalam penyemak imbas.

Artikel ini menerangkan html5 & lt; time & gt; elemen untuk perwakilan tarikh/masa semantik. Ia menekankan pentingnya atribut DateTime untuk pembacaan mesin (format ISO 8601) bersama teks yang boleh dibaca manusia, meningkatkan aksesibilit

Artikel ini membincangkan & lt; iframe & gt; Tujuan TAG dalam membenamkan kandungan luaran ke dalam halaman web, kegunaan umum, risiko keselamatan, dan alternatif seperti tag objek dan API.

Artikel membincangkan amalan terbaik untuk memastikan keserasian silang pelayar HTML5, memberi tumpuan kepada pengesanan ciri, peningkatan progresif, dan kaedah ujian.
