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.此时,拉入到浏览器中,可以显示实体引用了。

 

posted on 2018-11-16 18:21  一杯明月  阅读(1298)  评论(0编辑  收藏  举报