由於資料不是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中嵌入未析實體很複雜且不規範,盡量不要使用。
參數實體可定義一組通用的實體,在文件中可透過此參數實體來引用實體。參數實體的定義與通用實體定義類似,只是中間多了一個%,引用時也是用%代碼&。
<!ENTITY % person "name,address,postcode"> 引用方法 %person; 这样会用name,address,postcode代替参数实体%person;
通常DTD都比較大,DocBook的DTD長達11000多行,如果把它存放在單一文件中,管理和維護起來都非常困難。我們可以使用外部DTD子集,把一個大的DTD依功能分成不同的功能塊,存放在不同的檔案中。再透過外部參數實體宣告引入目前DTD中,如:
定義參數實體引用外部names.dtd 306ed4bb2d5e139f07d01a620bc7cca5 呼叫外部DTD子集%names;
使用IGNORE關鍵字可註解聲明,如:
<![IGNORE[ <!ELEMENT note (#PCDATA)> ]]>
#當然了,使用789415cfda0265df9f69624c267f4b01的方式也是一樣的。
INCLUDE關鍵字表示DTD中的確在使用給定的聲明,如:
<![INCLUDE[ <!ELEMENT note (#PCDATA)> ]]>
單一從該聲明來看,有沒有使用INCLUDE效果都一樣,但如果組合INCLUDE和IGNORE,可實現DTD功能的選擇。我們可定義一個參數實體:
<!ENTITY % note_allowed "INCLUDE" >
然後使用參數實體引用而不使用關鍵字:
<![%note_allowed;[ <!ELEMENT note (#PCDATA)> ]]>
按上述操作,元素聲明是有效的,但我們也可以把參數實體% note_allowed重新定義為IGNORE,這樣,元素宣告就無效了。
以上是XML入門教學-實體的具體介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!