我正在尝试完成以下元素声明: XML元素可以由文本或/和元素组成,但它必须至少包含其中一个元素。
如果我这样做:
<!ELEMENT myelem (#PCDATA|myanotherelem)*>
这意味着myelem可能仍然是空的。我想过用
(#PCDATA|myanotherelem)+
但混合内容模型应为零。我该如何处理?
答案 0 :(得分:2)
对于某些数字元素(零个或多个)a,b,... z,XML DTD中内容模型的唯一合法形式是(#PCDATA)
和(#PCDATA | a | b | ... | z)*
。
请注意,<myelem></myelem>
形式的元素实际上被XML规范视为具有#PCDATA内容 - 想要指定非零长度的#PCDATA内容并非完全没有意义,但这实际上不是关键字#PCDATA
的含义。您想要施加的约束(#PCDATA内容的最小长度 - 您可能也希望它不要仅由空白字符组成)也不能用DTD表示法表示。这是其他模式语言(例如XSD和Relax NG)通过数据类型添加的东西之一。