Программирование > Perl
XML::XSLT выборка
(1/1)
dimk:
Почему не работает выборка с XML::XSLT?
Пробовал в версии 0.40 c activestate и 0.48 CPAN.
В IE выбирается правильно, а XML::XSLT выбирает только последний элемент.
$xml = qq~<?xml version="1.0" encoding="utf-8"?>
<people>
<person sex="male">zzz</person>
<person sex="male">aaa</person>
<person sex="female">ccc</person>
<person sex="female">ggg</person>
</people>~;
$xsl = qq~<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/people">
<ul>
<xsl:apply-templates select="/people/person[@sex=\'male\']" />
</ul>
</xsl:template>
<xsl:template match="/people/person[@sex=\'male\']">
<li><xsl:value-of select=\'.\' /></li>
</xsl:template>
</xsl:stylesheet>~;
use XML::XSLT;
print XML::XSLT->new($xsl, warnings=>1)->transform ($xml)->toString;
ravshaniy:
у меня эксплойер выдал ошибку, в принципе более полную информацию я получил сделав debug:
--- Код: ---XML::XSLT->new($xsl, warnings=>1, debug=>1)
--- Конец кода ---
и при use strict; есть одна ошибка интерполяции массива @sex, заменил qq на q.
вот... возможно позже еще вернусь к этому вопросу
dimk:
Спасибо, действительно не экранировал @sex, надо \\@sex
XSLT начал изучать только что. вопросы:
1. Мне надо применить шаблон к элементу с определенным значением атрибута. Правильно ли я делаю в принципе, или чаще используют другие способы?
2. Поддерживает ли такую выборку XML::XSLT?
в описании написано, что поддержка xsl:apply-templates ограничена.
3. Какой модуль для XSLT и perl под windows лучше использовать? mod-xslt2 для windows apache не установить?
dimk:
Установил XML::LibXSLT, заработало.
use XML::XSLT::Wrapper;
my $xslt = XML::XSLT::Wrapper->new(ProcessorList => [\'libxslt\'],);
print $xslt->transform(XMLString => $xml, XSLString => $xsl);
Навигация
Перейти к полной версии