#!/usr/bin/perl -T use strict; use warnings; use CGI qw(:standard); use LWP::Simple qw(get); use HTML::Entities; use XML::LibXML; use XML::LibXSLT; print header, start_html, start_form, textfield('node_id'), submit('ID'), end_form, end_html, ; my $id = param('node_id'); print hr, node2html($id); sub node2html { my $id = shift || 181206; return qq(bad id "$id"\n) unless $id =~ /^\d+$/; my $xml = get "http://perlmonks.org/index.pl?node_id=$id&displayty +pe=xml"; my $xslt = do {local $/; <DATA>}; my $xml_parser = XML::LibXML->new(); my $xslt_parser = XML::LibXSLT->new(); my $doc = $xml_parser->parse_string($xml); my $style = $xml_parser->parse_string($xslt); my $stylesheet = $xslt_parser->parse_stylesheet($style); my $results = $stylesheet->transform($doc); return decode_entities($stylesheet->output_string($results)); } __DATA__ <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="node"> <xsl:value-of select="./@title"/> (<xsl:value-of select="./@id"/>)<br/> by <xsl:value-of select="./author"/> <hr/> <blockquote> <xsl:value-of select="./data/field"/> </blockquote> </xsl:template> </xsl:stylesheet>
In reply to Node XML to HTML by jeffa
For: | Use: | ||
& | & | ||
< | < | ||
> | > | ||
[ | [ | ||
] | ] |