(Отбрасывание всех старых жалоб).
Оказывается, я могу заставить это работать, используя атрибуты select.Так что это сломано для значений текстовых узлов (по крайней мере, кажется)Итак, вот что я сделал.Я изменил ваш XML, чтобы сделать это:
...
<xsl:param name="evalue" select="cccc"/>
<xsl:param name="ename" select="c"/>
...
И затем, понимая, что я получаю документ фрагмент (XML::DOM::DocumentFragment
) как $ xslt-> result_document, я использовал владельца документаи изменил строку печати на:
print "\ n --- \ n", $ xslt-> result_document-> getOwnerDocument-> toString, "\ n --- \ n";
Однако похоже на старый документ.И я бы действительно предложил использовать что-то еще, у него есть открытые и новые ошибки 2005-2006 годов: https://rt.cpan.org/Public/Dist/Display.html?Name=XML-XSLT И последняя исправленная ошибка была также 6 лет назад: https://rt.cpan.org/Public/Dist/Display.html?Status=Resolved&Name=XML-XSLT
Чем больше яползать в коде, тем больше вещей я вижу не так с ним.
Что значит "это не работает"? !!Вы получаете трассировку стека, как я?Из того, что я вижу, (в имеющейся у меня версии 0.48) этот модуль является заброшенным и, вероятно, по уважительной причине.
- Единственный способ хранить XML-документ - это
open_xml
, который вызывается тольков open_project
или transform
. open_project
не вызывается внутренне, а transform
вызывается только serve
, который не вызывается внутренне
Однако
new
всегда вызывает open_xsl
- Который всегда вызывает
__preprocess_stylesheet
- Который всегда вызывает
__extract_top_level_variables
- Который пытается проанализировать переменные и элементы param и, если этоЭлемент не имеет атрибута
select
(которого у вас нет), он пытается вызвать xml_document
, а затем его метод createDocumentFragment
.Тем не менее, он (насколько я вижу) не позволил вам установить xml_document
.Вероятно, это означало позвонить xsl_document
.Но к тому времени, когда он здесь появляется, он уже хранит XML::DOM::Element
NOT Документ как обязательную часть __get_stylesheet
, вызываемую все время от __preprocess_stylesheet
до вызова __extract_top_level_variables
.
Поэтому, когда я оставил вызов как xml_document
, он сказал мне:Can't call method "createDocumentFragment" on an undefined value
.Но если вы присвоите это более правильному полю xsl_document
, вам сообщатCan't locate object method "createDocumentFragment" via package "XML::DOM::Element"
.
Я считаю, что XML::LibXSLT
в любом случае намного более стандартно.