有人知道混合内容元素(在 dtd 中)需要在末尾添加“*”吗?
例如:<!ELEMENT note (#PCDATA|to|from|header|message)*>
我指的是我不想再重复任何事情的情况......我只想能够在#PCDATA 和其他元素之间进行选择。
我知道如果我在 decleration 的末尾去掉“*”,我会得到一个糟糕的 DTD decleration ...但是 - 我不知道这是什么原因......
有谁知道为什么?
您遇到了这个限制,因为混合内容模型只允许限制出现的元素而不是它们的顺序或数量。恐怕这是XML 规范本身所要求的。
恐怕混合内容很难。该模型的设计考虑了文档 - 当您想到内联文本时它是有意义的,但在许多其他情况下则不然。如果您可以选择,最佳实践建议您创建一个元素来包含您的 PCDATA。如果你不能,那么我担心你会受到混合内容模型的限制(我担心使用另一种模式语言也无济于事)。
你想使用任何
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE things [
<!ELEMENT things ANY>
]>
<things>
<person name="a" />
<cats />
<dogs />
<animals><a rel="gogo" /></animals>
</things>
此外,*
是零到更多次出现的运算符。所以(element|element2)*
说要么或/和