This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: for-each question
- From: "Vasu Chakkera" <vasucv at hotmail dot com>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Tue, 13 Aug 2002 07:57:30 +0000
- Subject: Re: [xsl] for-each question
- Reply-to: xsl-list at lists dot mulberrytech dot com
The problem is your template matches each book element.
this is equivalent to a pseudo code
for each book {
The books are:
Book-Name
}
which will produce "The Books are" Thrice( in your case). You have to take
the "The books are" out of the loop.
the following for-loop would help you
( this xsl produces a HTML result )
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" method="html"/>
<xsl:template match="test">
The Books are:<hr/>
<xsl:for-each select="book">
<xsl:value-of select="."/><br/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
This would give a result
The Books are:
______________
ABC123
ABC456
ABC789
Hope this helps
Vasu
From: Holmberg Rick-ra0119 <Rick.Holmberg@motorola.com>
Reply-To: xsl-list@lists.mulberrytech.com
To: xsl-list@lists.mulberrytech.com
Subject: [xsl] for-each question
Date: Mon, 12 Aug 2002 16:56:44 -0700
I am new to Xsl and am trying to parse a xml document into a html doc. I
would like to have a heading above several elements but don't want that
heading to show up above each element. I am sure this is simple but I
can't seem to quite get it. Here is what I have.
If my xml file looks like this
<?xml version="1.0" encoding="UTF-8"?>
<test>
<id>TestId</id>
<book>ABC123</book>
<book>ABC456</book>
<book>ABC789</book>
</test>
I would like the html to read
The Books are:
ABC123
ABC456
ABC789
My Stylesheet segment is:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:output method="html"/>
<xsl:template match="/">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="book">
<I>
The Books are:
<xsl:apply-templates select="book" />
<xsl:apply-templates/>
</I>
</xsl:template>
With this XSL file I am getting the 'The Books are:' printed 3 times. I
only need it once. I figure I have to use a for-each but I can't seem to
get that to work correctly. Can anyone help here?
Thanks,
Rick
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
_________________________________________________________________
Chat with friends online, try MSN Messenger: http://messenger.msn.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list