Re: [xsl] newbie Q: how to format xml: <p>normal <b>bold</b> normal </p> :: to xhtml: <p>normal <b>bold</b> normal </p>

Subject: Re: [xsl] newbie Q: how to format xml: <p>normal <b>bold</b> normal </p> :: to xhtml: <p>normal <b>bold</b> normal </p>
From: David Carlisle <davidc@xxxxxxxxx>
Date: Wed, 8 Sep 2004 16:34:34 +0100
You are making this __much__ more complicated than it need be:

<xsl:for-each select="mbody/p">
this says for each p child or mbody

  <xsl:apply-templates select = "//p" /> 

apply templates to every p element anywhere in the document
(not just in this mbody)

then after that apply templates
  <xsl:apply-templates select = "//b"/>

to every b element anywhere in the document.

when you do get to a p you do:

<xsl:template match = "p" >
	<xsl:value-of select = "." />
</xsl:template> 

which says do not apply templates to the children of p (such as that b
element) instead just make a string of all the character data, ignoring
any element nodes (which is what value-of is defined to do).

all you need is:

<xsl:template match = "/" >
<html>
<body>
  <xsl:apply-templates select ="article/body/module/p"/>
</body>
</html>
</xsl:template>

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

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



________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

Current Thread