Subject: RE: Elements within "as-is" environment misaligning
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 11 Dec 2007 21:12:37 -0000
|
Are you sure you have set indent="no" in xsl:output? That's the only obvious
thing I can think of. Last time I helped a user with a whitespace problem I
eventually got them to show me the whole stylesheet and it turned out it
said xml:space="preserve" somewhere within it. That's just to illustrate
that it's quite hard to diagnose these problems when you can only see a
snippet.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Cindy Hunt [mailto:Cindy.Hunt@xxxxxxx]
> Sent: 11 December 2007 20:09
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Elements within "as-is" environment misaligning
>
> Hi-
>
> I am experiencing problems when transforming sections of
> "as-is" code. I have an element which contains a sample of
> programming code within it.
> Within the code sample I have some additional elements I call
> <codeFocus> which will highlight that part of the code when
> it is formatted. During the XSL-FO transform, the alignment
> around these <codeFocus> elements gets messed up. The first
> one seems fine but then the 2nd one has an extra blank line
> that appears before it starts and the start tag is shifted
> over to the right (so it is no longer "as-is").
>
> I am using a Saxon parser and version 1.0. I use Antenna
> House for the FO formatting but the problem occurs before the
> doc is formatted.
>
> My XML input:
> <code>Dim obConnection As New ADODB.Connection
> Dim obRecordset As New ADODB.Recordset
>
> <codeFocus>obConnection.Provider = "SAS.IOMProvider.1"</codeFocus>
> <codeFocus>obConnection.Properties("Prompt") =
> adPromptAlways</codeFocus>
> obConnection.Open
>
> obRecordset.Open "sasuser.MyData", obConnection,
> adOpenDynamic, adLockOptimistic, adCmdTableDirect
> ' Operate on obRecordset.
> </code>
>
>
> My FO output (note the blank line between the 2 fo:inline and
> how the 2nd one indents in now):
> <fo:block font-family="'Courier
> Standard', 'monospace', 'Arial Unicode MS' "
> font-size="8.5pt" font-stretch="90%"
> line-height="12pt" start-indent="93pt+15pt"
> linefeed-treatment="preserve" white-space-treatment="preserve"
> white-space-collapse="false" wrap-option="no-wrap" space-before="6pt"
> space-after="0pt">Dim obConnection As New ADODB.Connection
> Dim obRecordset As New ADODB.Recordset
>
> <fo:inline background-color="rgb(235, 235, 235)"
> padding-left="2pt"
> padding-right="2pt">obConnection.Provider =
> "SAS.IOMProvider.1"</fo:inline>
>
> <fo:inline background-color="rgb(235,
> 235, 235)"
> padding-left="2pt"
> padding-right="2pt">obConnection.Properties("Prompt")
> = adPromptAlways</fo:inline>
> obConnection.Open
>
> obRecordset.Open "sasuser.MyData", obConnection,
> adOpenDynamic, adLockOptimistic, adCmdTableDirect
> ' Operate on obRecordset.
> </fo:block>
>
> I did notice that if I type a letter before the 2nd
> <codeFocus> element, it works fine and doesn't insert the
> extra line or shift over.
>
> I even tried defining my xsl:template on a line by itself as
> not to get any carriage returns:
> <xsl:template match="codeFocus"><fo:inline
> background-color="rgb(235, 235, 235)" padding-left="2pt"
> padding-right="2pt"><xsl:apply-templates/></fo:inline></xsl:template>
>
> Does anyone have any ideas to prevent this from happening?
>
> Any suggestions appreciated,
> Cindy Hunt
|