DTD定义具有混合内容的元素的出现次数

时间:2018-07-23 05:05:07

标签: xml dtd xml-validation xml-dtd

在DTD中声明混合内容元素时,如何为子元素添加约束? 这是我的xml。

<!ELEMENT manager (contact)>
<!ATTLIST manager name CDATA #REQUIRED>
<!ELEMENT contact (#PCDATA|office|mobile+|email*)*>
<!ELEMENT mob (#PCDATA)>
<!ELEMENT office (#PCDATA)>
<!ELEMENT email (#PCDATA)>

当我写这篇文章时,我遇到一个错误,提示当子元素的类型受到约束时,混合内容模型“联系人”必须以“)*”结尾。

请帮助。

对contact元素的约束是,office元素必须仅出现一次,mobile元素必须出现一次或多次,email元素是可选的。

这是我想要的,

<contact>
            Contact Details:
            <email>sam@yahoo.com</email>
            <mob>077769768</mob>
            <office>036568879</office>
</contact>

2 个答案:

答案 0 :(得分:0)

Mixed content只能以一种方式声明。您无法指定元素在混合内容声明中可以出现多少次。

您的声明必须如下所示:

<!ELEMENT contact (#PCDATA|office|mobile|email)*>
  

contact元素的约束是,office元素必须   仅出现一次,移动元素必须出现一次或多次   时间,电子邮件元素是可选的。

您的约束听起来并不像您需要混合的内容;也许就足够了:

<!ELEMENT contact (office,mobile+,email?)>

答案 1 :(得分:0)

混合内容模型只能指定可能出现的子元素的名称。无法设置子元素顺序或出现次数。有这些限制,不建议使用混合内容模型。