私は xml の作成を始めたばかりで、問題があります。私は person と呼ばれるベース dtd を持っており、トレーナーと会社の両方でエンティティとして使用しています。また、トレーニング ルート要素があり、このルート要素にはトレーナーまたは会社のいずれかがあります。xml ファイルを検証しようとすると、「要素 '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;