HTML核心系列1之DTD與實體

簡介:

Sgml、 HTML 和 XML 都是標記語言。 「標記」一詞起源於編輯對做者手稿進行修改。 編輯「標記」手稿,以突出某些領域。 在計算機技術中,標記語言是一組單詞和符號,它們突出顯示文本以定義網頁文檔。 例如,網頁設計師使用標記語言來分隔段落並用黑體字表示字母。 一旦理解了 SGML、 HTML 和 XML 在 web 設計中的做用,就會看到這些不一樣語言之間的相互關係。 簡而言之,SGML、 HTML 和 XML 是一系列有助於使網站功能化和網頁設計動態化的語言。html

SGMLweb

在這個標記語言家族中,SGML 標記語言(SGML)是父語言。 Sgml 提供了一種定義標記語言併爲其表單設置標準的方法。 換句話說,SGML 規定了某些語言能夠或不能夠作什麼,必須包含哪些元素(如標記) ,以及語言的基本結構。 當父代將遺傳特徵傳遞給子代時,SGML 將結構和格式規則傳遞給標記語言。瀏覽器

HTMLbash

超文本標記語言是 SGML 的一個子程序,或者說應用程序。 正是 HTML 爲瀏覽器構建了頁面。 使用 HTML,您能夠嵌入圖像,建立頁面部分,創建字體,並指導頁面的流程。 此外,使用 HTML,你能夠經過腳本語言,如 JavaScript,爲網站添加其餘功能。 Html 是網站設計的主要語言。字體

XML網站

XML 標記語言是 HTML 的近親和 SGML 的侄子。 儘管 XML 是一種標記語言,所以也是家族的一部分,但它具備與 HTML 不一樣的功能。 Xml 是 SGML 的一個子集,它賦予它應用程序(如 HTML)所沒有的權利。 Xml 能夠定義本身的應用程序。 資源描述格式(RDF)是 XML 的一個應用。 Html 僅限於設計,沒有子集或應用程序。 Xml 是 SGML 的精簡版本,設計用於在有限的帶寬下工做。 Xml 繼承了 SGML 的遺傳特徵,可是建立它本身的家庭。 Xml 的子集包括 XSL 和 XSLT。ui

HTML語法組成spa


DTD

SGML(通用標記性語言),SGML是IBM公司1996年所使用的技術,在HTML5在前,HTML(超文本標記語言)和XML能夠說是SGML中規定的一種格式,HTML做爲SGML的子集.設計

它遵循着SGML基本語法和DTD(文檔類型定義),SGML用DTD來定義每一種文檔類型類型,在H5出現以前HTML都是使用符合SGML的DTD,能夠把他當作是事先定義好的HTML和XML模板。code

常見的HTML舉例子:

<table border="1"> 
   <tr> 
      <td>這裏能夠放表格內容</td> 
   </tr> 
</table>
複製代碼

瀏覽器已經不用SGML引擎去解析上述HTML結構,而是SGML精簡版XML去解析,其實XML也沒法去直接解析,它不知道<table>...</table>是什麼而是透過DTD事先定義好咱們自定義的模板去解析的。以下:

<?xml version="1.0" ?> 
<!DOCTYPE table[ 
  <!ELEMENT table (tr)> 
  <!ELEMENT tr (#PCDATA)> 
  <!ELEMENT tr (td)> 
  <!ELEMENT td (#PCDATA)> 
] > 
<table border="1"> 
   <tr> 
      <td>這裏能夠放表格內容</td> 
   </tr> 
</table>
複製代碼

在HTML5以前HTML有三種格式DTD,分別是嚴格模式,過渡模式和framest模式(如下HTML4.01 又規定了 XHTML 語法版本)

  • 嚴格模式的 DTD 規定了 HTML4.01 中須要的標籤。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
複製代碼
  • 過渡模式的 DTD 除了 html4.01,還包含了一些被貶斥的標籤,這些標籤已經再也不推薦使 用了,可是過渡模式中仍保留了它們。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
複製代碼
  • frameset 結構的網頁現在已經不多見到了,它使用 frameset 標籤把幾個網頁組合到一 起
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> 
複製代碼

在HTML5以後,因爲這些DTD過於複雜的寫法沒啥實際用途,加之瀏覽器也不會使用SGML去解析他們,乾脆放棄了SGML子集的 的支持,規定了一個簡單易記住的DTD

<!DOCTYPE html>
複製代碼

DTD的重要組成部分

  •  元素
元素是構成XML最重要的元件,其定義語法以下:
<!ELEMENT element-name category>
or
<!ELEMENT element-name (element-content)>
複製代碼

1.空元素
空元素用類別關鍵字EMPTY聲明:

<!ELEMENT element-name EMPTY>
Example:
<!ELEMENT br EMPTY>
XML example:
<br />
複製代碼

2.具備已解析字符數據的元素
僅具備解析字符數據的元素在括號內用#PCDATA聲明:

<!ELEMENT element-name (#PCDATA)>

Example:

<!ELEMENT tr (#PCDATA)>
複製代碼

3.具備任何內容的元素
使用類別關鍵字ANY聲明的元素能夠包含可分析數據的任意組合:

<!ELEMENT element-name ANY>

Example:

<!ELEMENT note ANY>
複製代碼
  • 屬性

屬性顧名思義就是要來輔助元素,幫元素宣告它的屬性定義。

<!ATTLIST element-name attribute-name attribute-type attribute-value>

DTD example:

<!ATTLIST payment type CDATA "check">

XML example:

<payment type="check" />
複製代碼
  • 實體(Entily)
    實體用於定義特殊字符的快捷方式,實體能夠聲明爲內部或外部。255個之多,如下會列舉經常使用的
    內部聲明實體:
<!ENTITY entity-name "entity-value">

   //例子
   DTD Example:
  <!ENTITY writer "Donald Duck.">
  <!ENTITY copyright "Copyright W3Schools.">
  XML example:
  <author>&writer;&copyright;</author>
//注意:實體分爲三部分:「&」號,實體名稱和分號(;)。
複製代碼

實體是用來定義普通文本的變量。實體引用是對實體的引用。 大多數朋友都瞭解這個 HTML 實體引用:" "。
這個"無折行空格"實體在 HTML 中被用於在某個文檔中插入一個額外的空格。
當文檔被 XML 解析器解析時,實體就會被展開。

外部聲名實體:

<!ENTITY entity-name SYSTEM "URI/URL">
   
//例子
DTD Example:
<!ENTITY writer SYSTEM "https://www.w3schools.com/entities.dtd">
<!ENTITY copyright SYSTEM "https://www.w3schools.com/entities.dtd">

XML example:
<author>&writer;&copyright;</author>    
複製代碼

經常使用實體:


  • PCDATA

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

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

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

  文本中的標籤會被看成標記來處理,而實體會被展開。
   不過,被解析的字符數據不該當包含任何 &、< 或者 > 字符;須要使用 &amp;、&lt; 以及 &gt; 實體來分 別替換它們。
複製代碼
  • CDATA

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

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

DTD的有哪些優點

  • 使用DTD,獨立的人羣能夠就交換數據的標準DTD達成共識。

  • 應用程序可使用DTD來驗證XML數據是否有效。


本文使用 mdnice 排版

相關文章
相關標籤/搜索