XML::LibXSLT element tags stripped out

A

Abro Gaticus

Being extremely new to XML::LibXSLT and XML/XSL in general I have what
I am assuming is a very newb question.

I found an old post (dated 2001) that showed where to find ppm packages
for libXSLT since I am trying this out using activestate on XP.

C:\> ppm
ppm> set repository RK http://theoryx5.uwinnipeg.ca/p­pmpackages/
ppm> set save
ppm> install XML::LibXML
ppm> install XML::LibXSLT

following these explicit instructions (much appreciated) I was able to
install the packages and begin scripting. The ppm packages are great
as they even download the dll's that XML::LibXSLT depends on.

I created a simple XML file, a simple XSL file, and a simple perl
script that uses XML::LibXSLT to perform the transformation.
Everything seems to work correctly except that in the result document
none of the element tags are output, only their values. <xls:eek:utput
method="xml"/> is ignored. I find this strange as I have read
documentation that 'xml' should be the default output method anyway.

Perhaps someone can suggest what I am doing incorrectly. Code below:
Thanks in advance.

--------------------------------
test.xml:
<?xml version="1.0" ?>

<entry>
<major>
pain in the grass
</major>
<stats>
<a> 11 </a>
<b> 21 </b>
<c> 31 </c>
<d> 41 </d>
<e> 51 </e>
</stats>
</entry>

-------------------------------
template.xsl
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:eek:utput method="xml"/>

<!-- first attempt -->
<xsl:template match="stats">
<xsl:text> Stats: </xsl:text>
<xsl:apply-templates/>
</xsl:template>

</xsl:stylesheet>

---------------------------------
result.xml
<?xml version="1.0"?>


pain in the grass

Stats:
11
21
31
41
51

---------------------------
xslTest.pl
use strict;
use XML::LibXSLT;
use XML::LibXML;

my $parser = XML::LibXML->new();
my $xslt = XML::LibXSLT->new();

my $source = $parser->parse_file('test.xml');
my $style_doc = $parser->parse_file('template.xsl');

my $stylesheet = $xslt->parse_stylesheet($style_doc);

my $results = $stylesheet->transform($source);

$stylesheet->output_file($results,'result.xml');
 
B

Brian McCauley

Abro said:
Being extremely new to XML::LibXSLT and XML/XSL in general I have what
I am assuming is a very newb question.

It is, and not a Perl one - it is a pure XSL one.
I created a simple XML file, a simple XSL file, and a simple perl
script that uses XML::LibXSLT to perform the transformation.
Everything seems to work correctly except that in the result document
none of the element tags are output, only their values.

This is the effect of the default XSL trasformation.
<xls:eek:utput
method="xml"/> is ignored. I find this strange as I have read
documentation that 'xml' should be the default output method anyway.

AFAIK, it is.
Perhaps someone can suggest what I am doing incorrectly.

You are wrongly assuming that the default XSL transformation is the
identity transformation.

Read about the default XSL tranformation here:

http://www.w3.org/TR/xslt#built-in-rule

If you want to copy elements you need to add an explicit template to do so.

http://www.w3.org/TR/xslt#copying
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top