搜尋
首頁web前端html教學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 根元素名[     元素描述]>

将DTD定义放在XML文档内部,紧跟在XML声明和处理指令后面

如:

    

     ]>

外部DTD

<!DOCTYPE 根元素名 SYSTEM "外部DTD的URI">

将DTD单独定义在一个文件内,然后通过关键字SYSTEM导入DTD

如:

公用DTD

<!DOCTYPE 根元素名 PUBLIC "DTD的标识名" "公用DTD的URI">

公用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|...) 约束 默认值>

比一般的属性定义多一个值的列表。

 

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
HTML的角色:構建Web內容HTML的角色:構建Web內容Apr 11, 2025 am 12:12 AM

HTML的作用是通過標籤和屬性定義網頁的結構和內容。 1.HTML通過到、等標籤組織內容,使其易於閱讀和理解。 2.使用語義化標籤如、等增強可訪問性和SEO。 3.優化HTML代碼可以提高網頁加載速度和用戶體驗。

HTML和代碼:仔細觀察術語HTML和代碼:仔細觀察術語Apr 10, 2025 am 09:28 AM

htmlisaspecifictypefodyfocusedonstructuringwebcontent,而“代碼” badlyLyCludEslanguagesLikeLikejavascriptandPytyPythonForFunctionality.1)htmldefineswebpagertuctureduseTags.2)“代碼”代碼“ code” code code code codeSpassSesseseseseseseseAwiderRangeLangeLangeforLageforLogageforLogicIctInterract

HTML,CSS和JavaScript:Web開發人員的基本工具HTML,CSS和JavaScript:Web開發人員的基本工具Apr 09, 2025 am 12:12 AM

HTML、CSS和JavaScript是Web開發的三大支柱。 1.HTML定義網頁結構,使用標籤如、等。 2.CSS控製網頁樣式,使用選擇器和屬性如color、font-size等。 3.JavaScript實現動態效果和交互,通過事件監聽和DOM操作。

HTML,CSS和JavaScript的角色:核心職責HTML,CSS和JavaScript的角色:核心職責Apr 08, 2025 pm 07:05 PM

HTML定義網頁結構,CSS負責樣式和佈局,JavaScript賦予動態交互。三者在網頁開發中各司其職,共同構建豐富多彩的網站。

HTML容易為初學者學習嗎?HTML容易為初學者學習嗎?Apr 07, 2025 am 12:11 AM

HTML適合初學者學習,因為它簡單易學且能快速看到成果。 1)HTML的學習曲線平緩,易於上手。 2)只需掌握基本標籤即可開始創建網頁。 3)靈活性高,可與CSS和JavaScript結合使用。 4)豐富的學習資源和現代工具支持學習過程。

HTML中起始標籤的示例是什麼?HTML中起始標籤的示例是什麼?Apr 06, 2025 am 12:04 AM

AnexampleOfAstartingTaginHtmlis,beginSaparagraph.startingTagSareEssentialInhtmlastheyInitiateEllements,defiteTheeTheErtypes,andarecrucialforsstructuringwebpages wepages webpages andConstructingthedom。

如何利用CSS的Flexbox佈局實現菜單中虛線分割效果的居中對齊?如何利用CSS的Flexbox佈局實現菜單中虛線分割效果的居中對齊?Apr 05, 2025 pm 01:24 PM

如何設計菜單中的虛線分割效果?在設計菜單時,菜名和價格的左右對齊通常不難實現,但中間的虛線或點如何...

在線代碼編輯器究竟用什麼HTML元素實現代碼輸入?在線代碼編輯器究竟用什麼HTML元素實現代碼輸入?Apr 05, 2025 pm 01:21 PM

網頁代碼編輯器中的HTML元素分析許多在線代碼編輯器允許用戶輸入HTML、CSS和JavaScript代碼。最近,有人提出了一...

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),