我是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