如何从XML文档定义DTD语句,其中特定元素具有属性,并且根据此属性,具有不同的子元素。
例如在这种情况下:
<tv_program>
<!-- Various elements here -->
<program type = "live chat">
<presenter></presenter>
<guests></guests>
</program>
<program type = "documentary">
<short_descrip></short_descrip>
</program>
<program type = "film">
<title></title>
<genre></genre>
<rating></rating>
</program>
</tv_program>
在DTD中的每个特定属性类型(实时聊天,纪录片,电影)中声明子元素(演示者,访客等)的结构是什么?
答案 0 :(得分:0)
您正在描述的内容(现在)名称为 Conditional Type Assignment 。 DTD无法做到这一点。甚至不可能使用XSD 1.0。您需要XSD 1.1来进行条件类型分配,例如让内容模型依赖于属性的值。
有关XSD 1.1中CTA的示例,请参阅this answer。
如果您坚持使用DTD或XSD 1.0,那么您必须
@type
消除元素类型的歧义
属性。如果可能,请使用选项#2;它被认为是XML中的最佳实践,可以区别对不同元素进行命名。