2014-09-28 65 views
-1

如果我们说DTD是可满足的,如果有一个对DTD有效的文档,是否有任何DTD的例子不能满足?有没有有效的文档实例的DTD的例子?

+0

实际上,XML文档符合DTD,而不是其他方式。 DTD不能说是“符合”,因为它是以规则的形式规定“符合”的特定含义的地方。 – 2014-09-28 14:44:33

+0

这就像问:如果源符合编程语言,我们说程序是有效的,那么有没有任何编程语言的例子是无效的? – slebetman 2014-09-28 14:57:50

+0

好吧,假设一个DTD满足如果有一个符合的文件,你有没有可满足的示例DTD? – alex 2014-09-28 15:01:56

回答

1

有趣的问题(尽管OP的最初的麻烦找到好词)。

答案是:是的,有DTD没有有效的实例。这里有些例子。 (1)此DTD没有有限实例:元素类型为e的每个实例都需要另一个元素类型为e的实例。

<!ELEMENT e (e) > 

这是什么亚历克斯,在下面留言,呼吁在DTD无限循环的例子。 (2)此DTD也缺少实例:e类型的每个实例都需要IDREF引用文档中的某个ID,但没有声明类型ID的属性,因此不能有任何ID指向。

<!ELEMENT e ANY > 
<!ATTLIST e ref IDREF #REQUIRED > 

(3)该DTD还没有有效的情况下:每个实例需要一个f元件,但没有f元件被声明。

<!ELEMENT e (f) > 

任何不包含元素声明的DTD也是不可满足的。

+0

,并且如果DTD中存在无限循环,则不存在符合该DTD的XML,例如, <!ELEMENT p(p +)>。 – alex 2014-10-15 23:16:09