用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 <!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,如许,该元素声明就无效了。
以上就是XML入门教程-实体的细致引见的细致内容,更多请关注ki4网别的相干文章!