parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Включение DTD, или `Вопрос про XML (?)'

Владимир Степанов 24.01.2005 19:42

Добрый вечер,

ниже приведены два документа: index.xml и auto.p. Оба лежат в корне веб-пространства. Хост настроен так, что Parser обрабатывает xml-и.

Вызов index.xml приводит к следующей ошибке:
=============================================
I/O warning : failed to load external entity "types.dtd"
<!DOCTYPE page SYSTEM "types.dtd">
^


Проблема решается так:
==================================
<!DOCTYPE page SYSTEM "http://$env:HTTP_HOST/types.dtd">

а я полагал, что и так должно работать ;-)
либо, что поможет следующее:
=======================
$document[^xdoc::create[http://$env:HTTP_HOST/]{$body}]

Я полагал, что парсер будет искать DTD, начиная с корня веб-пространства.
?

Спасибо. С уважением,

Владимир


index.xml
====================
<?xml version="1.0" encoding="windows-1251"?>
<?xml-stylesheet type='text/xsl' href='site.xsl'?>
<!DOCTYPE page SYSTEM "types.dtd">
<page>
<info></info>
<nav_site></nav_site>
<nav_section></nav_section>
</page>


auto.p
=====================
@postprocess[body]
^try{
$document[^xdoc::create{$body}]
$transformed[^document.transform[site.xsl]]
^transformed.string[$.method[xml]]
}{
^if($exception.type eq xml){
$exception.handled(1)
<pre>$exception.comment</pre>
}
}

Документ валидный -- на всякий случай DTD:
<?xml version="1.0" encoding="windows-1251"?>
<!ELEMENT page (info, nav_site, nav_section, nav_portfolio?, content?)>
<!ELEMENT info ANY>
<!ELEMENT nav_site ANY>
<!ELEMENT nav_section ANY>
<!ELEMENT nav_portfolio ANY>
<!ELEMENT content ANY>