【发布时间】:2020-06-10 15:19:06
【问题描述】:
我期待DTD,其中xml文件中的每个元素都是可选的,但如果有多个,则必须按正确的顺序排列。并且必须至少有一项没有重复项。
在这种情况下,至少没有一个
<!DOCTYPE mnop [
<!ELEMENT abcd (#PCDATA)>
<!ELEMENT efgh (#PCDATA)>
<!ELEMENT ijkl (#PCDATA)>
<!ELEMENT mnop (abcd?, efgh?, ijkl?)>
]>
<mnop>
</mnop>
在这种情况下可能有重复
<!DOCTYPE mnop [
<!ELEMENT abcd (#PCDATA)>
<!ELEMENT efgh (#PCDATA)>
<!ELEMENT ijkl (#PCDATA)>
<!ELEMENT mnop (abcd?, efgh?, ijkl?)+>
]>
<mnop>
<abcd>AAAAAAA</abcd>
<abcd>AAAAAAA</abcd>
</mnop>
在这种情况下(我不知道为什么!)但是在 xml 中的顺序可能不正确(DTD 有效)
<!DOCTYPE mnop [
<!ELEMENT abcd (#PCDATA)>
<!ELEMENT efgh (#PCDATA)>
<!ELEMENT ijkl (#PCDATA)>
<!ELEMENT mnop ((abcd, efgh?, ijkl?) | (abcd?, efgh, ijkl?) | (abcd?, efgh?, ijkl))>
]>
<mnop>
<efgh>EEEEE</efgh>
<abcd>AAAAAAA</abcd>
<ijkl>AAAAAAA</ijkl>
</mnop>
例如正确的文件:
<mnop>
<abcd>AAAAAAA</abcd>
</mnop>
<mnop>
<efgh>EEEEE</efgh>
<ijkl>AAAAAAA</ijkl>
</mnop>
<mnop>
<ijkl>AAAAAAA</ijkl>
</mnop>
每个案例都按正确的顺序排列,没有重复。 在我的示例中,我说的是 3 个元素,但在我的例子中,我有 12 个元素。
【问题讨论】: