XSLT не обработает два документа одновременно
Fedka 06.06.2003 21:43
Ситуация похожа на ту, которую описал Ivan.Rublev.
Последствия идентичные. Я бы и рад обойтись одним XSLT,
но решение усгубляется тем, что из одного XML-файла берется значение "id", а из другого надо достать информацию этому "id" соответствующую.
Есть книга стихов в XML-файле:
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE book SYSTEM 'Book.dtd'>
<book> ШАМИЛЬ АБРЯРОВ НА ПРОСВЕТ ....
<book-body>
<verse id="petiplakat">
<verse-title display-off="yes">Ах, откровенно петь и плакать</verse-title>
<verse-body>
Ах, откровенно петь и плакать,
Болеть за тех, кою люблю!...
Но в эту сумрачную слякоть
Не прорубиться кораблю.
....
</verse-body>
</verse>
<verse id="teutra">
<verse-title>ТЕ УТРА...</verse-title>
<verse-body>
....
</verse-body>
</verse>
<!-- далее в том же духе друг за другом идут стихотворения -->
</book-body>
</book>
Есть другой файл(ы) XML. Описание компакт-диска.
<?xml version="1.0" encoding="windows-1251"?>
<CD>
<CD-title>Пирог со свечами</CD-title>
<CD-track>
<CD-track-title>Для того, чтоб сказать тебе (Я звоню:)</CD-track-title>
<CD-track-verse id='dlyatogochtobskazattebe'/>
</CD-track>
<CD-track>
<CD-track-title>Пирог со свечами</CD-track-title>
<CD-track-verse id='pirogsosvechami'/>
</CD-track>
<!-- подобно и остальные песни -->
</CD>
Диски разные, песни повторяются и порой под разными именами.
Хотелось по <CD-track-verse id='???'/> восстановить текст песни
из первого файла (книги).
$cddoc[^xdoc::load[pie.xml]]
$vdoc[^xdoc::load[/verses/na-prosvet-book.xml]]
$TrackList[^cddoc.documentElement.getElementsByTagName[CD-track-verse]]
^TrackList.foreach[key;tracknode]{
$id[^tracknode.getAttribute[id]]
$Verse[^vdoc.getElementById[$id]]
$verse-body[^Verse.getElementsByTagName[verse-body]]
После предпоследней строки манипуляции с $Verse приводят к ошибке
Unhandled Exception (Debug)
string method not found
getElementsByTagName