xsl-list
[Top] [All Lists]

RE: Newbie issue with apply-templates and output

2005-03-11 09:46:36

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

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
regards

From: "A.Little" <A(_dot_)Little(_at_)open(_dot_)ac(_dot_)uk>
Reply-To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
To: xsl-list <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Subject: [xsl] Newbie issue with apply-templates and output
Date: Fri, 11 Mar 2005 16:21:36 -0000

Hi,

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,
Alex
 --------------------
Here's the XSL:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:output method="xml"/>

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

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

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

</xsl:stylesheet>

And here is the xml:

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

But the output I'm getting is:

<?xml version="1.0" encoding="UTF-16"?>
<report>
        <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
</report>

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


_________________________________________________________________
MSN Messenger : dialoguez en temps réel avec vos amis ! http://g.msn.fr/FR1001/866


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