我很难理解 | DTD 中用于定义哪些元素可以包含在另一个元素中的字符。我尝试了 google 很长一段时间,但没有一个主要结果以我能理解的方式解决该主题 - 可能只是我坐在墙前生动地凝视。
想象一下下面的例子。我有一个名为“response”的元素,它可以包含无序和未定义数量的标签“character”和“player”,或者恰好包含一个标签“base”和未定义数量的“option”标签。如:
<response>
<character>text</character>
<player>text</player>
<character>text</character>
</response>
已验证。还:
<response>
<base>text</base>
<option>other elements</option>
<option>other elements</option>
<option>other elements</option>
</response>
也是有效的。但是,角色/玩家和基础/选项标签的混合是无效的。我在我的 DTD 中尝试了以下内容:
<!ELEMENT response ((character*, player*)
|(base, option*))>
然而,这并没有导致任何适当的验证。一些
<!ELEMENT response (character*, player*,
base*, option*)>
不完全是我想要的,如果我在我的层次结构中执行角色->玩家->角色,我的编辑也会哭。w3schools 和其他一些页面告诉我,比如
<!ELEMENT response (character | player | base
| option)*>
将是混合内容,我可以随心所欲地在我的标签中添加东西(或者至少,这就是我所相信的),但这既不是我想要的,我的编辑似乎也不满意.
所以,如果有人能告诉我正确使用 | 在 DTD 中定义元素时的字符。提前致谢。
编辑:从声明中编辑了 - 当然是错误的 - #REQUIRED 标签。没有在我的代码中使用它们,只是搞砸了。
[编辑:删除了问题标题中对“混合内容”的错误引用。]