[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: handling of xsl-Variable in formatting text

Subject: Re: handling of xsl-Variable in formatting text
From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 15 Apr 2016 12:42:37 -0000
Re:  handling of xsl-Variable in formatting text
It would help to give a complete executable stylesheet (preferably with
irrelevant detail removed) and a source document, plus expected output, so
people can run it for themselves and debug it for you. As it is, we can only
stare at the code - you haven't even told us what the failure symptoms are
("it doesn't work" isn't very helpful...)

One thing I would suggest it to cut out the whitespace in the variable value,
which at best is unnecessary and at worst could cause downstream processing to
produce the wrong results:

>           <xsl:choose>
>                <xsl:when test="@pnr != '7000'">normal</xsl:when>
>                <xsl:otherwise>bold</xsl:otherwise>
>            </xsl:choose>


Not being able to see a source document, I don't know if it's relevant, but
you should be aware of the exact meaning of "@pnr != '7000'" - it means "if
the pnr attribute exists and has a value other than '7000'. Writing "not(@pnr
= '7000')" has a different meaning when the attribute is absent.

Michael Kay
Saxonica

> On 15 Apr 2016, at 12:45, Dirk Naujoks naujoks@xxxxxxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> Good day,
>
> i am a little mixed up how to use a once set xsl-variable.
> I tried the following code
>
>
> Start Code~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>  <xsl:template name="pruefung">
>        <xsl:variable name="outline">
>            <xsl:choose>
>                <xsl:when test="@pnr != '7000'">
>                    normal
>                </xsl:when>
>                <xsl:otherwise>
>                    bold
>                </xsl:otherwise>
>            </xsl:choose>
>        </xsl:variable>
>        <fo:table-row keep-with-next.within-column="always"
>            padding-bottom="1pt" padding-top="1.0pt">
>            <fo:table-cell number-columns-spanned="6"
>                padding-before="0pt">
>                <fo:block space-before="0pt">
>                    <fo:leader leader-pattern="rule" rule-thickness="0.5pt"
>                        leader-length="17cm" color="white" />
>                </fo:block>
>            </fo:table-cell>
>        </fo:table-row>
>        <fo:table-row keep-together.within-column="always"
>            padding-bottom="1pt" padding-top="1pt" line-height="10pt">
>            <fo:table-cell padding-right="3pt">
>                <fo:block span="none" font-family="OfficinaSansLT"
>                    font-size="{$schrifta}" font-weight="{$outline}"
text-align="start">
>                    <xsl:value-of disable-output-escaping="no" select="@pnr"
/>#
>                    <xsl:value-of disable-output-escaping="no" select="@psem"
/>
>                    <xsl:value-of disable-output-escaping="no"
select="$outline" />
>                </fo:block>
>            </fo:table-cell>
>            <fo:table-cell padding-right="5pt">
>                <fo:block span="none" font-family="OfficinaSansLT"
>                    font-size="{$schrifta}" text-align="start">
>                    <xsl:choose>
>                        <xsl:when test="@pnr != '7000'">
>                            <xsl:value-of disable-output-escaping="no"
select="@deTxt" />
>                        </xsl:when>
>                        <xsl:otherwise>
>                            Note der fachpraktischen PrC<fung
>                        </xsl:otherwise>
>                    </xsl:choose>
>                </fo:block>
>            </fo:table-cell>
>            <fo:table-cell padding-right="5pt">
>                <fo:block span="none" font-family="OfficinaSansLT"
>                    font-size="{$schrifta}" text-align="start"
font-weight="">
>                    <xsl:if test="@pstatus = 'AN'">
>                        <xsl:value-of disable-output-escaping="no"
select="@pstatus" />
>                    </xsl:if>
>                    <xsl:if test="@pstatus = 'EN'">
>                        <xsl:value-of disable-output-escaping="no"
select="@pstatus" />
>                    </xsl:if>
>                </fo:block>
>            </fo:table-cell>
>            <fo:table-cell padding-right="3pt">
>                <fo:block span="none" font-family="OfficinaSansLT"
>                    font-size="{$schrifta}" text-align="center"
font-weight="">
>                    <xsl:if test="@pnote != '' and @pnote != ' '">
>                        <xsl:if test="@panerk = 'J'">
>                            <xsl:variable name="anerk">
>                                *
>                            </xsl:variable>
>                            <xsl:value-of
> select="concat(substring(@pnote,1,1),',',substring(@pnote,2,1),' ',$anerk)"
/>
>                        </xsl:if>
>                        <xsl:if test="not(@panerk)">
>                            <xsl:value-of
> select="concat(substring(@pnote,1,1),',',substring(@pnote,2,1))" />
>                        </xsl:if>
>                        <xsl:if test="@panerk = 'N'">
>                            <xsl:value-of
> select="concat(substring(@pnote,1,1),',',substring(@pnote,2,1))" />
>                        </xsl:if>
>                    </xsl:if>
>                </fo:block>
>            </fo:table-cell>
>            <fo:table-cell padding-right="5pt">
>                <fo:block span="none" font-family="OfficinaSansLT"
>                    font-size="{$schrifta}" text-align="start"
font-weight="">
>                    <xsl:if test="@panerk = 'J'"></xsl:if>
>                </fo:block>
>            </fo:table-cell>
>        </fo:table-row>
>        <xsl:for-each select="veranst">
>            <xsl:call-template name="veranst" />
>        </xsl:for-each>
>    </xsl:template>
> End Code~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> The variable "schrifta" works fine it is set at the beginning of the
xsl-Document.
> The variable "outline" doesn't work it is set. i can confirm it by using
"<xsl:value-of disable-output-escaping="no" select="$outline" />" somewhere in
the code e.g. after the select of psem at the beginning of this code-sniplet.
>
> I can't format the text for the data with the pnr=7000 in the right way. Has
anybody an idea how to fix it?
>
> Thanks for your help in advance.

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.