RE: OR statement
> 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
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format