Re: [xsl] 'Mail-merge' type of problem: using placeholders in text for substitution

Subject: Re: [xsl] 'Mail-merge' type of problem: using placeholders in text for substitution
From: Anton Triest <anton@xxxxxxxx>
Date: Sat, 02 Oct 2004 21:49:52 +0200
David wrote:

I suppose this problem could be akin to a 'mail-merge' type situation where
place-holders represent data that should be substituted with the text of a
document. I'm transforming to html (using Cocoon.) I need any mention of
the U.S. state name (e.g. "California") to be inserted where the
<statename/> element is. I don't know how to write the XSLT transformation
for this to work. I put below my first stab at the XSLT code, but I know
it's incomplete.


I think from an XSLT standpoint the problem relates to the fact that
<statename/> appears - potentially multiple times - within the 'text value'
(is that the right term?) of an element. Although I've solved a lot of XSLT
problems before, I don't think I've ever had to code for a situation like
this.


Hi David,

I'm afraid I don't understand what the problem is - with your XSLT, plus a global variable
or parameter name="statename" select="'California'", I get the following output:


<html>
<body>
<p>Summary of Laws for California</p>
<p>The laws in California are favorable to defendants. If you live in California then your outcome is secure.
</p>
</body>
</html>


Isn't that what you want? If not please describe your problem more clearly

Regards,
Anton



If I should be approaching this differently, please advise.

Thanks,
David

<doc>
      <body>
      <para>Summary of Laws for <statename/></para>
      <para>The laws in <statename/> are favorable to defendants.  If you
live in <statename/> then your outcome is secure.</para>
      </body>
</doc>


And XSLT of the form:


<xsl:template match="/doc">
           <html>
                 <xsl:apply-templates/>
           </html>
</xsl:template>

<xsl:template match="body">
           <body>
                 <xsl:apply-templates/>
           </body>
</xsl:template>

<xsl:template match="para">
<p><xsl:apply-templates/></p> </xsl:template>


<xsl:template match="statename">
<xsl:value-of select="$statename"/> </xsl:template>

Current Thread