Если мы говорим, что DTD является выполнимым, если есть документ, действительный против DTD, есть ли какой-либо пример DTD, который не является выполнимым?Есть ли пример DTD, который не имеет действительных экземпляров документа?
ответ
Интересный вопрос (несмотря на начальные проблемы ОП, которые нашли для него хорошие слова).
Ответ: Да, есть DTD, у которых нет действительных экземпляров. Вот несколько примеров.
(1) Этот DTD не имеет конечных экземпляров: каждый экземпляр типа элемента e
требует другого экземпляра типа элемента e
.
<!ELEMENT e (e) >
Это пример того, что Алекс, в комментарии ниже, вызывает бесконечный цикл в DTD.
(2) В этом DTD также отсутствуют экземпляры: каждый экземпляр типа e
требует идентификатора IDREF, ссылающегося на идентификатор где-то в документе, но атрибуты идентификатора типа не объявлены, поэтому не могут быть указаны идентификаторы.
<!ELEMENT e ANY >
<!ATTLIST e ref IDREF #REQUIRED >
(3) Этот DTD также не имеет действительных экземпляров: каждый экземпляр требует f
элемента, но не объявляется не f
элемента.
<!ELEMENT e (f) >
Любое DTD, которое не содержит деклараций элементов, также не является выполнимым.
, и если в DTD существует бесконечный цикл, тогда XML не будет соответствовать этому DTD, например. . – alex
Собственно, документы XML соответствуют DTD, а не наоборот. DTD нельзя сказать «соответствовать», поскольку это место, где конкретное значение «соответствия» установлено в виде правил. –
Это похоже на вопрос: мы говорим, что программа действительна, если источник соответствует языку программирования, есть ли какой-либо пример языка программирования, который недействителен? – slebetman
хорошо, допустим, DTD выполнимо, если есть документ, который соответствует, у вас есть пример DTD, который не является выполнимым? – alex