[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Omaha.pm] [OT] Parsing XML with command line XSLT xsltproc...



Tools that understand XSL are ubiquitous ... I sure wouldn't recommend down-loading or writing some code (Perl or otherwise), and then manually going through the process of running the RSS through your code, and then re-loading the output into your player. Foist the work off on the machines/devices, I say :



<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:output method="html"/>

<xsl:template match="/" >
 <html>
  <body>
   <xsl:for-each select="//channel">
    <table>
     <tr>
      <th style="text-align: center;">
       <a>
        <xsl:attribute name="href">
         <xsl:value-of select="link" />
        </xsl:attribute>
        <xsl:value-of select="title" />
       </a>
      </th>
     </tr>
      <tr>
       <td style="text-align: center; font-size: smaller;">
        Last Updated on <xsl:value-of select="pubDate" />
       </td>
      </tr>
      <tr>
       <td>
        <hr />
       </td>
      </tr>
     <xsl:for-each select="item">
      <tr>
       <td style="text-align: left;">
        <a>
         <xsl:attribute name="href">
          <xsl:value-of select="link" />
         </xsl:attribute>
         <xsl:value-of select="title" />
        </a>
       </td>
      </tr>
      <tr>
       <td>
        <xsl:value-of select="description" disable-output-escaping="yes" />
       </td>
      </tr>
      <tr>
       <td>
        <hr />
       </td>
      </tr>
     </xsl:for-each>
    </table>
   </xsl:for-each>
  </body>
 </html>
</xsl:template>

</xsl:stylesheet>



XSL is your friend.  Resistance is futile.  You will be assimilated.

:)

Pat
--
Patrick Timmins
ptimmins@cox.net



Dan Linder wrote:
2010/2/1 Sterling Hanenkamp <sterling@hanenkamp.com>:
I hope you'll forgive me, but I'm going to be annoying and not answer your
question in the way that you asked. I dislike XSLT, so I'd use:
XML::RSS
XML::Twig
Or something else on CPAN

Completely understood - my only reason for using it is because
"bashpodder" used it in it's main script and I had a small bit of
sample XSL code to look at. :-)

I'm always up for trying to solve a problem with a new tool, and in
this case you're probably right that Perl and/or a CPAN module might
be the best solution.  I'll look into these.

I used to do XSLT, particularly when I was mostly stuck working with Java.
Then, (after cutting off my Java) I realized that if I wanted a
Turing-complete template language, I already have Perl. Performance is about
the same, Perl has more features, and I don't have to use XML to write code.

This is actually my first foray into XSLT.  Any XML I've ever
generated or parsed were from my own home-grown Perl scripts that
didn't use any CPAN modules...  (Thankfully I could control the format
of the data I was reading so nesting and other text formatting didn't
affect these tests..)

Thanks,

Dan