Передача параметров в xslt_process

Milagro

Новичок
Передача параметров в xslt_process

Apache/1.3.24
PHP 4.3.2
Sablotron 0.97

Проблема с вызовом функции xslt_process($xp, $xmlfile, xslfile, NULL, $params);

где $params = Array('curnode' => '//div/chapter/someparagraf');

В xsl-файле описан параметр <xsl:param name="curnode" select="/"/>

Цель состоит в том, чтобы передавать в XSLT текущий узел. Я хочу что-бы шаблонные правила выполнялись не для всего XML-файла, а только для одной ветки - это и есть узел, который я передаю.

При вызове этой функции Sablotron выводит ошибку "expression is not a node set" и указывает на строчку в XSL где и определен параметр.

Если в xslt параметр определить без select, т.е. <xsl:param name="curnode"/>, то параметр передается нормально. Но это не подходит, так он воспринимается не как выражение, а как шаблон.

Похоже очередная "фича", помогите, кто сталкивался, весь мозг сломал уже.
 

worm

Новичок
http://php.rinet.ru/manual/ru/function.xslt-process.php
The parameters must be UTF-8 encoded and their values will be interpreted as strings by the Sablotron processor.
Так что с этим можно только смириться...

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

Milagro

Новичок
Да я уже понял, что не судьба. Теперь использую
DomXsltStylesheet->process(), там все работает.

А надо это по простой причине - вся книга сидит в одном xml-файле, и мне нужно вывести указатели на ВСЕ ее главы и на параграфы только ТЕКУЩЕЙ главы. Вот на текущую главу я указатель и передаю. В принципе можно и выдергивать поддерево с текущей главой и на нем строить преобразование, но это как-то криво и ресурсозатратно... Проще тупо писать значение параметра по умолчанию в XSL.

Я еще пост закинул, про выбор функций для преобразования, не откоментируешь там?
 
Сверху