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