سؤال

أود أن أعرف أيًا من محركات XSLT العديدة الموجودة تعمل بشكل جيد مع Perl.

سأستخدم Apache (2.0) وPerl، وأريد الحصول على ملفات PDF وXHTML.

أنا جديد في هذا النوع من المشاريع لذا فإن أي تعليق أو اقتراح سيكون موضع ترحيب.

شكرًا.


من خلال بحث بسيط على جوجل وجدت الكثير وأظن أن هناك المزيد.

سيكون موضع ترحيب أي تعليق على تجاربك.

هل كانت مفيدة؟

المحلول

الخطأ الأول - ابحث في CPAN, وليس جوجل :)

يؤدي هذا إلى مجموعة من النتائج، لكنه يسلط الضوء على مشكلة CPAN، حيث يوجد أكثر من حل واحد، وليس من الواضح دائمًا أي منها يعمل، أو تم التخلي عنه، أو معطل، أو بطيء أو أيًا كان.

ومن المثير للقلق أن أفضل إجابة (أو على الأقل واحدة من أفضل الإجابات) تظهر على الصفحة أربعة من النتائج :( كما اقترح أشخاص آخرون، XML::LibXSLT قوي ويقوم بهذه المهمة:

  use XML::LibXSLT;
  use XML::LibXML;

  my $parser = XML::LibXML->new();
  my $xslt = XML::LibXSLT->new();

  my $source = $parser->parse_file('foo.xml');
  my $style_doc = $parser->parse_file('bar.xsl');

  my $stylesheet = $xslt->parse_stylesheet($style_doc);

  my $results = $stylesheet->transform($source);

  print $stylesheet->output_string($results);

إذا كنت تريد إخراج النتائج إلى ملف، فقم بإضافة هذا

#create output file
open(my $output_xml_file_name, '>', 'test.xml');
print $output_xml_file_name "$results";

إذا كنت لا تريد أن تفعل أي شيء فاخر، على الرغم من ذلك، هناك XML::LibXSLT::سهل, ، والذي يقوم بشكل أساسي بتغليف ما سبق في استدعاء أسلوب واحد (ويقوم بمجموعة من الأشياء الذكية خلف الكواليس باستخدام غزال أمريكي ضخم.تحقق من مصدر التعليم!).

  use XML::LibXSLT::Easy;

  my $p = XML::LibXSLT::Easy->new;

  my $output = $p->process( xml => "foo.xml", xsl => "foo.xsl" );

نصائح أخرى

حتى الآن أنا مرتاح جدًا XML::LibXML للمهام غير المتعلقة بـ xslt، وتشير وثائقها إلى XML::LibXSLT, ، والتي تبدو جميلة جدًا، لكن ليس لدي خبرة بها حتى الآن

لا أستطيع حقاً أن أقول ما هو الحل الأفضل لأنه لم تتح لي الفرصة لتجربتهم جميعاً.
لكن يمكنني أن أوصيك بتجربة وحدة Perl ليبكسسلت.
إنها واجهة لمكتبة جنوم libxslt.لقد استخدمته في أحد مشاريعي الأخيرة وكنت راضيًا عنه.

أنت لا تذكر ما هو نظام التشغيل ولكن بالنسبة لمعظم منصات *nix، XML::LibXML سيكون الأسهل في الاستخدام والتثبيت.

فيما يلي بعض مكتبات Perl المخصصة لاستبدال XSLT:

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top