RE: [xsl] Probelm with xsl:value-of in CSV to XML transform

Subject: RE: [xsl] Probelm with xsl:value-of in CSV to XML transform
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 4 Apr 2008 11:06:12 +0800
Thanks. The main things that come to mind are:

(a) No comments in the code (see parallel thread)!

(b) <xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>

You really don't want to be doing that. I think David explained why.

(c) <xsl:for-each select="node()">
            <xsl:choose>
              <xsl:when test="name()='daytime'">
                

You are hand-coding an apply-templates here. Put the contents of each
xsl:when branch into a template rule

<xsl:template match="daytime">

and replace the xsl:for-each with xsl:apply-templates.

If you must test the current element name in an xsl:when, don't use
test="name()='x'", use test="self::x".

(d) <xsl:element name="daytime">

Write a literal result element <daytime>

(e) <xsl:when test="text()='yes'">

Don't test the contents of a text node, test the string value of the
containing element:

<xsl:when test=".='yes'">

It doesn't really make a difference here because you generated the XML and
you know there are no comments or processing instructions; but it's a bad
habit to get into because one day an XML instance will arrive containing
comments and your code will fail.

Michael Kay
http://www.saxonica.com/

Current Thread