2013-12-19 40 views
0

爲什麼下面的代碼不正確? XMLSPY發現錯誤的元素員工XML - DTD,兩個元素相同的屬性

<!ELEMENT personnel (contractor*,employee*,partner*)+ > 
<!ELEMENT contractor (info)> 
<!ELEMENT employee(info)> 
<!ATTLIST info lname CDATA #REQUIRED fname CDATA #REQUIRED hiredate CDATA #REQUIRED firedate CDATA #REQUIRED> 

回答

1

你需要employee後的空間。

info元素也未定義。

如果你正在嘗試做的就是在contractoremployee屬性,那麼這個做的:

<!ELEMENT personnel (contractor*, employee*, partner*)+ > 
<!ELEMENT contractor EMPTY> 
<!ELEMENT employee EMPTY> 
<!ATTLIST contractor lname CDATA #REQUIRED fname CDATA #REQUIRED hiredate CDATA #REQUIRED firedate CDATA #REQUIRED> 
<!ATTLIST employee lname CDATA #REQUIRED fname CDATA #REQUIRED hiredate CDATA #REQUIRED firedate CDATA #REQUIRED> 

這是有效的每DTD以上:

<personnel> 
    <employee lname="Foo" fname="Bar" firedate="1" hiredate="2"/> 
    <contractor lname="Foo" fname="Bar" firedate="1" hiredate="2"/> 
</personnel> 

或者你可以共享這樣的屬性聲明:

<!ENTITY % shared "lname CDATA #REQUIRED fname CDATA #REQUIRED hiredate CDATA #REQUIRED firedate CDATA #REQUIRED"> 
<!ELEMENT personnel (contractor*, employee*, partner*)+ > 
<!ELEMENT contractor EMPTY> 
<!ELEMENT employee EMPTY> 
<!ATTLIST contractor %shared;> 
<!ATTLIST employee %shared;> 

This w ay如果您需要更改屬性列表,它將同時更改爲contractoremployee

+0

元素信息,沒有子元素或文本,它只有屬性。你能幫助我一點空間或給我一個教程的鏈接? – user3120264

+0

更新了答案。 – Louis

+0

+1參數實體使用 –