RE: [xsl] Newbie issue with apply-templates and output

Subject: RE: [xsl] Newbie issue with apply-templates and output
From: "Majirus FANSI" <jmfansi@xxxxxxxxxxx>
Date: Fri, 11 Mar 2005 17:46:36 +0100
<xsl:template match="element">
  <temp><xsl:value-of select="."/></temp>

according to this template, for every "element" node, the processor will produce and <temp> node which content is resume by ".//text()". That is "heading1" for example in your case. After this, it (the processor) will call all descendant node of "element" and then apply a defaut template to those for which there is no template defined. That's why "heading1" appears after <temp> node.
you can read "XSLT programer's reference, wrox press isbn: 1-861005-06-7" for more information about default processing.
change <xsl:apply-template/> to <xsl:apply-template select="*"/> for precluding appearance of "heading x" text node.

Hope this help

From: "A.Little" <A.Little@xxxxxxxxxx>
Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
To: xsl-list <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Subject: [xsl] Newbie issue with apply-templates and output
Date: Fri, 11 Mar 2005 16:21:36 -0000


I'm quite new to all this XSL stuff and have now got very confused with
what's happening with the output using my XSL - it's dumping out the
text from nodes even tough I've not specified in the XSL to do this. The
code (xml & xsl) is given below with the output - and I'm confused why
it's output 'heading 1' etc twice, and why 'I'm here' is being output at
all. How can I change my xsl so it only outputs the headings once, and
the extra text isn't displayed at all?

It's probably obvious to everyone else - but not to me! :-(

Any help/explanation much appreciated,
Here's the XSL:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
<xsl:output method="xml"/>

<xsl:template match="/">

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

<xsl:template match="body">


And here is the xml:

<?xml version="1.0" encoding="UTF-8"?>
	<element>heading 1</element>
	<element>heading 2</element>
		<element>heading 3</element>
		<element>heading 4</element>
		I'm here

But the output I'm getting is:

<?xml version="1.0" encoding="UTF-16"?>
	<temp>heading 1</temp>
	heading 1
	<temp>heading 2</temp>
	heading 2
	<temp>heading 3</temp>
	heading 3
	<temp>heading 4</temp>
	heading 4
	I'm here

MSN Messenger : dialoguez en temps riel avec vos amis !

Current Thread