2014-09-28 7 views
-1

Если мы говорим, что DTD является выполнимым, если есть документ, действительный против DTD, есть ли какой-либо пример DTD, который не является выполнимым?Есть ли пример DTD, который не имеет действительных экземпляров документа?

+0

Собственно, документы XML соответствуют DTD, а не наоборот. DTD нельзя сказать «соответствовать», поскольку это место, где конкретное значение «соответствия» установлено в виде правил. –

+0

Это похоже на вопрос: мы говорим, что программа действительна, если источник соответствует языку программирования, есть ли какой-либо пример языка программирования, который недействителен? – slebetman

+0

хорошо, допустим, DTD выполнимо, если есть документ, который соответствует, у вас есть пример DTD, который не является выполнимым? – alex

ответ

1

Интересный вопрос (несмотря на начальные проблемы ОП, которые нашли для него хорошие слова).

Ответ: Да, есть 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, которое не содержит деклараций элементов, также не является выполнимым.

+0

, и если в DTD существует бесконечный цикл, тогда XML не будет соответствовать этому DTD, например. . – alex