xsl-list
[Top] [All Lists]

Re: How to create a link with the value of node-set

2005-09-15 01:57:06
Hi,

Tempore 10:43:10, die 09/15/2005 AD, hinc in 
xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com scripsit Ana Gaspar Martínez 
<annagaspar(_at_)gmail(_dot_)com>:

I wish to generate an url  from the value of one atrribute of the xml
file. I've to transform this value to parse from the .xml to .html. I
attemp that using the follow sentences:
<xsl:variable name= link>
<xsl:value-of select="concat(substring-first(var1,'.'),'.html')"/>
where var1=fichero.xml
</xsl:variable>
<a href="<xsl:value-of select="link"/> link1 </a>

Your code is indeed not well-formed nor valid.
Firstly, remember that XSLT is based on XML. Each and every XSL document must 
be well-formed XML. All attribute values must be surrounded by quotes.

Furthermore, your code has two small error in Xpath expressions 
('substring-first' must be 'substring-before' and when calling a variable, its 
name must be preceded by a dollar sign) and one major conceptual error:
You cannot possibly nest elements inside an attribute.
You can go two two ways to solve this:

#1 Use an Attribute Value Template (AVT):
        <a href="{$link}"> link1 </a>

#2 Use 'xsl:attribute':
<a>
        <xsl:attribute name="href">
                <xsl:value-of select="$link"/>
        </xsl:attribute>
        <xsl:text> link1 </xsl:text>
</a>


I guess #1 is the easiest, so on the whole, your corrected code now looks like 
this:

<xsl:variable name="var1">fichero.xml</xsl:variable>

<xsl:variable name="link">
        <xsl:value-of select="concat(substring-before($var1,'.'),'.html')"/>
</xsl:variable>

<a href="{$link}"> link1 </a>


regards,
--
Joris Gillis (http://users.telenet.be/root-jg/me.html)
Fiat W3C in tenebris

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--