xsl-list
[Top] [All Lists]

Re: OR statement

2003-06-03 08:43:20




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



<Prev in Thread] Current Thread [Next in Thread>