不确定的内容模型错误DTD

问题描述 投票:0回答:1

给出:

<!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的更改)不正确。

我感谢任何改进的建议。

xml dtd non-deterministic dtd-parsing
1个回答
1
投票

[我认为您想出的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>
© www.soinside.com 2019 - 2024. All rights reserved.