xsl-list
[Top] [All Lists]

RE: generating mailto

2002-10-11 11:16:39
Hi Steve,

Here's an example:

XML:

<?xml version="1.0" encoding="UTF-8"?>
<contacts>
        <contact>
                <email>xxx(_at_)email(_dot_)com</email>
        </contact>
        <contact>
                <email>xxx(_at_)email(_dot_)com</email>
        </contact>
        <contact>
                <email>xxx(_at_)email(_dot_)com</email>
        </contact>
</contacts>

XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
        <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
        <xsl:template match="/">
                <html>
                        <body>
                                <xsl:apply-templates/>
                        </body>
                </html>
        </xsl:template>
        <xsl:template match="contacts/contact/email">
                <a>
                        <xsl:attribute name="href">mailto:<xsl:value-of 
select="."/></xsl:attribute>
                        <xsl:value-of select="."/>
                </a>
                <br/>
        </xsl:template>
</xsl:stylesheet>

Hope that helps.

cheers

Malcolm

-----Original Message-----
From: Steve Salkin [mailto:steve(_at_)salkin(_dot_)org]
Sent: Friday, October 11, 2002 12:43 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] generating mailto


Hi-

I'm just getting my feet wet in XSL and it's pretty interesting. I think
I am missing something though, because I find myself needing xsl:text
more than I think I really ought to. For example, if I have XML
<contact>
  <email>xxx(_at_)email(_dot_)com</email>
</contact>

and I want to generate a mailto URI like this:
<a href="xxx(_at_)email(_dot_)com>xxx(_at_)email(_dot_)com</a>

the only thing I can get to work well is something like

<td class="contact">
  <xsl:text disable-output-escaping="yes">
    &lt;a href= &quot;mailto:
  </xsl:text>
  <xsl:value-of select="contact/email"/>
  <xsl:text disable-output-escaping="yes">
     &quot;>
  </xsl:text>
  <xsl:value-of select="contact/email"/>
  <xsl:text disable-output-escaping="yes">
    &lt;/a>
  </xsl:text>
</td>

because the need for quotes after the "href=" confuses everything  (Then
I have to hide the '<' because it gets upset when it sees <a href= with
no quotes following). I'm sure that there's a more elegant solution than
this relatively ugly one. I did try using an <xsl:variable> but I just
get $email in the output. Any takers?

S-



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


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



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