Subject: AW: [xsl] RSS 2.0 to RSS 1.0 XSLT problem in Luminis 3.3 From: "Huditsch, Roman \(LNG-VIE\)" <Roman.Huditsch@xxxxxxxxxxxxx> Date: Wed, 12 Jul 2006 18:21:55 +0200 |
Hi Seth, You are getting transformation, because you are mixing up the XSL instructions (although the error message seems a bit odd). > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> You need to declare the namespace for the rdf prefix in your <xsl:stylesheet>, too, since you need it in nearly all of your templates. > <xsl:template match="rss"> > <rdf:RDF > xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > xmlns="http://purl.org/rss/1.0/"> > > <xsl:template match="channel"> > <channel> > <xsl:attribute name="rdf:about"><xsl:value-of > select="link"/></xsl:attribute> > <title><xsl:value-of select="title"/></title> > <description><xsl:value-of select="description"/></description> > <image><xsl:attribute name="rdf:resource"><xsl:value-of > select="image"/></xsl:attribute></image> > <items><rdf:Seq> > <xsl:for-each select="item"> > <rdf:li> > <xsl:attribute name="rdf:resource"><xsl:value-of > select="link"/></xsl:attribute> > </rdf:li> > </xsl:for-each> > </rdf:Seq></items> > <textinput><xsl:value-of select="textinput"/></textinput> > </channel> > </xsl:template> Templates can't be nested in XSLT. If you want to apply templates for other nodes in an template, use <xsl:apply-templates> instead. <xsl:template> must be a child element of <xsl:stylesheet>. > <xsl:transform match="channel/image"> > <image> > <xsl:attribute name="rdf:resource"><xsl:value-of > select="url"/></xsl:attribute> > <title><xsl:value-of select="image/title"/></title> > <url><xsl:value-of select="image/url"/></url> > <link><xsl:value-of select="image/link"/></link> > </image> > </xsl:transform> <xsl:transform> is a synonym for <xsl:stylesheet> and therefore completely wrong here. You need to change this to be an <xsl:template ...> and move it one level up in your hierarchy. You should also include an <xsl:apply-template> in your stylesheet invoking this template... > <xsl:for-each select="channel/item"> > <item> > <xsl:attribute name="rdf:about"><xsl:value-of > select="link"/></xsl:attribute> > <title><xsl:value-of select="title"/></title> > <link><xsl:value-of select="link"/></link> > <description><xsl:value-of select="description"/></description> > </item> > </xsl:for-each> I think you should better include this part somewhere in your channel template... > <xsl:transform match="channel/textinput"> > <textinput> > <xsl:attribute name="rdf:about"><xsl:value-of > select="url"/></xsl:attribute> > <title><xsl:value-of select="title"/></title> > <description><xsl:value-of select="description"/></description> > <link><xsl:value-of select="link"/></link> > </textinput> > </xsl:transform> This template needs to be under <xsl:stylesheet> as well. > </rdf:RDF> > </xsl:template> > > </xsl:stylesheet> If your source document uses a namespace, you need to take that into account, too. I didn't have an appropriate RSS 2.0 document at hand, so I can't give you more detailed information. If you could provide a simple input document, I can give you an XSLT doing the job. I hope this helps. best regards, Roman
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Outputting a complete sch, Eric Bréchemier | Thread | Re: AW: [xsl] RSS 2.0 to RSS 1.0 XS, Seth Casana |
Re: [xsl] Re: Keeping a running tot, Andrew Franz | Date | Re: AW: [xsl] RSS 2.0 to RSS 1.0 XS, Seth Casana |
Month |