日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

DTD -- XML验证

發(fā)布時間:2023/12/15 asp.net 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DTD -- XML验证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DTD(文檔類型定義)的作用是定義 XML 文檔的合法構建模塊。

DTD 可被成行地聲明于 XML 文檔中,也可作為一個外部引用。

DTD簡介

內部的 DOCTYPE 聲明

假如 DTD 被包含在您的 XML 源文件中,它應當通過下面的語法包裝在一個 DOCTYPE 聲明中:

<?xml version="1.0"?> <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend</body> </note>

!DOCTYPE note (第二行)定義此文檔是 note 類型的文檔。

!ELstrongENT note (第三行)定義 note 元素有四個元素:"to、from、heading,、body"

!ELstrongENT to (第四行)定義 to 元素為 "#PCDATA" 類型

!ELstrongENT from (第五行)定義 frome 元素為 "#PCDATA" 類型

!ELstrongENT heading (第六行)定義 heading 元素為 "#PCDATA" 類型

!ELstrongENT body (第七行)定義 body 元素為 "#PCDATA" 類型

?

外部文檔聲明

假如 DTD 位于 XML 源文件的外部,那么它應通過下面的語法被封裝在一個 DOCTYPE 定義中:

<!DOCTYPE root-element SYSTEM "filename">

以下是 XML 文檔,這個XML文檔和上面的 XML 文檔相同,但是擁有一個外部的 DTD:?

<?xml version="1.0"?> <!DOCTYPE note SYSTEM "note.dtd"> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>

這是包含 DTD 的 "note.dtd" 文件:

<!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>

?

為什么使用 DTD?

通過 DTD,您的每一個 XML 文件均可攜帶一個有關其自身格式的描述。

通過 DTD,獨立的團體可一致地使用某個標準的 DTD 來交換數據。

而您的應用程序也可使用某個標準的 DTD 來驗證從外部接收到的數據。

您還可以使用 DTD 來驗證您自身的數據。

?

DTD - XML 構建模塊

XML 文檔構建模塊

所有的 XML 文檔(以及 HTML 文檔)均由以下簡單的構建模塊構成:

Elements :元素

Attributes :屬性

Entities :實體

PCDATA :

  意思是被解析的字符數據(parsed character data)。

  可把字符數據想象為 XML 元素的開始標簽與結束標簽之間的文本。

  PCDATA 是會被解析器解析的文本。這些文本將被解析器檢查實體以及標記。

  文本中的標簽會被當作標記來處理,而實體會被展開

  不過,被解析的字符數據不應當包含任何 &、< 或者 > 字符;需要使用 &amp;、&lt; 以及 &gt; 實體來分別替換它們。

CDATA :

  意思是字符數據(character data)。

  CDATA 是不會被解析器解析的文本。在這些文本中的標簽不會被當作標記來對待,其中的實體也不會被展開

?

DTD - 元素

在一個 DTD 中,元素通過元素聲明來進行聲明。

聲明一個元素

在 DTD 中,XML 元素通過元素聲明來進行聲明。元素聲明使用下面的語法:

<!ELEMENT element-name category><!ELEMENT element-name (element-content)>

?

空元素

空元素通過類別關鍵詞EMPTY進行聲明:

<!ELEMENT element-name EMPTY>實例:<!ELEMENT br EMPTY>XML example:<br />

?

只有 PCDATA 的元素

只有 PCDATA 的元素通過圓括號中的 #PCDATA 進行聲明:

<!ELEMENT element-name (#PCDATA)>實例:<!ELEMENT from (#PCDATA)>

?

帶有任何內容的元素
通過類別關鍵詞 ANY 聲明的元素,可包含任何可解析數據的組合:

<!ELEMENT element-name ANY>實例:<!ELEMENT note ANY>

?

帶有子元素(序列)的元素
帶有一個或多個子元素的元素通過圓括號中的子元素名進行聲明:

<!ELEMENT element-name (child1)><!ELEMENT element-name (child1,child2,...)>實例:<!ELEMENT note (to,from,heading,body)>

?

當子元素按照由逗號分隔開的序列進行聲明時,這些子元素必須按照相同的順序出現在文檔中。在一個完整的聲明中,子元素也必須被聲明,同時子元素也可擁有子元素。"note" 元素的完整聲明是:

<!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>

?

聲明只出現一次的元素

<!ELEMENT element-name (child-name)>實例:<!ELEMENT note (message)>

上面的例子聲明了:message 子元素必須出現一次,并且必須只在 "note" 元素中出現一次。


聲明最少出現一次的元素

<!ELEMENT element-name (child-name+)>實例:<!ELEMENT note (message+)>

上面的例子中的加號(+)聲明了:message 子元素必須在 "note" 元素內出現至少一次。


聲明出現零次或多次的元素

<!ELEMENT element-name (child-name*)>實例:<!ELEMENT note (message*)>

上面的例子中的星號(*)聲明了:子元素 message 可在 "note" 元素內出現零次或多次。

?

聲明出現零次或一次的元素

<!ELEMENT element-name (child-name?)>實例:<!ELEMENT note (message?)>

上面的例子中的問號(?)聲明了:子元素 message 可在 "note" 元素內出現零次或一次。

?

聲明"非.../既..."類型的內容

實例:<!ELEMENT note (to,from,header,(message|body))>

上面的例子聲明了:"note" 元素必須包含 "to" 元素、"from" 元素、"header" 元素,以及非 "message" 元素既 "body" 元素。

?

聲明混合型的內容

實例:<!ELEMENT note (#PCDATA|to|from|header|message)*>

上面的例子聲明了:"note" 元素可包含出現零次或多次的 PCDATA、"to"、"from"、"header" 或者 "message"。

?

DTD - 屬性

?

DTD - 實體

?

轉載于:https://www.cnblogs.com/hf8051/p/4846432.html

總結

以上是生活随笔為你收集整理的DTD -- XML验证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。