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

 

转载于:https://www.cnblogs.com/yibeimingyue/p/9970847.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值