Justudo has asked for the wisdom of the Perl Monks concerning the following question:

Hi monks, when I need a simple solution, this is the place! So I have 2 files - style.xsl and testxml.pl testxml.pl
#!/usr/bin/perl -w use XML::LibXSLT; use XML::LibXML; my $s = " <files> <file> <name>file_test1</name> <subject>subject1</subject> <userprop> <nameprop>Color</nameprop> <valueprop>Blue</valueprop> </userprop> <userprop> <nameprop>Texture</nameprop> <valueprop>Coarse</valueprop> </userprop> </file> <file> <name>file_test2</name> <subject>subject2</subject> <userprop> <nameprop>Color</nameprop> <valueprop>Blue</valueprop> </userprop> </file> </files>"; print "Content-type: text/html\n\n"; my $parser = XML::LibXML->new(); my $xslt = XML::LibXSLT->new(); my $source = $parser->parse_string($s); my $style_doc = $parser->parse_file('style.xsl'); my $stylesheet = $xslt->parse_stylesheet($style_doc); my $results = $stylesheet->transform($source); print $stylesheet->output_string($results);
style.xsl
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html"/> <xsl:template match="file"> <br/><b>name</b>: <xsl:apply-templates select="name"/> <br/><b>subject</b>: <xsl:apply-templates select="summary/sub +ject"/> <xsl:text> </xsl:text> </xsl:template> </xsl:stylesheet>
I am able to run the above fine. But what if I want to output all the "textures only" for each file, is there a neat way of doing it ?

Replies are listed 'Best First'.
Re: Simple LibXSLT matching
by Solo (Deacon) on May 24, 2004 at 11:41 UTC
    This is more of an XSLT question, and you might want to try a different forum for a more complete answer.

    There are many ways to go about that, but the easiest is something like:

    <xsl:template match="/"> <xsl:apply-templates select="*/userprop/[nameprop]=='Texture'" /> </xsl:template match> <xsl:template match="userprop"> ... </xsl:template>
    There is probably an error in the XPath in the select="..." part, but this should be enough to get you started.

    --Solo
    --
    You said you wanted to be around when I made a mistake; well, this could be it, sweetheart.
Re: Simple LibXSLT matching
by Justudo (Novice) on May 25, 2004 at 08:48 UTC
    Got what I needed with the following addition into style.xsl :
    <br/><b>Userprop</b>:<xsl:apply-templates select="userprop[nameprop='T +exture']" />