in reply to String Manipulation Help Required
Others have suggested using XSLT but I thought it might be useful to actually show you how - here is the stylesheet:
And of course code in Perl, first using XML::XSLT:<?xml version="1.0"?> <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" /> <xsl:template match="/"> <businesses> <xsl:apply-templates /> </businesses> </xsl:template> <xsl:template match="entity"> <block> <xsl:attribute name="name"> <xsl:value-of select="@name" /> </xsl:attribute> <xsl:attribute name="min"> <xsl:value-of select="product/@min" /> </xsl:attribute> <xsl:attribute name="max"> <xsl:value-of select="product/@max" /> </xsl:attribute> <xsl:copy-of select="description" /> <xsl:copy-of select="product/*" /> </block> </xsl:template> <xsl:template match="item"> <xsl:copy-of select="." /> </xsl:template> </xsl:transform>
Secondly using XML::LibXSLT:use XML::XSLT; + my $xslt = XML::XSLT->new ('tr.xslt', warnings => 1); + $xslt->transform ('source.xml'); print $xslt->toString; + $xslt->dispose();
use XML::LibXSLT; use XML::LibXML; + my $parser = XML::LibXML->new(); my $xslt = XML::LibXSLT->new(); + my $source = $parser->parse_file('source.xml'); my $style_doc = $parser->parse_file('tr.xslt'); + my $stylesheet = $xslt->parse_stylesheet($style_doc); + my $results = $stylesheet->transform($source); + print $stylesheet->output_string($results);
/J\
|
|---|