我是 xml 写作的初学者,我有一个问题。我有一个名为 person 的基础 dtd,我将它用作培训师和公司的实体。我也有培训根元素,在这个根元素中我有培训师或公司。当我尝试验证 xml 文件时,我遇到了一个错误“元素‘人’已经被声明。” . 我怎样才能保持结构不变并验证我的 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)>
这是“公司.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;