RE: [xsl] xsl formating string

Subject: RE: [xsl] xsl formating string
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 5 Apr 2005 22:02:02 +0100
Your problem is:

<xsl:when test="../format_control='C1'"/>
                                       ^
                                       |

that the xsl:when is an empty element. The fo:block is therefore a direct
child of xsl:choose, which is not allowed.

Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: josh higgins [mailto:doopsterus@xxxxxxxxx] 
> Sent: 05 April 2005 20:49
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] xsl formating string
> 
> am I not allowed to have fo blocks inside the when
> blocks b/c it always yells at me and tells me that I
> am not allowed to have a fo block in that section of
> the code.
> 
> 
> --- JBryant@xxxxxxxxx wrote:
> 
> > <span> is an HTML element. I didn't realize you were
> > writing FO. 
> > <fo:inline> is the FO equivalent of <span>, more or
> > less. In your case, 
> > you can put the styling information on the blocks,
> > as you have done.
> > 
> > To get this to work, you need to use a relative path
> > identifier rather 
> > than the absolute path from the root. So, you need:
> > 
> > <xsl:template name="detail">
> >   <xsl:for-each select="/invoice/detail/row">
> >     <fo:block font-size="8pt" >
> >       <xsl:apply-templates
> > select="transaction_detail"/>
> >       <xsl:value-of select="amount"/>
> >     </fo:block>
> >   </xsl:for-each> 
> > </xsl:template>
> > 
> > <xsl:template match="transaction_detail">
> >   <xsl:choose>
> >     <xsl:when test="../format_control='C1'"/>
> >       <fo:block color="blue">
> >         <xsl:value-of select="."/>
> >       </fo:block>
> >     </xsl:when>
> >     <xsl:when test="../format_control='U1'"/>
> >       <fo:block font-style="underline">
> >         <xsl:value-of select="."/>
> >       </fo:block>
> >     </xsl:when>
> >   </xsl:choose>
> > </xsl:template>
> > 
> > You also had </xsl:choose> in place of the last
> > </xsl:when>. Your XML 
> > parser should have complained about that.
> > 
> > Jay Bryant
> > Bryant Communication Services
> > (presently consulting at Synergistic Solution
> > Technologies)
> > 
> > 
> > 
> > 
> > josh higgins <doopsterus@xxxxxxxxx> 
> > 04/05/2005 02:12 PM
> > Please respond to
> > xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > 
> > 
> > To
> > xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > cc
> > 
> > Subject
> > Re: [xsl] xsl formating string
> > 
> > 
> > 
> > 
> > 
> > 
> > Ok, I have come up with the following code but it
> > does
> > not like it.  Does not like the fo:block in the
> > choose.  I tried to add the <span> </span> block but
> > it didn't like that either.  Said it was no allowed
> > there.  Ideas?
> > 
> > 
> > 
> > <xsl:template name="detail">
> >                  <xsl:for-each
> > select="/invoice/detail/row">
> >                                  <fo:block
> > font-size="8pt" >
> >                                                 
> > <xsl:apply-templates 
> > select="transaction_detail"/>
> > <xsl:value-of select="amount"/>
> >                                  </fo:block>
> >                  </xsl:for-each> 
> > </xsl:template>
> > 
> > <xsl:template match="transaction_detail">
> >                  <xsl:choose>
> >                                  <xsl:when
> > test="/invoice/detail/row/format_control='C1'"/>
> >                                                 
> > <fo:block color="blue">
> >  <xsl:value-of select="."/>
> >                                                 
> > </fo:block>
> >                                  </xsl:when>
> >                                  <xsl:when
> > test="/invoice/detail/row/format_control='U1'"/>
> >                                                 
> > <fo:block 
> > font-style="underline">
> >  <xsl:value-of select="."/>
> >                                                 
> > </fo:block>
> >                                  </xsl:choose>
> >                  </xsl:choose>
> > </xsl:template>
> > 
> > 
> > 
> > --- JBryant@xxxxxxxxx wrote:
> > 
> > > Ah, so. In that case:
> > > 
> > > <xsl:template match="transaction_detail">
> > >   <xsl:choose>
> > >     <xsl:when test="../format_control='C1'">
> > >       <!-- Apply the C1 format -->
> > >     </xsl:when>
> > >     <xsl:when test="../format_control='.0'">
> > >       <!-- Apply the .0 format -->
> > >     </xsl:when>
> > >     <!-- and so on -->
> > >   </xsl:choose>
> > > </xsl:template>
> > > 
> > > Jay Bryant
> > > Bryant Communication Services
> > > (presently consulting at Synergistic Solution
> > > Technologies)
> > > 
> > > 
> > > 
> > > 
> > > josh higgins <doopsterus@xxxxxxxxx> 
> > > 04/05/2005 01:44 PM
> > > Please respond to
> > > xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > > 
> > > 
> > > To
> > > xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > > cc
> > > 
> > > Subject
> > > Re: [xsl] xsl formating string
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > Sorry my xml is not like that... Here is a sample
> > of
> > > my xml
> > > 
> > > <row>
> > >  <line_sequence>3</line_sequence>
> > > 
> > > <transaction_detail> 
> > > Transaction
> > > Activity</transaction_detail>
> > >  <format_control>C1</format_control>
> > > 
> > > <group_no>1</group_no>
> > >                                  </row>
> > > 
> > > format_control determines the format of
> > > transaction_detail
> > > 
> > > 
> > > --- JBryant@xxxxxxxxx wrote:
> > > > Hi, Josh,
> > > > 
> > > > For the sake of this dicussion, I assume that
> > the
> > > > strings are contained in 
> > > > elements and that the elements have format
> > > > attributes, thus:
> > > > <someElement format="C1">Some
> > String</someElement>
> > > > 
> > > > In that case, you can do this:
> > > > <xsl:template match="someElement">
> > > >   <xsl:choose>
> > > >     <xsl:when test="@format='C1'">
> > > >       <span style="color:#0000FF"><xsl:value-of
> > > > select="."/></span>
> > > >     </xsl:when>
> > > >     <xsl:when test="@format='.0'">
> > > >       <xsl:value-of select="concat(., '.0')"/>
> > > >     </xsl:when>
> > > >     <xsl:when test="somethingElse">
> > > >       And so on...
> > > >     </xsl:when>
> > > >     <xsl:otherwise>
> > > >       <xsl:message>Ruh Roh! No
> > > format!</xsl:message>
> > > >     </xsl:otherwise>
> > 
> === message truncated ===
> 
> 
> 
> 		
> __________________________________ 
> Do you Yahoo!? 
> Yahoo! Personals - Better first dates. More second dates. 
> http://personals.yahoo.com

Current Thread