给出:
<!ELEMENT diagnostic-tracks (hookup*, (%step;)*, ((diagnostic-track-automated, diagnostic-track-manual) | diagnostic-track-automated | diagnostic-track-manual), evaluate*, disconnect*)>
和
<!ELEMENT diagnostic-track-automated (((%step;) | diagnostic_group)*, diagnostic_group, evaluate*)>
<!ENTITY % step "((%figtab;) | step1 | step1-alt)">
<!ENTITY % figtab "figure | figure-alt | table | table-alt | lubetab">
我收到了非确定性的内容模型错误,诊断轨道自动化和diagnostic_group可能同时匹配两个或多个令牌。
我更改为:
<!ELEMENT diagnostic-tracks (hookup*, (%step;)*, diagnostic-track-automated?, diagnostic-track-manual?, evaluate*, disconnect*)>
和
<!ELEMENT diagnostic-track-automated (((%step;) | diagnostic_group+)*, evaluate*)>
消除了错误消息,但是我认为我的更改(尤其是对于diagnostic-track-automated
的更改)不正确。
我感谢任何改进的建议。
[我认为您想出的diagnostic-tracks
似乎是您要尝试使用原始非确定性模型完成的工作:
零个或多个
hookup
元素,后跟零个或多个元素从%step;
开始,后跟零或一diagnostic-track-automated
元素后跟零或一diagnostic-track-manual
元素后跟零个或多个disconnect
个元素
但是我认为diagnostic-track-automated
的修复不是您最初想要的。
您现在建议的是:
%step;
或diagnostic_group
中的零个或多个元素零个或多个evaluate
元素
我认为您的意思是:
%step;
中的零个或多个元素,后接一个或多个diagnostic_group
个元素,后跟零个或多个evaluate
元素
哪个会是:
<!ELEMENT diagnostic-track-automated ((%step;)*, diagnostic_group+, evaluate*)>
这是完整/可测试的示例...
DTD(so.dtd)
<!ENTITY % figtab "figure | figure-alt | table | table-alt | lubetab">
<!ENTITY % step "%figtab; | step1 | step1-alt">
<!ELEMENT diagnostic-tracks (hookup*, (%step;)*, diagnostic-track-automated?, diagnostic-track-manual?, evaluate*, disconnect*)>
<!ELEMENT diagnostic-track-automated ((%step;)*, diagnostic_group+, evaluate*)>
<!ELEMENT table EMPTY>
<!ELEMENT table-alt EMPTY>
<!ELEMENT diagnostic_group EMPTY>
<!ELEMENT step1-alt EMPTY>
<!ELEMENT evaluate EMPTY>
<!ELEMENT figure EMPTY>
<!ELEMENT figure-alt EMPTY>
<!ELEMENT lubetab EMPTY>
<!ELEMENT step1 EMPTY>
<!ELEMENT diagnostic-track-manual EMPTY>
<!ELEMENT disconnect EMPTY>
<!ELEMENT hookup EMPTY>
XML
<!DOCTYPE diagnostic-tracks SYSTEM "so.dtd">
<diagnostic-tracks>
<diagnostic-track-automated>
<diagnostic_group/>
</diagnostic-track-automated>
<diagnostic-track-manual/>
</diagnostic-tracks>