How about something like this...
#!/usr/local/bin/perl -w
use strict;
use warnings;
use XML::LibXML;
use XML::LibXSLT;
my $xml = q{<doc.body>
<head n="1">Introduction</head>
<para>para 1</para>
<para>para 2</para>
<head n="2">Individual</head>
<para>para 1</para>
<para>para 2:
<list listtype="bull">
<item>item 1</item>
<item>2</item>
</list>
</para>
</doc.body>
};
my $xslt_stylesheet = q{<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:output method="xml" omit-xml-declaration="yes" />
<xsl:template match="/doc.body">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="head">TX <h3><xsl:apply-templates/></h3>
</xsl:template>
<xsl:template match="para">TX <xsl:apply-templates/>
</xsl:template>
<xsl:template match="list">TX <ol><xsl:apply-templates/></ol>
</xsl:template>
<xsl:template match="list/item"><li><xsl:apply-templates/></li>
</xsl:template>
</xsl:stylesheet>
};
my $parser = XML::LibXML->new();
my $xslt = XML::LibXSLT->new();
my $style_doc = $parser->parse_string( $xslt_stylesheet );
my $source = $parser->parse_string( $xml );
my $stylesheet = $xslt->parse_stylesheet( $style_doc );
my $results = $stylesheet->transform( $source );
my $output = $stylesheet->output_string( $results );
print $output;
Output:
:!./t1.pl
TX <h3>Introduction</h3>
TX para 1
TX para 2
TX <h3>Individual</h3>
TX para 1
TX para 2:
TX <ol>
<li>item 1</li>
<li>2</li>
</ol>
Best Regards,
Wonko
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|