I could not try ur solution
This is the error/msgbox I got
---------------------------
XML Spy
---------------------------
XSL transformation failed due to following error:
Namespace 'http://exslt.org/common' does not contain
any functions.
---------------------------
OK
---------------------------
--- Dimitre Novatchev <dnovatchev(_at_)yahoo(_dot_)com> wrote:
Problem: print a list of students, grouping the
students by their
language and printing a blank line between each
group. Number the blank
lines in addition to the lines with students'
names.
So calling position() to get the number is
insufficient, because
position() doesn't count the blank lines.
Mukul was commenting that this problem would be
easier to solve if XSLT
supported something like variables. For example:
This is not a difficult problem and it doesn't
deserve all this long thread.
Here's a simple two-pass solution:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ext="http://exslt.org/common"
>
<xsl:output method="html" indent="yes"/>
<xsl:key name="kStudent" match="student"
use="@nl"/>
<xsl:template match="/">
<html>
<table>
<xsl:variable name="vrtfGrouped">
<xsl:for-each
select="/*/student[generate-id()
=
generate-id(key('kStudent',
@nl
)[1]
)
]">
<xsl:copy-of select="key('kStudent', @nl)"/>
<xsl:if test="not(position() = last())">
<blank/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="vGrouped"
select="ext:node-set($vrtfGrouped)/*"/>
<xsl:for-each select="$vGrouped">
<tr>
<td>
<xsl:value-of select="position()"/>
</td>
<td>
<xsl:value-of select="concat(@name, ' ')"/>
</td>
</tr>
</xsl:for-each>
</table>
</html>
</xsl:template>
</xsl:stylesheet>
When this transformation is applied e.g. on the
following source.xml:
<t>
<student name="x" nl="English"/>
<student name="y" nl="German"/>
<student name="z" nl="English"/>
<student name="t" nl="French"/>
<student name="u" nl="English"/>
</t>
the wanted result is produced:
<html>
<table>
<tr>
<td>1</td>
<td>x </td>
</tr>
<tr>
<td>2</td>
<td>z </td>
</tr>
<tr>
<td>3</td>
<td>u </td>
</tr>
<tr>
<td>4</td>
<td> </td>
</tr>
<tr>
<td>5</td>
<td>y </td>
</tr>
<tr>
<td>6</td>
<td> </td>
</tr>
<tr>
<td>7</td>
<td>t </td>
</tr>
</table>
</html>
So what is the problem?
=====
Cheers,
Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site
design software
http://sitebuilder.yahoo.com
XSL-List info and archive:
http://www.mulberrytech.com/xsl/xsl-list
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list