由於數據不是XML格式,所以使用NDATA聲明指定數據類型。avi是在NOTATION中定義的MIME媒體類型。在XML中嵌入未析實體很復雜且不規范,盡量不要使用。
實體
用ENTITY聲明定義實體。如:
<!ENTITY linux "linux is a very good system">
用&linux;可引用該字符串
可定義一個外部實體,引用外部XML文檔
<!ENTITY linux SYSTEM "/home/linux/test.xml">
使用&linux;可引用/home/linux/test.xml文檔
外部實體沒有XML聲明,但可以有文本聲明,兩者很類似,主要區別是文本聲明必須有編碼聲明,而版本信息則是可選的。
<?xml version="1.0" encoding="gb2312"?> 是一個合法的文本聲明
<?xml encoding="gb2312"?> 也是一個合法的文本聲明
不是所有的數據都是XML。如jpeg照片,mpeg電影等。XML建議使用外部未析實體作為在文檔中嵌入這些內容的機制。DTD為包含非XML數據的實體指定一個名稱和URI。
<!ENTITY movie SYSTEM "/home/linux/test.avi" NDATA avi>
由於數據不是XML格式,所以使用NDATA聲明指定數據類型。avi是在NOTATION中定義的MIME媒體類型。在XML中嵌入未析實體很復雜且不規范,盡量不要使用。
本文由(http://www.jb51.net)整理發布!轉載請注明出處,謝謝!
參數實體可定義一組通用的實體,在文檔中可通過該參數實體來引用實體。參數實體的定義與通用實體定義類似,只是中間多了一個%,引用時也是用%代碼&。
<!ENTITY % person "name,address,postcode">
引用方法
%person;
這樣會用name,address,postcode代替參數實體%person;
通常DTD都比較大,DocBook的DTD長達11000多行,如果把它存放在單一文件中,管理和維護起來都非常困難。我們可以使用外部DTD子集,把一個大的DTD按功能分成不同的功能塊,存放在不同的文件中。再通過外部參數實體聲明引入當前DTD中,如:
定義參數實體引用外部names.dtd
<!ENTITY % names SYSTEM "names.dtd">
調用外部DTD子集
%names;
使用IGNORE關鍵字可注釋聲明,如:
<![IGNORE[
<!ELEMENT note (#PCDATA)>
]]>
當然了,使用<!-- 注釋 -->的方式也是一樣的。
INCLUDE關鍵字表示DTD中的確在使用給定的聲明,如:
<![INCLUDE[
<!ELEMENT note (#PCDATA)>
]]>
單從該聲明來看,有沒有使用INCLUDE效果都一樣,但如果組合INCLUDE和IGNORE,可實現DTD功能的選擇。我們可定義一個參數實體:
<!ENTITY % note_allowed "INCLUDE" >
然後使用參數實體引用而不使用關鍵字:
<![%note_allowed;[
<!ELEMENT note (#PCDATA)>
]]>
按上述操作,元素聲明是有效的,但我們也可以把參數實體%note_allowed重新定義為IGNORE,這樣,該元素聲明就無效了。