xsl-list
[Top] [All Lists]

RE: OR statement

2003-06-03 08:58:09
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)">

There are a few problems with this...

1) The "or" operator is meant to connect two boolean expressions,
   so instead of
      name() = pubdate or dc:date
   you want
      name() = pubdate or name() = dc:date

2) pubdate needs to be quoted; otherwise it is interpreted as
   "the string value of the child element of . whose name is 'pubdate'"
   so you want
      name() = 'pubdate' or name() = 'dc:date'
   or
      self::pubdate or self::dc:date

   The latter form has the benefit of doing proper namespace checking.
   (Assuming you've declared the dc namespace in your stylesheet.)

Anyone know how I can easily check if it's the <dc:date> or 
the <pubdate>
and tranform it to a <pubdate> if it's the <dc:date> (while inside a
<xsl:for-each>)?

You were on the right track...

<xsl:if test="self::pubdate or self::dc:date">
  <xsl:element name="pubdate">
    <xsl:value-of select="." />
  </xsl:element>
</xsl:if>

Lars


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



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