dtd文件中写的引用实体被xml文件引用后无法在浏览器中显示的问题
解决方案:把dtd文件由被xml文件外部引用改成被xml文件内部引用。
例子:
1.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <!--文件名:学生信息管理 --> <!--关键字'SYSTEM'代表.DTD文件来源于当前系统,而不是来源于网络 --> <!DOCTYPE 班级 SYSTEM "学生信息管理.dtd"> <班级> <学生 地址="香港" 学号="tj1710008" 大哥="tj1710009 tj1710008" 性别="男" > <姓名>刘德华</姓名> <年龄>23</年龄> <简单介绍>学习刻苦! &mycopy;&mycopy;</简单介绍> </学生> <学生 地址="台湾" 学号="tj1710009" 大哥="tj1710008 tj1710009" 性别="女" > <姓名>林志玲 &mycopy;</姓名> <年龄>22</年龄> <简单介绍>学习刻苦!认真听讲!</简单介绍> </学生> </班级>
2.对应的dtd约束文件:
<?xml version="1.0" encoding="UTF-8"?> <!--文件名:学生信息管理 --> <!ELEMENT 班级 (学生+)> <!ELEMENT 学生 (姓名,年龄,简单介绍)> <!--"#REQUIRED"代表属性值是"必须"的 --> <!--"地址"这两个字是属性名字,是可以自定义的 --> <!--"ID"代表学号的属性值惟一,不可重复 --> <!--"DREFS"代表大哥的属性值是参考其他属性(学号)的属性值,DREF加个"S"代表可以有多个参考 --> <!--"(男|女)"代表是枚举,性别的属性值只能从括号中的值里面选择--> <!ATTLIST 学生 地址 CDATA #REQUIRED 学号 ID #REQUIRED 大哥 IDREFS #REQUIRED 性别 (男|女) #REQUIRED > <!--(#PCDATA)代表简单介绍可以是任何文本 --> <!ELEMENT 姓名 (#PCDATA)> <!ELEMENT 年龄 (#PCDATA)> <!ELEMENT 简单介绍 (#PCDATA)> <!--引用实体在dtd文件里面定义,在xml文件中使用,最好定义在最后面,目的是给一串字符串起个别名--> <!ENTITY mycopy "我的公司版权"> <!--此时"我的公司版权"这一个长字符串在xml文件里面可以用"mycopy"代替,如果需要引用这个长字串的话-->
3.以上的xml文件在浏览器中无法显示实体引用,下面修改xml文件:
<?xml version="1.0" encoding="UTF-8"?> <!--文件名:学生信息管理_inner_dtd --> <!--关键字'SYSTEM'代表.DTD文件来源于当前系统,而不是来源于网络 --> <!DOCTYPE 班级 [ <!ELEMENT 班级 (学生+)> <!ELEMENT 学生 (姓名,年龄,简单介绍)> <!--"#REQUIRED"代表属性值是"必须"的 --> <!--"地址"这两个字是属性名字,是可以自定义的 --> <!--"ID"代表学号的属性值惟一,不可重复 --> <!--"DREFS"代表大哥的属性值是参考其他属性(学号)的属性值,DREF加个"S"代表可以有多个参考 --> <!--"(男|女)"代表是枚举,性别的属性值只能从括号中的值里面选择--> <!ATTLIST 学生 地址 CDATA #REQUIRED 学号 ID #REQUIRED 大哥 IDREFS #REQUIRED 性别 (男|女) #REQUIRED > <!--(#PCDATA)代表简单介绍可以是任何文本 --> <!ELEMENT 姓名 (#PCDATA)> <!ELEMENT 年龄 (#PCDATA)> <!ELEMENT 简单介绍 (#PCDATA)> <!--引用实体在dtd文件里面定义,在xml文件中使用,最好定义在最后面,目的是给一串字符串起个别名--> <!ENTITY mycopy "我的公司版权"> <!--此时"我的公司版权"这一个长字符串在xml文件里面可以用"mycopy"代替,如果需要引用这个长字串的话--> ]> <班级> <学生 地址="香港" 学号="tj1710008" 大哥="tj1710009 tj1710008" 性别="男" > <姓名>刘德华</姓名> <年龄>23</年龄> <简单介绍>学习刻苦! &mycopy; &mycopy;</简单介绍> </学生> <学生 地址="台湾" 学号="tj1710009" 大哥="tj1710008 tj1710009" 性别="女" > <姓名>林志玲 &mycopy;</姓名> <年龄>22</年龄> <简单介绍>学习刻苦!认真听讲!</简单介绍> </学生> </班级>
4.此时,拉入到浏览器中,可以显示实体引用了。