RE: [xsl] can't conditionally format first occurence of a node

Subject: RE: [xsl] can't conditionally format first occurence of a node
From: jeremy <jeremy_march@xxxxxxxxxxx>
Date: Sat, 25 Jun 2005 20:12:18 -0400
Thanks for your reply.  Here's an input sample and two stylesheets which
don't quite work.

Sample xml:
<?xml version="1.0" encoding="utf-8"?>
<TEI.2>
<text>
<body>
<entryFree>
<otherstuff1>stuff1</otherstuff1>
<otherstuff2>stuff2</otherstuff2>
<otherstuff3>stuff3</otherstuff3>
<sense n="1">blah1</sense>
<sense n="2">blah2</sense>
<sense n="3">blah3</sense>
</entryFree>
</body>
</text>
</TEI.2>


This stylesheet puts the <br />'s in the wrong place (not before the
first <sense>.

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:template match="sense">
<xsl:if test="position()=1">
<br /><br /><br />
</xsl:if>
<br /><div><b><xsl:value-of select="@n"/></b>.
<xsl:apply-templates /></div>
</xsl:template>
</xsl:stylesheet>

This stylsheet puts the <br />'s in the right place but doesn't include
the "otherstuff" content.

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:template match="entryFree">
<xsl:apply-templates select="orth" />
<xsl:for-each select="sense">
<xsl:if test="position()=1">
<br /><br /><br />
</xsl:if>
<br /><div><b><xsl:value-of select="@n"/></b>.
<xsl:apply-templates /></div>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>


On Sun, 2005-06-26 at 02:57 +0000, Aron Bock wrote:
> Jeremy,
> 
> You had the right idea with position() -- the first <sense> in the doc would 
> be position() = 1.  If you mean something else, please post a small input 
> sample.
> 
> >
> ><xsl:variable name="first" select="1" />
> ><xsl:template match="sense">
> ><xsl:if test"$first=1">
> ><br />
> ><xsl:variable name="first" select="0" />
> ></xsl:if>
> ><div><xsl:apply-templates /></div>
> ></template>
> >
> 
> This doesn't work in XSL -- variables can't change their value once set.  
> They're "variables" in the sense of mathematical variables which have a 
> specific, non-changing value throughout a computation, rather being 
> variables in the sense of imperative laguage variables that can have a 
> different value at different points of a computation.
> 
> --A
> 
> _________________________________________________________________
> Dont just search. Find. Check out the new MSN Search! 
> http://search.msn.click-url.com/go/onm00200636ave/direct/01/

Current Thread