XML-DTD,两个元素具有相同的属性
为什么下面的代码不正确? XMLspy在元素employee处发现错误XML-DTD,两个元素具有相同的属性,xml,dtd,Xml,Dtd,为什么下面的代码不正确? XMLspy在元素employee处发现错误 <!ELEMENT personnel (contractor*,employee*,partner*)+ > <!ELEMENT contractor (info)> <!ELEMENT employee(info)> <!ATTLIST info lname CDATA #REQUIRED fname CDATA #REQUIRED hiredate CDATA #REQUIRE
<!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>
您需要在
员工
后面留一个空格
info
元素也未定义
如果您试图获取contractor
和employee
上的属性,则此操作将完成:
<!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;>
这样,如果您需要更改属性列表,则
contractor
和employee
元素信息的属性列表都会更改,没有子元素或文本,只有属性。你能帮我在空间上多做点什么,或者给我一个教程的链接吗?@DanielHaley谢谢。我不得不查找它来刷新我的记忆,因为我已经十年没有使用DTD了。现在对我来说,一切都很轻松,到处都有一些XML模式。