我是xml写作的入门者,我遇到了问题。我有基地dtd叫人,我用它作为教练和公司的实体。我也有训练的根本元素,在这个根本元素中,我有教练或公司。当我尝试验证xml文件时,我遇到了一个错误“Element'person'已经被声明。” 。我怎样才能保持我的结构,并验证我的XML文件。顺便说一句,我用实体形式来重用我的person.dtd。 谢谢你的帮助。元素已定义错误
这是文件 “person.dtd”:
<!ELEMENT person (id, name, lastname,
telNo, adress, birthday,
email)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT telNo (#PCDATA)>
<!ELEMENT adress (#PCDATA)>
<!ELEMENT birthday (#PCDATA)>
<!ELEMENT email (#PCDATA)>
这是文件 “trainer.dtd”:
<!ELEMENT trainer (trainerPerson,proficiency)>
<!ENTITY % trainerPerson SYSTEM "person.dtd">
%trainerPerson;
<!ELEMENT proficiency (#PCDATA)>
这是 “company.dtd”:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT company (companyId, companyName,
companyAdress, telno, contactPerson)>
<!ELEMENT companyId (#PCDATA)>
<!ELEMENT companyName (#PCDATA)>
<!ELEMENT companyAdress (#PCDATA)>
<!ELEMENT telno (#PCDATA)>
<!ENTITY % contactPerson SYSTEM "person.dtd">
%contactPerson;
这是培训信息的DTD:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT trainning (trainningId, cost, date, duration,
trainningName, comment,
durationtype, (trainer|company))>
<!ELEMENT trainningId (#PCDATA)>
<!ELEMENT cost (#PCDATA)>
<!ELEMENT date (#PCDATA)>
<!ELEMENT duration (#PCDATA)>
<!ELEMENT trainningName (#PCDATA)>
<!ELEMENT durationtype (#PCDATA)>
<!ENTITY % trainer SYSTEM "trainer.dtd">
%trainer;
<!ENTITY % company SYSTEM "company.dtd">
%company;
感谢您的回复,您的驱动文件是什么意思? – Eneramo 2013-02-25 06:21:50
我的意思是像我的答案中显示的Company.dtd,Trainer.dtd,Training.dtd文件这样的文件,它除了嵌入其他文件外什么都不做,因此可以被认为是驱动创建有效的DTD你有可用的文件)。这些是您将从文档中引用的文件。例如,关于培训师的文档可能以这种方式开始:“<!DOCTYPE培训师系统”培训师。dtd“> ...'而有关公司的文档将开始'<!DOCTYPE company SYSTEM”Company.dtd“> ...' –
2013-02-25 16:23:36
谢谢你的帮助我理解你的观点 – Eneramo 2013-02-25 20:23:33