目錄
DTD詳解" >DTD詳解
基本概述
基本語法
實體

DTD詳解

Feb 20, 2017 pm 03:06 PM

DTD詳解

基本概述


    文檔類型定義(Document Type Definition)是一套為了進行程式間的資料交換而建立的關於標記符的語法規則。它是標準通用標記語言(SGML)和可擴展標記語言(XML)1.0版規格的一部分,文件可根據某種DTD語法規則驗證格式是否符合此規則。文檔類型定義也可用做保證標準通用標記語言、可擴展標記語言文檔格式的合法性,可透過比較文檔和文檔類型定義文件來檢查文檔是否符合規範,元素和標籤使用是否正確。檔案實例提供應用程式一個資料交換的格式。

PS:簡而言之,DTD就是用來約束XML文檔的,使其在一定的規範下使用,除了DTD技術外,還有Schema技術,也是用於約束XML文檔的。

參考文件:DTD http://www.php.cn/

參考文件: Schema http://www.php.cn/

 

DTD原理圖

PS:透過DTD約束,XML就能在DTD的限制下進行自訂了,不過DTD有個缺點,那就是不能對資料進行數值約束這種範圍約束。

 

DTD文件的聲明及引用

內部DTD文件

根元素 [定義內容]>

外部DTD文件

根元素 SYSTEM "DTD 檔案路徑">

內部外部DTD文件結合

根元素 SYSTEM "DTD檔案路徑" [

定義內容

]>

注意事項:

1、定義關鍵字一定要大寫,例如: DOCTYPE*​​&*ELEMENTATTLIST

2

當引用的文件在本地時,採用以下方式:

文檔根結點 SYSTEM "DTD檔案的URL">

例如: 書架 SYSTEM book. dtd>

當引用的文件是一個公共的文件時,採用以下方式:

文檔根結點 PUBLIC "DTD名稱" "DTD檔案的URL">

例如: "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

 

DTD元素

基本語法

    

解釋:

ELEMENT:關鍵字(必須大寫)

NAME:元素名稱。

CONTENT:元素類型,有四種,都必須大寫。

    1EMPTY-此元素不能包含子元素和文本,但可以有屬性(空元素)

    2ANY-此元素可包含任何在DTD中定義的元素內容

    3#PCDATA-可以包含任何字元數據,但是不能在其中包含任何子元素

    4、其它類型(組合),可以是子元素,子元素與修飾符組合,基本元素與子元素與修飾符組合。

 

案例:

班級 (學生+,作者)>

學生 (名字,年齡,介紹)>

< ;!ELEMENT 作者 (#PCDATA)>

名字 (#PCDATA)>

年齡 (#PCDATA)>

介紹  (#PCDATA)>

 

修飾符

符號 

用途 

範例

範例說明

(  )

用來將元素分組 

(古龍|金庸|梁羽生),(王朔|餘傑)

分成兩組

|

在列出的物件中選擇一個 

(男人|女人) 

表示男人或女人必須出現,而且只能選一個 

+

該物件最少出現一次,可以出現多次 (1或多次)

(成員+ 

表示成員必須出現,且可以出現多個成員

*

該物件允許出現零次到任意多次(0 到多次)

(嗜好* 

嗜好可以出現零次到多次

?

該物件可以出現,但只能出現一次 (01)

(菜鳥? 

菜鳥可以出現,也可以不出現,如果出現的話,最多只能出現一次 

,

物件必須依照指定的順序出現 

(西瓜,蘋果,香蕉) 

表示西瓜、蘋果、香蕉必須出現,並且依照這個順序出現 


DTD屬性

基本語法


元素名稱

屬性名稱    類型    屬性特性

屬性名稱    類型    屬性特性…...

>

解釋:

ATTLIST:屬性列表,(必須大寫)。

元素名稱:對應的元素的名稱。

屬性:屬性能夠有多個,其格式是名稱 類型 屬性特性

類型:


PS:常用的有CDATA(字符型),枚舉(枚舉格式是(1| 2|3...))ID(ID 不能重複,不能以數字開頭)IDREF(引用另一個ID)IDREFS(可以引用多個ID值,以空格隔開)

 

屬性特性有:


案例:

<!ELEMENT 班级 (学生+,作者)>
<!ATTLIST 班级
	班次 CDATA "1班"
	编号 ID #REQUIRED
>
<!ELEMENT 学生 (名字,年龄,介绍)>
<!ELEMENT 作者 (#PCDATA)>
<!ATTLIST 学生
	地址 CDATA #IMPLIED
	授课方式 CDATA #FIXED "面授"
	学号 ID #REQUIRED
	班级编号 IDREF #REQUIRED
	朋友 IDREFS #IMPLIED
>
<!ELEMENT 名字 (#PCDATA)>
<!ELEMENT 年龄 (#PCDATA)>
<!ELEMENT 介绍 (#PCDATA)>
登入後複製


實體

    實體有引用實體和參數實體兩種,引用實體一般是在XML使用,參數實體一般是在DTD中使用。

基本語法

實體名稱 「實體內容」 > // 引用實體

實體名稱 "實體內容" > // 參數實體

解釋:

1、引用實體可以在引用了DTDXML檔案中,使用&實體名稱;來使用實體內容。

2、不知道是不是我的電腦原因,外部DTD中不能用引用實體,如果用將引用實體定義放在內部DTD中,則可使用。

3、參數實體在DTD中使用,使用%實體名稱;使用

4、可以将那些重复使用的值定义成实体,这样能减少代码的冗余度。

5、在外部DTD中,引用实体最好放在DTD底部,参数实体最好放在DTD顶部。

案例:

<!ENTITY % sex "男|女">
<!ELEMENT 班级 (学生+,作者)>
<!ELEMENT 学生 (名字,年龄,介绍)>
<!ELEMENT 作者 (#PCDATA)>
<!ATTLIST 学生
	性别 (%sex;) #REQUIRED
>
<!ELEMENT 名字 (#PCDATA)>
<!ELEMENT 年龄 (#PCDATA)>
<!ELEMENT 介绍 (#PCDATA)>
<!ENTITY writer "Switch">
登入後複製


综合案例1

XML3.dtd

<!ENTITY % sex "男|女">
<!ELEMENT 班级 (学生+,作者)>
<!ATTLIST 班级
	班次 CDATA "1班"
	编号 ID #REQUIRED
>
<!ELEMENT 学生 (名字,年龄,介绍)>
<!ELEMENT 作者 (#PCDATA)>
<!ATTLIST 学生
	地址 CDATA #IMPLIED
	授课方式 CDATA #FIXED "面授"
	学号 ID #REQUIRED
	班级编号 IDREF #REQUIRED
	朋友 IDREFS #IMPLIED
	性别 (%sex;) #REQUIRED
>
<!ELEMENT 名字 (#PCDATA)>
<!ELEMENT 年龄 (#PCDATA)>
<!ELEMENT 介绍 (#PCDATA)>
登入後複製


XML3.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入DTD -->
<!DOCTYPE 班级 SYSTEM "XML3.dtd"
[<!ENTITY writer "Switch">]>
<班级 编号="C1" 班次="1班">
	<学生  地址="湖南" 授课方式="面授" 学号="n1" 班级编号="C1" 朋友="n2" 性别="男">
		<名字>张三</名字>
		<年龄>20</年龄>
		<介绍>不错</介绍>
	</学生>
	<学生 授课方式="面授" 学号="n2" 班级编号="C1" 朋友="n1 n3" 性别="女">
		<名字>李四</名字>
		<年龄>18</年龄>
		<介绍>很好</介绍>
	</学生>
	<学生 授课方式="面授" 学号="n3" 班级编号="C1" 朋友="n2" 性别="男">
		<名字>王五</名字>
		<年龄>22</年龄>
		<介绍>非常好</介绍>
	</学生>
	<作者>&writer;</作者>
</班级>
登入後複製


综合案例2

XML4.dtd

<!ENTITY AUTHOR "John Doe">
<!ENTITY COMPANY "JD Power Tools, Inc.">
<!ENTITY EMAIL "jd@jd-tools.com">

<!ELEMENT CATALOG (PRODUCT+)>

<!ELEMENT PRODUCT
(SPECIFICATIONS+,OPTIONS?,PRICE+,NOTES?)>
<!ATTLIST PRODUCT
NAME CDATA #IMPLIED
CATEGORY (HandTool|Table|Shop-Professional) "HandTool"
PARTNUM CDATA #IMPLIED
PLANT (Pittsburgh|Milwaukee|Chicago) "Chicago"
INVENTORY (InStock|Backordered|Discontinued) "InStock">

<!ELEMENT SPECIFICATIONS (#PCDATA)>
<!ATTLIST SPECIFICATIONS
WEIGHT CDATA #IMPLIED
POWER CDATA #IMPLIED>

<!ELEMENT OPTIONS (#PCDATA)>
<!ATTLIST OPTIONS
FINISH (Metal|Polished|Matte) "Matte" 
ADAPTER (Included|Optional|NotApplicable) "Included"
CASE (HardShell|Soft|NotApplicable) "HardShell">

<!ELEMENT PRICE (#PCDATA)>
<!ATTLIST PRICE
MSRP CDATA #IMPLIED
WHOLESALE CDATA #IMPLIED
STREET CDATA #IMPLIED
SHIPPING CDATA #IMPLIED>

<!ELEMENT NOTES (#PCDATA)>
登入後複製


XML4.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE CATALOG SYSTEM "XML4.dtd">
<CATALOG>
	<PRODUCT NAME="C&#39;estbon" CATEGORY="Shop-Professional" INVENTORY="Backordered" PARTNUM="10" PLANT="Chicago">
		<SPECIFICATIONS POWER="0" WEIGHT="555ml">SPECIFICATIONS</SPECIFICATIONS>
		<OPTIONS>OPTIONS</OPTIONS>
		<PRICE>2</PRICE>
		<NOTES>NOTES</NOTES>
	</PRODUCT>
</CATALOG>
登入後複製

 以上就是DTD详解的内容,更多相关内容请关注PHP中文网(www.php.cn)!


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

手機XML轉PDF,轉換速度快嗎? 手機XML轉PDF,轉換速度快嗎? Apr 02, 2025 pm 10:09 PM

手機XML轉PDF的速度取決於以下因素:XML結構的複雜性手機硬件配置轉換方法(庫、算法)代碼質量優化手段(選擇高效庫、優化算法、緩存數據、利用多線程)總體而言,沒有絕對的答案,需要根據具體情況進行優化。

怎麼在手機上把XML文件轉換為PDF? 怎麼在手機上把XML文件轉換為PDF? Apr 02, 2025 pm 10:12 PM

不可能直接在手機上用單一應用完成 XML 到 PDF 的轉換。需要使用雲端服務,通過兩步走的方式實現:1. 在雲端轉換 XML 為 PDF,2. 在手機端訪問或下載轉換後的 PDF 文件。

手機上如何將XML轉換成PDF? 手機上如何將XML轉換成PDF? Apr 02, 2025 pm 10:18 PM

直接在手機上將XML轉換為PDF並不容易,但可以藉助雲端服務實現。推薦使用輕量級手機App上傳XML文件並接收生成的PDF,配合雲端API進行轉換。雲端API使用無服務器計算服務,選擇合適的平台至關重要。處理XML解析和PDF生成時需要考慮複雜性、錯誤處理、安全性和優化策略。整個過程需要前端App與後端API協同工作,需要對多種技術有所了解。

xml怎麼轉換成圖片 xml怎麼轉換成圖片 Apr 03, 2025 am 07:39 AM

可以將 XML 轉換為圖像,方法是使用 XSLT 轉換器或圖像庫。 XSLT 轉換器:使用 XSLT 處理器和样式表,將 XML 轉換為圖像。圖像庫:使用 PIL 或 ImageMagick 等庫,從 XML 數據創建圖像,例如繪製形狀和文本。

xml如何轉化為word xml如何轉化為word Apr 03, 2025 am 08:15 AM

有三種將 XML 轉換為 Word 的方法:使用 Microsoft Word、使用 XML 轉換器或使用編程語言。

xml怎麼改格式 xml怎麼改格式 Apr 03, 2025 am 08:42 AM

可以採用多種方法修改 XML 格式:使用文本編輯器(如 Notepad )進行手工編輯;使用在線或桌面 XML 格式化工具(如 XMLbeautifier)進行自動格式化;使用 XML 轉換工具(如 XSLT)定義轉換規則;或者使用編程語言(如 Python)進行解析和操作。修改時需謹慎,並備份原始文件。

xml格式化工具推薦 xml格式化工具推薦 Apr 02, 2025 pm 09:03 PM

XML格式化工具可以將代碼按照規則排版,提高可讀性和理解性。選擇工具時,要注意自定義能力、對特殊情況的處理、性能和易用性。常用的工具類型包括在線工具、IDE插件和命令行工具。

如何在沒有網絡的情況下在手機上查看XML 如何在沒有網絡的情況下在手機上查看XML Apr 02, 2025 pm 10:30 PM

有兩種查看 XML 文件的方法:安卓手機:使用文件管理器或第三方應用(XML Viewer、DroidEdit)。 iPhone:通過 iCloud Drive 傳輸文件,然後使用“文件”應用程序或第三方應用(XML Buddy、Textastic)。

See all articles