什么是XML與DTD ?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
盧氏ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!文檔類型定義(DTD)可定義合法的XML文檔構(gòu)建模塊。它使用一系列合法的元素來定義文檔的結(jié)構(gòu)。
DTD 可被成行地聲明于 XML 文檔中,也可作為一個(gè)外部引用。
假如 DTD 被包含在您的 XML 源文件中,它應(yīng)當(dāng)通過下面的語法包裝在一個(gè) DOCTYPE 聲明中:
帶有 DTD 的 XML 文檔實(shí)例
]>George John Reminder Don't forget the meeting!
!DOCTYPE note (第二行)定義此文檔是 note 類型的文檔。
!ELEMENT note (第三行)定義 note 元素有四個(gè)元素:"to、from、heading,、body"
!ELEMENT to (第四行)定義 to 元素為 "#PCDATA" 類型
!ELEMENT from (第五行)定義 frome 元素為 "#PCDATA" 類型
!ELEMENT heading (第六行)定義 heading 元素為 "#PCDATA" 類型
!ELEMENT body (第七行)定義 body 元素為 "#PCDATA" 類型
假如 DTD 位于 XML 源文件的外部,那么它應(yīng)通過下面的語法被封裝在一個(gè) DOCTYPE 定義中:
這個(gè) XML 文檔和上面的 XML 文檔相同,但是擁有一個(gè)外部的 DTD: (并選擇“查看源代碼”命令。)
George John Reminder Don't forget the meeting!
這是包含 DTD 的 "note.dtd" 文件:
通過 DTD,您的每一個(gè) XML 文件均可攜帶一個(gè)有關(guān)其自身格式的描述。
通過 DTD,獨(dú)立的團(tuán)體可一致地使用某個(gè)標(biāo)準(zhǔn)的 DTD 來交換數(shù)據(jù)。
而您的應(yīng)用程序也可使用某個(gè)標(biāo)準(zhǔn)的 DTD 來驗(yàn)證從外部接收到的數(shù)據(jù)。
您還可以使用 DTD 來驗(yàn)證您自身的數(shù)據(jù)。
所有的 XML 文檔(以及 HTML 文檔)均由以下簡(jiǎn)單的構(gòu)建模塊構(gòu)成:
元素
屬性
實(shí)體
PCDATA
CDATA
下面是每個(gè)構(gòu)建模塊的簡(jiǎn)要描述。
元素是 XML 以及 HTML 文檔的主要構(gòu)建模塊。
HTML 元素的例子是 "body" 和 "table"。XML 元素的例子是 "note" 和 "message" 。元素可包含文本、其他元素或者是空的??盏?HTML 元素的例子是 "hr"、"br" 以及 "img"。
body text in betweensome message in between
屬性可提供有關(guān)元素的額外信息。
屬性總是被置于某元素的開始標(biāo)簽中。屬性總是以名稱/值的形式成對(duì)出現(xiàn)的。下面的 "img" 元素?fù)碛嘘P(guān)于源文件的額外信息:
元素的名稱是 "img"。屬性的名稱是 "src"。屬性的值是 "computer.gif"。由于元素本身為空,它被一個(gè) " /" 關(guān)閉。
實(shí)體是用來定義普通文本的變量。實(shí)體引用是對(duì)實(shí)體的引用。
大多數(shù)同學(xué)都了解這個(gè) HTML 實(shí)體引用:" "。這個(gè)“無折行空格”實(shí)體在 HTML 中被用于在某個(gè)文檔中插入一個(gè)額外的空格。
當(dāng)文檔被 XML 解析器解析時(shí),實(shí)體就會(huì)被展開。
實(shí)體引用 | 字符 |
---|---|
< | < |
> | > |
& | & |
" | " |
' | ' |
PCDATA 的意思是被解析的字符數(shù)據(jù)(parsed character data)。
可把字符數(shù)據(jù)想象為 XML 元素的開始標(biāo)簽與結(jié)束標(biāo)簽之間的文本。
PCDATA 是會(huì)被解析器解析的文本。這些文本將被解析器檢查實(shí)體以及標(biāo)記。
文本中的標(biāo)簽會(huì)被當(dāng)作標(biāo)記來處理,而實(shí)體會(huì)被展開。
不過,被解析的字符數(shù)據(jù)不應(yīng)當(dāng)包含任何 &、< 或者 > 字符;需要使用 &、< 以及 > 實(shí)體來分別替換它們。
在一個(gè) DTD 中,元素通過元素聲明來進(jìn)行聲明。
在 DTD 中,XML 元素通過元素聲明來進(jìn)行聲明。元素聲明使用下面的語法:
或者
空元素通過類別關(guān)鍵詞EMPTY進(jìn)行聲明:
只有 PCDATA 的元素通過圓括號(hào)中的 #PCDATA 進(jìn)行聲明:
通過類別關(guān)鍵詞 ANY 聲明的元素,可包含任何可解析數(shù)據(jù)的組合:
帶有一個(gè)或多個(gè)子元素的元素通過圓括號(hào)中的子元素名進(jìn)行聲明:
或者
當(dāng)子元素按照由逗號(hào)分隔開的序列進(jìn)行聲明時(shí),這些子元素必須按照相同的順序出現(xiàn)在文檔中。在一個(gè)完整的聲明中,子元素也必須被聲明,同時(shí)子元素也可擁有子元素。"note" 元素的完整聲明是:
上面的例子聲明了:message 子元素必須出現(xiàn)一次,并且必須只在 "note" 元素中出現(xiàn)一次。
上面的例子中的加號(hào)聲明了:message 子元素必須在 "note" 元素內(nèi)出現(xiàn)至少一次。
上面的例子中的星號(hào)聲明了:子元素 message 可在 "note" 元素內(nèi)出現(xiàn)零次或多次。
上面的例子中的問號(hào)聲明了:子元素 message 可在 "note" 元素內(nèi)出現(xiàn)零次或一次。
上面的例子聲明了:"note" 元素必須包含 "to" 元素、"from" 元素、"header" 元素,以及非 "message" 元素既 "body" 元素。
上面的例子聲明了:"note" 元素可包含出現(xiàn)零次或多次的 PCDATA、"to"、"from"、"header" 或者 "message"。
屬性聲明擁使用下列語法:
類型 | 描述 |
---|---|
CDATA | 值為字符數(shù)據(jù) (character data) |
(en1|en2|..) | 此值是枚舉列表中的一個(gè)值 |
ID | 值為唯一的 id |
IDREF | 值為另外一個(gè)元素的 id |
IDREFS | 值為其他 id 的列表 |
NMTOKEN | 值為合法的 XML 名稱 |
NMTOKENS | 值為合法的 XML 名稱的列表 |
ENTITY | 值是一個(gè)實(shí)體 |
ENTITIES | 值是一個(gè)實(shí)體列表 |
NOTATION | 此值是符號(hào)的名稱 |
xml: | 值是一個(gè)預(yù)定義的 XML 值 |
值 | 解釋 |
---|---|
值 | 屬性的默認(rèn)值 |
#REQUIRED | 屬性值是必需的 |
#IMPLIED | 屬性不是必需的 |
#FIXED value | 屬性值是固定的 |
在上面的例子中,"square" 被定義為帶有 CDATA 類型的 "width" 屬性的空元素。如果寬度沒有被設(shè)定,其默認(rèn)值為0 。
DTD:
合法的 XML:
合法的 XML:
假如您不希望強(qiáng)制作者包含屬性,并且您沒有默認(rèn)值選項(xiàng)的話,請(qǐng)使用關(guān)鍵詞 #IMPLIED。
DTD:
合法的 XML:
非法的 XML:
假如您沒有默認(rèn)值選項(xiàng),但是仍然希望強(qiáng)制作者提交屬性的話,請(qǐng)使用關(guān)鍵詞 #REQUIRED。
DTD:
合法的 XML:
非法的 XML:
如果您希望屬性擁有固定的值,并不允許作者改變這個(gè)值,請(qǐng)使用 #FIXED 關(guān)鍵詞。如果作者使用了不同的值,XML 解析器會(huì)返回錯(cuò)誤。
或者
如果您希望屬性值為一系列固定的合法值之一,請(qǐng)使用列舉屬性值。
實(shí)體是用于定義用于定義引用普通文本或特殊字符的快捷方式的變量。
實(shí)體引用是對(duì)實(shí)體的引用。
實(shí)體可在內(nèi)部或外部進(jìn)行聲明。
DTD 例子:
XML 例子:
&writer;©right;
注釋: 一個(gè)實(shí)體由三部分構(gòu)成: 一個(gè)和號(hào) (&), 一個(gè)實(shí)體名稱, 以及一個(gè)分號(hào) (;)。
DTD 例子:
XML 例子:
&writer;©right;
當(dāng)您試圖打開某個(gè) XML 文檔時(shí),XML 解析器有可能會(huì)產(chǎn)生錯(cuò)誤。通過訪問 parseError 對(duì)象,就可以取回引起錯(cuò)誤的確切代碼、文本甚至所在的行。
注釋:load( ) 方法用于文件,而 loadXML( ) 方法用于字符串。
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") xmlDoc.async="false" xmlDoc.validateOnParse="true" xmlDoc.load("note_dtd_error.xml") document.write("
Error Code: ") document.write(xmlDoc.parseError.errorCode) document.write("
Error Reason: ") document.write(xmlDoc.parseError.reason) document.write("
Error Line: ") document.write(xmlDoc.parseError.line)
通過把 XML 解析器的 validateOnParse 設(shè)置為 "false",就可以關(guān)閉驗(yàn)證。
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") xmlDoc.async="false" xmlDoc.validateOnParse="false" xmlDoc.load("note_dtd_error.xml") document.write("
Error Code: ") document.write(xmlDoc.parseError.errorCode) document.write("
Error Reason: ") document.write(xmlDoc.parseError.reason) document.write("
Error Line: ") document.write(xmlDoc.parseError.line)
Try it Yourself
為了幫助您驗(yàn)證 XML 文件,我們創(chuàng)建了此鏈接,這樣你就可以驗(yàn)證任何 XML 文件了。
]>
]>
拷貝自:http://www.php.cn/
]>
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司的支持。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、網(wǎng)站設(shè)計(jì)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。