Re: [xsl] OR statement

Subject: Re: [xsl] OR statement
From: david_n_bertoni@xxxxxxxxxx
Date: Tue, 3 Jun 2003 08:43:20 -0700



> I'm transforming two (or more) RSS docs into one master xml that I'll be
> using to display on our portal. I'm running into an issue where one of
the
> rss docs uses a date element called <dc:date> and another uses <pubdate>.
> I'd like to transform them so that the final xml document uses only
> <pubdate>.
>
> I've tried a couple of approaches:
> <xsl:if test="(name() = pubdate or dc:date)">
>     <xsl:variable name="cdate" select="name()"/>
>     <xsl:element name="pubdate">
>       <xsl:value-of select="$cdate"/>
>    </xsl:element>
> </xsl:if>
>

This XPath expression is probably what you wanted:

<xsl:if test="name() = 'pubdate' or name() = 'dc:date'">

Note the string literals for the names of the nodes.  Otherwise, they are
considered location paths.

> And
>
> <xsl:choose>
>     <xsl:when test="name() = pubdate">
>         <xsl:element name="pubdate">
>             <xsl:value-of select="node()"/>
>         </xsl:element>
>     </xsl:when>
>     <xsl:when test="name() = dc:date">
>         <xsl:element name="pubdate">
>             <xsl:value-of select="node()"/>
>         </xsl:element>
>     </xsl:when>
>     <xsl:otherwise></xsl:otherwise>
> </xsl:choose>

Again, note the string literals:

<xsl:when test="name() = 'pubdate'">

>
> And I'm not getting the desired results.

You might try this:

<xsl:template match="pubdate | dc:date">
  <pubdate>
    <xsl:value-of select="."/>
  </pubdate>
</xsl:template>

Without seeing more of your stylesheet, it's pretty hard to guess at the
processing model, but I'm assuming the code snippets you posted were inside
an xsl:template instruction.

Dave


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread