No need for grouping.
No need for xsl:for-each.
Although I suspect that you don't really want your output as text (even though
that is what you show as the desired output), here is a stylesheet that
produces the output as described.
<?xml version="1.0"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*" />
<xsl:output method="text" indent="yes" encoding="UTF-8" />
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="session">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="section[subsection]">
<xsl:value-of select="title" />. Appears at beginning of section <xsl:value-of
select="title" />.
<xsl:apply-templates select="subsection" />
</xsl:template>
<xsl:template match="section[not(subsection)]">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="subsection">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="title">
<xsl:value-of select="." />.html
</xsl:template>
</xsl:stylesheet>
--
Charles Knell
cknell(_at_)onebox(_dot_)com - email
-----Original Message-----
From: Karl <call14(_at_)yahoo(_dot_)com>
Sent: Wed, 26 Jul 2006 10:42:06 +0100 (BST)
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] listing elements & sub-elements in a seqence - skiping
Thanks Charles. However, I think you overlooked a minor thing when
mentioning [I have another q at the end. Pls have a look]
---------
If you use:
<xsl:apply-templates select="//Session/Section" />
you will get the same output as:
<xsl:for-each select="//Section[not(SubSection)] |
//Section/SubSection"/>
or
<xsl:for-each select="//Session/Section" />
------
by writing "//Section[not(SubSection)] | //Section/SubSection?, What
I am trying to achieve is
- select section ONLY if there are NO ?subsection? i.e ignore
those section?s that have subsection &
- If there are subsections, then loop thro each subsection
(ignoring section element)
May be my sample xml is bad. So, I give a better example here [real
xml have many other elements & contents]. Pls ignore any spell
mistake or case mistake like section or Section.
<session>
<section>
<title>1</title>
</section>
<section>
<title>2</title>
</section>
<section>
<title>3</title>
<subsection>
<title>3.1</title>
</subsection>
<subsection>
<title>3.2</title>
</subsection>
</section>
<section>
<title>4</title>
</section>
<section>
<title>5</title>
<subsection>
<title>5.1</title>
</subsection>
<subsection>
<title>5.2</title>
</subsection>
</section>
</session>
Assuming my intention is use <title>,What I intend to generate is
1.html
2.html
3.1.html [pls note section 3.html is not generated because of
//Section[not(SubSection)] ]
3.2.html
4.html
5.1 html [again 5.html will not be generated]
5.2.html
Having mentioned this, I wish to ask another Q ? I think this I can
get only using xsl grouping / xsl:key but understand xslt 2 has
better option
If I need to display an html output like
1.title [section title] ? will actually be linked to 1.html
2.title
3.title [ie section title appears only once before the start of 1st
subsection title & no links as 3.html is not exist]
3.1 title [subsection title] ? will be linked to 3.1.html
3.2 title [subsection title]
4.title
5.title [section title]
5.1 title [subsection title]
5.2 title [subsection title]
And so on?
Thanks,
karl
___________________________________________________________
All new Yahoo! Mail "The new Interface is stunning in its simplicity and ease
of use." - PC Magazine
http://uk.docs.yahoo.com/nowyoucan.html
--~------------------------------------------------------------------
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>
--~--
--~------------------------------------------------------------------
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>
--~--