Re: [xsl] White space treatment issue

Subject: Re: [xsl] White space treatment issue
From: Karl Stubsjoen <kstubs@xxxxxxxxx>
Date: Tue, 18 Jan 2011 01:23:12 -0700
Thanks for the pointers.  I have created a sample xml and xslt so you
can run yourself.  I get 2 different results on the lines in the
stylesheet with <fo:inline>testing</fo:inline>
<fo:inline>testing</fo:inline>
<fo:inline>testing</fo:inline>
<fo:inline>testing</fo:inline>

In a block with linefeed-treatment set to "preserve".

Saxon collapses the lines following each <fo:inline> so that you end up with:
testingtestingtestingtestingtesting

MvpXslTransform preserves the lines so you get:
testing
testing
testing
testing
testing

I kinda think, but I don't know the standards to a high degree that
the latter would be the expected result, but that is for you all to
chime in on!  Anyhow, here is the xml and the xslt.

Thanks for looking at this.  And by the way the goal is still:  using
MvpXslTranform achieve the same results as Saxon (right or wrong).

<root>
    <client>
        <name>Bob</name>
        <address>
            <line1>222 Poplar</line1>
            <line2>Apt #92</line2>
            <line3>Dreamy Draw, AZ 85028</line3>
        </address>
    </client>
</root>


<xsl:template match="/">
    <fo:root>
        <fo:layout-master-set>
            <fo:simple-page-master master-name="master">
                <fo:region-body></fo:region-body>
            </fo:simple-page-master>
        </fo:layout-master-set>
        <fo:page-sequence master-reference="master">
                <fo:flow flow-name="xsl-region-body">
                    <fo:block-container position="absolute"
left=".25in" top="1in">
                        <fo:block>
                            <xsl:value-of select="root/client/name"/>
                        </fo:block>
                    </fo:block-container>
                    <fo:block-container position="absolute"
left=".35in" top="1.25in">
                        <xsl:apply-templates select="root/client/address/*"/>
                    </fo:block-container>
                    <fo:block-container position="absolute"
left="1.25in" top="1.85in">
                        <fo:block linefeed-treatment="preserve">
                            <fo:inline>testing</fo:inline>
                            <fo:inline>testing</fo:inline>
                            <fo:inline>testing</fo:inline>
                            <fo:inline>testing</fo:inline>
                        </fo:block>
                    </fo:block-container>
                </fo:flow>
        </fo:page-sequence>
    </fo:root>
</xsl:template>

<xsl:template match="address/*">
    <fo:block><xsl:value-of select="."/></fo:block>
</xsl:template>

On Mon, Jan 17, 2011 at 5:11 PM, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> On 17/01/2011 23:20, Karl Stubsjoen wrote:
>>
>> I can't figure out where/when white space is getting introduced, and
>> if it is introduced in the stylesheet or the xml document or I guess
>> maybe both.
>> I am using MvpXslTransform in a C# .NET application.
>> When I run the transformation straight with Saxon there is no issue.
>> When I run the same thing with MvpXslTransform, I get extra spaces in
>> the output.  There is linefeed-treatment set to true in the fo
>> document, but somehow extra lines are injected.
>
> First, eliminate XSL-FO from the equation. Is the XSLT output different
from
> the two processors?
>
> Unwanted whitespace in XSLT output comes from one of three places:
>
> (a) whitespace being copied from the source document
>
> (b) whitespace copied from the stylesheet
>
> (c) indentation added by the serializer
>
> First see what the extra whitespace looks like. Is it adjacent to
> non-whitespace text. If so, where does that text come from? Is it in mixed
> content elements or in element-only content? Does it include newline
> characters? Is it the entire content of an element? This information will
> often lead you to identify one of the three causes above as the most
likely.
>
> The fact that you're getting different output from different processors is
> another clue. It tends to suggest a difference in parsing or serialization
> behaviour rather than in the transformation proper.
>
> Michael Kay
> Saxonica
>
>



--
Karl Stubsjoen
MeetScoresOnline.com
(602) 845-0006

Current Thread