一个带有内部DTD的XML文件代码如下<?xml version="1.0" encoding="gb2312"?><!DOCTYPE 事务 [<!ELEMENT 合同日期 (#PCDATA)><!ELEMENT 合同名 (#PCDATA)><!ELEMENT 合同编号 (#PCDATA)><!ELEMENT 合同类型 (#PCDATA)><!ELEMENT 事务 (合同编号,合同类型,合同名,合同日期)>]><事务><合同编号>20040414</合同编号><合同类型>FOB</合同类型><合同名>建筑材料购买合同</合同名><合同日期>2006年10月16日</合同日期></事务>但是我把它的内部DTD改成那样了,为什么还可以显示出来呢?<?xml version="1.0" encoding="gb2312"?><!DOCTYPE 事务 [<!ELEMENT 合同111日期 (#PCDATA)><!ELEMENT 合同11名 (#PCDATA)><!ELEMENT 合同编号 (#PCDATA)><!ELEMENT 合同55类型 (#PCDATA)><!ELEMENT 事务 (合同编55号,合同类55型,合同名,合同日期)>]><事务><合同编号>20040414</合同编号><合同类型>FOB</合同类型><合同名>建筑材料购买合同</合同名><合同日期>2006年10月16日</合同日期></事务>只有这么多分了,希望哪个大虾帮一下哈?
DTD是XML的规范,只能用来验证XML的有效性,不能起到限制的作用。例如当我拿到一个XML,可以用验证工具根据它对应的DTD判断他是否有效的XML文件。楼主的情况,改前验证为有效,改后验证为无效,但XML本身不会随之改变。用XMLSpy等软件可以自动根据DTD对XML进行有效化,楼主可以试试看。
提问者对答案的评价: |