0

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

如果我做:

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

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

(#PCDATA|myanotherelem)+

但混合内容模型应该是从零开始的。我该如何处理?

4

1 回答 1

2

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

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

于 2013-01-23T08:17:42.503 回答