xsl-list
[Top] [All Lists]

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

2011-05-25 14:05:05
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 écrit :
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

--~------------------------------------------------------------------
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>
--~--




--
Matthieu Ricaud
IGS-CP
Service Livre numérique


--~------------------------------------------------------------------
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>
--~--

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