Re: incrementing variable
Phil Dickinson wrote: John is right about not being able to change variables and I think that in order to achieve the effect you want, you should consider using some Java code inside your XSL. Well, extensions are especially good as last resort, but incrementing variables in a side effect free langauge like xslt sounds very ugly. I wouldn't suggest people to go this way, but instead to stop thinking procedurally and to start using real power of xslt. -- Oleg Tkachenko eXperanto team Multiconn Technologies, Israel
Re: incrementing variable
As my xml file is before traited by a java program in odrer generate other tag. This one will completely generate tag for creating barrecode so before : xml file : barrcecode012341223/barrcode but impossible to realise the svg barrce code after : xml fil after transformation by java programm barrecode number1123412134121134211231412134242411/numbersvg height="50pt" width="400pt"/rec width="1.5" x="4.0"/rec width="1.5" x="7.0"/rec width="1.5" x="10.0"/rec width="1.5" x="14.5"/rec width="1.5" x="100"/ ... /barrcode xsl file : fo:instream-foreign-objectxsl:variable name="w" select="codebarre/svg/@width"/xsl:variable name="h" select="codebarre/svg/@height"/ svg xmlns="http://www.w3.org/2000/svg" width="{$w}" height="{$h}" x="0"g id="codebarre" fill="#00"xsl:for-each select="codebarre/rec"xsl:variable name="w" select="@width"/xsl:variable name="x" select="@x"/rect x="{$x}" width="{$w}" height="50"//xsl:for-each/g/svg/fo:instream-foreign-object Xavier GibouinAxonieEspace Mercoeur8, rue Mercoeur44000 Nantes02.40.48.53.23[EMAIL PROTECTED] - Original Message - From: Oleg Tkachenko To: [EMAIL PROTECTED] Sent: Wednesday, November 06, 2002 1:45 PM Subject: Re: incrementing variable Phil Dickinson wrote: John is right about not being able to change variables and I think that in order to achieve the effect you want, you should consider using some Java code inside your XSL.Well, extensions are especially good as last resort, but incrementing variables in a side effect free langauge like xslt sounds very ugly. I wouldn't suggest people to go this way, but instead to stop thinking procedurally and to start using real power of xslt.-- Oleg TkachenkoeXperanto teamMulticonn Technologies, Israel
Re: incrementing variable
xavier gibouin wrote: As my xml file is before traited by a java program in odrer generate other tag. This one will completely generate tag for creating barrecode so If you want to generate SVG barcodes, why don't you use the barcode XSL form RenderX? http://www.renderx.com/barcodes.html J.Pietschmann
Re: incrementing variable
hi this is my xsl code : xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/Graphics/SVG/SVG-19990812.dtd"xsl:variable name="x" select="10"/xsl:template name="codebarre"xsl:variable name="index" select="string-length(codebarre)"/xsl:param name="i" select="0"/ xsl:if test="$i lt; $index"xsl:choosexsl:when test="substring(codebarre,$i+1,1)='1'"fo:blockxsl:value-of select="$x"//fo:blockxsl:variable name="x" select="$x + 4"//xsl:whenxsl:when test="substring(codebarre,$i+1,1)='2'"fo:blockxsl:value-of select="$x"//fo:blockxsl:variable name="x" select="$x + 1.5"//xsl:whenxsl:when test="substring(codebarre,$i+1,1)='3'"fo:blockxsl:value-of select="$x"//fo:blockxsl:variable name="x" select="$x + 3"//xsl:whenxsl:when test="substring(codebarre,$i+1,1)='4'"fo:blockxsl:value-of select="$x"//fo:blockxsl:variable name="x" select="$x + 1.5"//xsl:when/xsl:choose xsl:call-template name="codebarre"xsl:with-param name="i" select="$i+1"//xsl:call-template /xsl:if/xsl:template/xsl:stylesheet this code always writes 10 10 10 10 10 ... $x is not incremented any ideas? thanks a lot Xavier GibouinAxonieEspace Mercoeur8, rue Mercoeur44000 Nantes02.40.48.53.23[EMAIL PROTECTED] - Original Message - From: Paul Washinger To: [EMAIL PROTECTED] Sent: Tuesday, November 05, 2002 5:52 PM Subject: Re: variable and svg put braces around the variable when it is outside an xsl tag: rect height="50" width="4.0" x="{$x}" y="0.0"/
RE: incrementing variable
Xavier, Each time you use the syntax xsl:variable name="x".../ you are declaring a new local variable, not modifying the existing one! Since your output text occursbefore the new declaration, the global value is output displayed and this is always ten. Try moving the fo:block section to after the declaration of the new variable. Phil Dickinson Aicom Limited -Original Message-From: xavier gibouin [mailto:[EMAIL PROTECTED]Sent: 05 November 2002 17:59To: [EMAIL PROTECTED]Subject: Re: incrementing variable hi this is my xsl code : xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/Graphics/SVG/SVG-19990812.dtd"xsl:variable name="x" select="10"/xsl:template name="codebarre"xsl:variable name="index" select="string-length(codebarre)"/xsl:param name="i" select="0"/ xsl:if test="$i lt; $index"xsl:choosexsl:when test="substring(codebarre,$i+1,1)='1'"fo:blockxsl:value-of select="$x"//fo:blockxsl:variable name="x" select="$x + 4"//xsl:whenxsl:when test="substring(codebarre,$i+1,1)='2'"fo:blockxsl:value-of select="$x"//fo:blockxsl:variable name="x" select="$x + 1.5"//xsl:whenxsl:when test="substring(codebarre,$i+1,1)='3'"fo:blockxsl:value-of select="$x"//fo:blockxsl:variable name="x" select="$x + 3"//xsl:whenxsl:when test="substring(codebarre,$i+1,1)='4'"fo:blockxsl:value-of select="$x"//fo:blockxsl:variable name="x" select="$x + 1.5"//xsl:when/xsl:choose xsl:call-template name="codebarre"xsl:with-param name="i" select="$i+1"//xsl:call-template /xsl:if/xsl:template/xsl:stylesheet this code always writes 10 10 10 10 10 ... $x is not incremented any ideas? thanks a lot Xavier GibouinAxonieEspace Mercoeur8, rue Mercoeur44000 Nantes02.40.48.53.23[EMAIL PROTECTED] - Original Message - From: Paul Washinger To: [EMAIL PROTECTED] Sent: Tuesday, November 05, 2002 5:52 PM Subject: Re: variable and svg put braces around the variable when it is outside an xsl tag: rect height="50" width="4.0" x="{$x}" y="0.0"/