in reply to xml using XML::Simple reording of XML-Content
I'm no expert in this subject but here's a XSLT transform from the original XML into one with the correct order
poj#!perl use strict; use XML::LibXSLT; use XML::LibXML; =head1 test.xsl <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Tr +ansform"> <xsl:output indent="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> <xsl:template match="TRGROUP"> <xsl:copy> <xsl:apply-templates select="COLS"/> <xsl:apply-templates select="COLSPEC"/> <xsl:apply-templates select="THEAD"/> <xsl:apply-templates select="TBODY"/> </xsl:copy> </xsl:template> </xsl:stylesheet> =cut my $parser = XML::LibXML->new(); my $xslt = XML::LibXSLT->new(); my $stylesheet = $xslt->parse_stylesheet_file('test.xsl'); my $xml; { local $/=''; $xml = <DATA>; } my $source_doc = $parser->parse_string( $xml ); my $result = $stylesheet->transform( $source_doc ); print $stylesheet->output_string( $result ); __DATA__ <TABLE> <TRGROUP> <COLS>AA</COLS> <TBODY>A</TBODY> <COLSPEC>XX</COLSPEC> <THEAD>1</THEAD> </TRGROUP> <TRGROUP> <COLSPEC>XX</COLSPEC> <TBODY>B</TBODY> <THEAD>2</THEAD> <COLS>BB</COLS> </TRGROUP> <TRGROUP> <TBODY>C</TBODY> <COLS>CC</COLS> <COLSPEC>ZZ</COLSPEC> <THEAD>3</THEAD> </TRGROUP> </TABLE>
|
|---|