DTD文法概述

來源:互聯網
上載者:User

XML作為一門標記語言,它就需要一種文檔(即文件類型定義DTD)來定義,DTD可以看作是一類XML文檔的模板。它定義了文檔的邏輯結構,規定了XML文檔中所使用的元素,實體,元素的屬性,元素與實體之間的關係。它使得資料交流與共用得以正常進行,驗證了資料的有效性。DTD可以是一個完全獨立的檔案,也可以在XML檔案中直接設定。所以,DTD分為外部DTD(在XML檔案中調用另外已經編輯好的DTD)和內部DTD(在XML檔案中直接設定DTD)兩種。在一些有相互業務往來的公司,如果他們使用的電子文檔是XML文檔,那麼我們就可以定用一個獨立的DTD文檔。每次交換和定義時都引用它來驗證結構完整性和文法的合法性。比如以下一個XML文檔:

<?xml version ="1.0" encoding ="GB2312" standalone="yes" ?>
<學生名單>
    <學生>
      <學號>2003081205</學號>
      <姓名>田淋</姓名>
      <班級>計03.2班</班級>
    </學生>
    <學生>
      <學號>2003081232</學號>
      <姓名>楊雪鋒</姓名>
      <班級>計03.2班</班級>
    </學生>
</學生名單>

它的一個DTD文檔如下:

 1<?xml version="1.0" encoding="GB2312" standalone="yes"?>
 2<!DOCTYPE學生名單[
 3<!ELEMENT 學號 (#PCDATA)>
 4<!ELEMENT 姓名 (#PCDATA)>
 5<!ELEMENT 班級 (#PCDATA)>
 6<!ELEMENT 學生 (學號,姓名,班級)>
 7<!ELEMENT 學生名單 (學生,學生)>
 8]>
 9
10
11

2為DTD定義開始標記,學生名單為其根項目,3到7都是元素定義 ,8是結束標記。下面將介紹一下元素宣告的文法及注意事項。

元素宣告
格式:<!ELEMENT 元素名稱 元素的內容格式的定義>
(1)基本元素宣告:<!ELEMENT 學號 (#PCDATA)>    元素名稱後直接跟的是資料類型則為基本元素。
(2)複合元素宣告:<!ELEMENT 學生 (學號,姓名,班級)> 學生元素是複合元素,它包含學號,姓名,班級三個基本元素。其實根項目是複合元素的一個特例,所有的元素都直接或間接地包含在根項目中。

元素出現次數的控制

加"?"表示些元素可出現0次或1次;加"*"表示可出現任意次;加"+"表示至少要出現一次。如:<!ELEMENT 學生 (學號?,姓名,班級,愛好*)>則表示一個學生只有唯一的學號,或者還未分配學號,即學號元素出現0次或1次,而愛好可以沒有,也可以有好幾方面的,所以用*(任意次)限定。

選擇性元素 用"|"限定,如 <!ELEMENT 學生(姓名,性別,(優秀|良好|中等))>

屬性聲明
格式:<!ATTLIST Eltment_name Attribute_name Type [Keyword] [Default_value]> 
!ATTLIST 為定義屬性的指令,後面是元素的名稱,屬性名稱,屬性值類型及預設值的關鍵字及預設值。
如一個學生有性別及班級兩個屬性,可這樣定義:<!ATTLIST  學生 性別 CDATA "女" 班級 CDATA "電腦03.2班">
必需賦值的屬性:加REQUIRED關鍵字,如:<!ATTLIST  學生 性別 CDATA #REQUIRED "女" 班級 CDATA "電腦03.2班"> 表示必需給出學生的性別值。可有可無的屬性則用IMPLIED關鍵字,固定取值的屬性用FIXED關鍵字。
屬性的類型:在XML中共有10種屬性類型,如下表:

類型 含義
CDATA 字元資料
Enumerated 可能的取值的列表
ID 唯一的數字
IDREF ID類型屬性的值
IDREFS 由空格分開的若干個ID
ENTITY 實體
ENTITYS 若干個實體
NMTOKEN XML名稱
NOTATION DTD中聲明的注釋名
NMTOKENS 多個XML名稱

上一篇:XML文法概述

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.