Re: [xsl] need xsl template for this xml and html

Subject: Re: [xsl] need xsl template for this xml and html
From: Matthieu Ricaud-Dussarget <matthieu.ricaud@xxxxxxxxx>
Date: Wed, 25 May 2011 21:04:45 +0200
Hi,

Why not matching the ref element to make the link :

<xsl:template match="item">
<li><xsl:apply-templates/></li>
</xsl:template>
<xsl:template match="ref">
<a href="country.aspx?id={@id}"><xsl:apply-templates/></a>
</xsl:template>
<xsl:template match="ref/b">
<xsl:apply-templates/>
</xsl:template>

Note that I never use <xsl:value-of> here, just <xsl:apply-templates/> which by default display the text just like <xsl:value-of> when current node is text.
One of the default XSLT template is :
<xsl:template match="text()">
<xsl:value-of select="."/>
</xsl:template>
So you don't need to write it.


Hope this helps,
Regards,
Matt.

Le 25/05/2011 17:54, Frank Brooks a icrit :
Hi,

I'm new to XSL. Currently I'm using XSLT 1.0 parsing tools.

I'm integrating content from a 3rd party, where part of the XML looks
like this (i've modified the content from the original):

<item>
<ref id="ireland">
<b>Republic of Ireland</b>
</ref>: is a country with a population of 5 million ...
</item>

The resultant HTML that I WANT will look something like this:

<li><a href="country.aspx?id=ireland">Republic of Ireland</a>: is a
country with a population of 5 million ...</li>

However, no matter what I try, the closest I can come up with is this:

<li><a href="country.aspx?id=ireland">Republic of Ireland</a>:
Republic of Ireland is a country with a population of 5 million
...</li>

(notice the double "Republic of Ireland" in there).  The question is
how do I prevent the text inside the<ref>  tags been repeated, but yet
get the value of the rest of the text outside the<ref>  tags ...

These are the templates that I am using and / or have tried:

<xsl:template match="item"><li><xsl:apply-templates select="ref"
mode="include" /><xsl:value-of select="."/></li></xsl:template>
<xsl:template match="*/ref" mode="include">
<a href="country.aspx?id={@id}"><xsl:value-of select="."/></a>
</xsl:template>
<xsl:template match="*/ref" mode="exclude"></xsl:template>
<xsl:template match="*/ref"></xsl:template>

Hope this makes sense and thank you in advance,

Frank




--
Matthieu Ricaud
IGS-CP
Service Livre numirique

Current Thread