具有至少一个元素/类型的XML混合内容模型

时间:2013-01-21 11:25:47

标签: xml dtd

我正在尝试完成以下元素声明: XML元素可以由文本或/和元素组成,但它必须至少包含其中一个元素。

如果我这样做:

<!ELEMENT myelem (#PCDATA|myanotherelem)*>

这意味着myelem可能仍然是空的。我想过用

(#PCDATA|myanotherelem)+

但混合内容模型应为零。我该如何处理?

1 个答案:

答案 0 :(得分:2)

对于某些数字元素(零个或多个)a,b,... z,XML DTD中内容模型的唯一合法形式是(#PCDATA)(#PCDATA | a | b | ... | z)*

请注意,<myelem></myelem>形式的元素实际上被XML规范视为具有#PCDATA内容 - 想要指定非零长度的#PCDATA内容并非完全没有意义,但这实际上不是关键字#PCDATA的含义。您想要施加的约束(#PCDATA内容的最小长度 - 您可能也希望它不要仅由空白字符组成)也不能用DTD表示法表示。这是其他模式语言(例如XSD和Relax NG)通过数据类型添加的东西之一。