#xml #root #dtd
#xml #корень #dtd
Вопрос:
Можно ли определить, какой элемент будет корневым элементом в DTD внутренне. Другими словами, можно ли определить корневой элемент, когда DTD находится в отдельном файле?
Комментарии:
1. Когда вы говорите «внутренне», вы имеете в виду в файле, который не включает DTD?
2. обычно вы записываете dtd в отдельный файл и перед тем, как записать xml-документ (другой файл), вы говорите <!DOCTYPE «root-element» «dtd-url»>. Мой вопрос: есть ли другой способ указать корневой элемент в файле dtd?
3. Почему вы хотите это сделать? Знание причины сделало бы этот вопрос более полезным для других, а также может помочь нам предложить другой способ добиться того же.
Ответ №1:
Корневой элемент определяется DOCTYPE
объявлением. Корневым элементом может быть любой элемент DTD.
Например, в приведенном ниже DTD (test.dtd) book
обычно будет корневым элементом:
<!ELEMENT book (chapter )>
<!ELEMENT chapter (section )>
<!ELEMENT section EMPTY>
Однако, если мы используем section
в doctype, section
является ли корневой элемент:
<!DOCTYPE section SYSTEM "test.dtd">
<section/>
Я использовал DOCTYPE
объявления во внешнем DTD для прямого указания корневого элемента, но я не думаю, что это разрешено спецификацией. Что я сделал, так это сохранил DOCTYPE
его во внешнем DTD и удалил DOCTYPE
из XML-файла. Я смог связать DTD с файлом XML в командной строке программы, которую я использовал.