alienhuman has asked for the wisdom of the Perl Monks concerning the following question:

Hey Monks,

It's been over a year since I've touched perl (blasphemy, I know) and I'm shaking the rust off my keyboard. For practice, I'm going to write a program that takes an XML document as input (from the file system for starters, as a http response later), converts it into HTML and saves it locally (later, it will build a form, display it to a user for hand-editing, and send it as an http request to an external web service).

I've poked around PM and found Node XML to HTML, but it's from 2002. I was wondering if anyone has some different ideas about how to go about this, four years on.

Specifically, recommendations, comments, curses and so forth with regard to specific CPAN modules, etc.

Thanks for your advice,

AH

p.s. Also, and this is totally unrelated, but is there a place on PM where I can put a note about how to avoid a common problem while installing XML::Parser on OS X? I wrestled with it for a couple of hours before figuring it out and think other newbs could benefit.

----------
Using perl 5.8.1-RC3 unless otherwise noted. Apache/1.3.33 (Darwin) unless otherwise noted. Mac OS X 10.3.9 unless otherwise noted.

Replies are listed 'Best First'.
Re: XML in, HTML out design patterns
by Tanktalus (Canon) on Feb 04, 2006 at 18:37 UTC

    Using XSLT seems to be the XML-ish way to convert XML to HTML. I don't think that has changed in 4 years. Other options probably include using XML::Twig or XML::Simple to read in the XML, and then use some templating system (such as Text Template or HTML::Template or ...) to produce HTML output. It kind of depends on what framework, if any, you have, or, if you don't have a framework yet, what framework you are going to use.

    For example, if you are doing all the rest of your website in HTML::Template, I would probably suggest that you use the perl to read in the XML file, and place it in a hash with which HTML::Template can use to populate its template. However, if all your pages are coming from an XML source, learning XSLT may be a good thing as it is a differently cross-problem tool that you can put in your mental toolbox.

    As for your fun in installing XML::Parser on OS X, I'd suggest Meditations or Tutorials.

      you could use Petal - its the perl implementation of TAL. template docs are/must be valid xml and way easier to use than xslt

      Thank you both for your replies and suggestions to what I realize is a pretty open-ended question.

      I decided to try XSLT first, but I'm having difficulty installing XML::LibXSLT properly (it keeps failing tests during 'make test').

      I'm just about at my wits end, so I may end up looking at Petal sooner than I thought.

      ----------
      Using perl 5.8.1-RC3 unless otherwise noted. Apache/1.3.33 (Darwin) unless otherwise noted. Mac OS X 10.3.9 unless otherwise noted.