Loading ...
Sorry, an error occurred while loading the content.

Re: [XSL-FO] Problem with Dictionary Style Running Heads

Expand Messages
  • Jeff Sese
    Ken, I haven t tried your code yet but i think if i have a page like this: ... title0 some text some text some text some text some text some
    Message 1 of 7 , Feb 1, 2007
    • 0 Attachment
      Ken, I haven't tried your code yet but i think if i have a page like this:

      page 1: page 2: page 3:
      ------------- ------------- ------------
      title0 some text some text
      some text some text some text
      some text some text some text
      title1 some text some text
      some text some text some text
      some text some text title2
      some text some text some text
      ------------- ------------- ------------

      It will still output the following headers:

      page 1: title0-title1
      page 2: title1-title1
      page 3: title1-title2

      But what i want is an output of:

      page 1: title0-title1
      page 2: title1
      page 3: title1-title2

      I tried this and i got the desired output, but i can seem to understand
      how it happened.

      <xsl:variable name="first" as="xs:string">
      <fo:retrieve-marker retrieve-class-name="header"
      retrieve-boundary="page" retrieve-position="first-including-carryover"/>
      </xsl:variable>
      <xsl:variable name="last" as="xs:string">
      <fo:retrieve-marker retrieve-class-name="header"
      retrieve-boundary="page" retrieve-position="last-starting-within-page"/>
      </xsl:variable>
      <fo:block>
      <xsl:choose>
      <xsl:when test="$first eq $last">
      <fo:retrieve-marker retrieve-class-name="header"
      retrieve-boundary="page" retrieve-position="first-including-carryover"/>
      </xsl:when>
      <xsl:otherwise>
      <fo:retrieve-marker retrieve-class-name="header"
      retrieve-boundary="page" retrieve-position="first-including-carryover"/>
      — <fo:retrieve-marker retrieve-class-name="header"
      retrieve-boundary="page" retrieve-position="last-starting-within-page"/>
      </xsl:otherwise>
      </xsl:choose>
      </fo:block>

      I tried outputting the content of the variable using xsl:message but i
      get no output for their value:
      <xsl:message>
      <xsl:copy-of select="$first"/>
      <xsl:copy-of select="$last"/>
      </xsl:message>

      Is my xslt above correct? It does give me the desired output though...
      --
      *Jeff Sese*

      G. Ken Holman wrote:
      >
      > At 2007-02-01 15:33 +0800, Jeff Sese wrote:
      > >I'm have a dictionary style running heads that displays the title of the
      > >active article in the page and the last article in the page using this
      > >fo instruction:
      > >
      > ><fo:retrieve-marker retrieve-class-name="header"
      > >retrieve-boundary="page" retrieve-position="first-including-carryover"/>
      > >— <fo:retrieve-marker retrieve-class-name="header"
      > >retrieve-boundary="page" retrieve-position="last-starting-within-page"/>
      > >
      > >When my page only contains a single article, my header will return the
      > >title of the article twice separated by the em dash, which is normal by
      > >following the instructions above. What I want, however, is to output
      > >only the article title once without the em dash if the page contains
      > >only one article and when there are two or more articles present in the
      > >page, i want them displayed as first article em dash second article.
      >
      > There is no way to conditionally retrieve content ... you get what
      > you get by the class name, boundary and position, but you can't
      > arbitrate what you get when there are multiple markers, nor can you
      > test the absence of a marker.
      >
      > You can get closer to what you want if you retrieve two separate
      > parts of the header, the bit at the start and then the bit at the
      > end, with the dash in the bit at the end. But make the end marker
      > empty for the first entry.
      >
      > The problem is on the last page when you get the last title twice ...
      > but I think you are closer to what you want.
      >
      > I hope the example below helps.
      >
      > . . . . . . . . . . . Ken
      >
      > <?xml version="1.0" encoding="utf-8"?><!--marker6.fo-->
      > <root xmlns="http://www.w3.org/1999/XSL/Format
      > <http://www.w3.org/1999/XSL/Format>"
      > font-family="Times" font-size="20pt">
      >
      > <layout-master-set>
      > <simple-page-master master-name="frame"
      > page-height="297mm" page-width="210mm"
      > margin-top="15mm" margin-bottom="15mm"
      > margin-left="15mm" margin-right="15mm">
      > <region-body region-name="frame-body"
      > margin-bottom=".5cm" margin-top=".5cm"/>
      > <region-before region-name="frame-before" extent=".5cm"/>
      > <region-after region-name="frame-after" extent=".5cm"/>
      > </simple-page-master>
      > </layout-master-set>
      >
      > <page-sequence master-reference="frame"
      > xmlns="http://www.w3.org/1999/XSL/Format
      > <http://www.w3.org/1999/XSL/Format>">
      > <static-content flow-name="frame-before">
      > <block>
      > <retrieve-marker retrieve-class-name="header-start"
      > retrieve-boundary="page" retrieve-position="first-including-carryover"/>
      > <retrieve-marker retrieve-class-name="header-end"
      > retrieve-boundary="page" retrieve-position="last-starting-within-page"/>
      > </block>
      > </static-content>
      >
      > <flow flow-name="frame-body">
      > <block space-after="3in" break-after="page">
      > <marker marker-class-name="header-start">
      > first
      > </marker>
      > <marker marker-class-name="header-end">
      >
      > </marker>
      > Test
      > </block>
      > <block space-after="3in">
      > <marker marker-class-name="header-start">
      > second
      > </marker>
      > <marker marker-class-name="header-end">
      > — second
      > </marker>
      > Test
      > </block>
      > <block space-after="3in">
      > <marker marker-class-name="header-start">
      > third
      > </marker>
      > <marker marker-class-name="header-end">
      > — third
      > </marker>
      > Test
      > </block>
      > <block space-after="3in">
      > <marker marker-class-name="header-start">
      > fourth
      > </marker>
      > <marker marker-class-name="header-end">
      > — fourth
      > </marker>
      > Test
      > </block>
      > <block space-after="3in">
      > <marker marker-class-name="header-start">
      > fifth
      > </marker>
      > <marker marker-class-name="header-end">
      > — fifth
      > </marker>
      > Test
      > </block>
      > <block space-after="3in">
      > <marker marker-class-name="header-start">
      > sixth
      > </marker>
      > <marker marker-class-name="header-end">
      > — sixth
      > </marker>
      > Test
      > </block>
      > <block space-after="3in">
      > <marker marker-class-name="header-start">
      > seventh
      > </marker>
      > <marker marker-class-name="header-end">
      > — sevent
      > </marker>
      > Test
      > </block>
      > <block space-after="3in">
      > <marker marker-class-name="header-start">
      > eighth
      > </marker>
      > <marker marker-class-name="header-end">
      > — eighth
      > </marker>
      > Test
      > </block>
      > <block space-after="3in">
      > <marker marker-class-name="header-start">
      > ninth
      > </marker>
      > <marker marker-class-name="header-end">
      > — ninth
      > </marker>
      > Test
      > </block>
      > <block space-after="3in">
      > <marker marker-class-name="header-start">
      > tenth
      > </marker>
      > <marker marker-class-name="header-end">
      > — tenth
      > </marker>
      > Test
      > </block>
      >
      > </flow></page-sequence>
      >
      > </root>
      >
      > --
      > World-wide corporate, govt. & user group XML, XSL and UBL training
      > RSS feeds: publicly-available developer resources and training
      > G. Ken Holman mailto:gkholman@...
      > <mailto:gkholman%40CraneSoftwrights.com>
      > Crane Softwrights Ltd. http://www.CraneSoftwrights.com/f/
      > <http://www.CraneSoftwrights.com/f/>
      > Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (F:-0995)
      > Male Cancer Awareness Aug'05 http://www.CraneSoftwrights.com/f/bc
      > <http://www.CraneSoftwrights.com/f/bc>
      > Legal business disclaimers: http://www.CraneSoftwrights.com/legal
      > <http://www.CraneSoftwrights.com/legal>
      >
      >
      > ------------------------------------------------------------------------
      >
      > No virus found in this incoming message.
      > Checked by AVG Free Edition.
      > Version: 7.5.432 / Virus Database: 268.17.18/662 - Release Date: 1/31/2007 3:16 PM
      >
    • Jeff Sese
      The page layout got distorted: ... title0 some text some text title1 some text some text some text ... some text some text some text some text some text some
      Message 2 of 7 , Feb 1, 2007
      • 0 Attachment
        The page layout got distorted:

        page 1:
        ------------
        title0
        some text
        some text
        title1
        some text
        some text
        some text
        ------------
        page 2:
        ------------
        some text
        some text
        some text
        some text
        some text
        some text
        some text
        ------------
        page 3:
        ------------
        some text
        some text
        some text
        some text
        some text
        title2
        some text
        ------------

        *Jeff Sese*

        Jeff Sese wrote:
        >
        > Ken, I haven't tried your code yet but i think if i have a page like this:
        >
        > page 1: page 2: page 3:
        > ------------- ------------- ------------
        > title0 some text some text
        > some text some text some text
        > some text some text some text
        > title1 some text some text
        > some text some text some text
        > some text some text title2
        > some text some text some text
        > ------------- ------------- ------------
        >
        > It will still output the following headers:
        >
        > page 1: title0-title1
        > page 2: title1-title1
        > page 3: title1-title2
        >
        > But what i want is an output of:
        >
        > page 1: title0-title1
        > page 2: title1
        > page 3: title1-title2
        >
        > I tried this and i got the desired output, but i can seem to understand
        > how it happened.
        >
        > <xsl:variable name="first" as="xs:string">
        > <fo:retrieve-marker retrieve-class-name="header"
        > retrieve-boundary="page" retrieve-position="first-including-carryover"/>
        > </xsl:variable>
        > <xsl:variable name="last" as="xs:string">
        > <fo:retrieve-marker retrieve-class-name="header"
        > retrieve-boundary="page" retrieve-position="last-starting-within-page"/>
        > </xsl:variable>
        > <fo:block>
        > <xsl:choose>
        > <xsl:when test="$first eq $last">
        > <fo:retrieve-marker retrieve-class-name="header"
        > retrieve-boundary="page" retrieve-position="first-including-carryover"/>
        > </xsl:when>
        > <xsl:otherwise>
        > <fo:retrieve-marker retrieve-class-name="header"
        > retrieve-boundary="page" retrieve-position="first-including-carryover"/>
        > — <fo:retrieve-marker retrieve-class-name="header"
        > retrieve-boundary="page" retrieve-position="last-starting-within-page"/>
        > </xsl:otherwise>
        > </xsl:choose>
        > </fo:block>
        >
        > I tried outputting the content of the variable using xsl:message but i
        > get no output for their value:
        > <xsl:message>
        > <xsl:copy-of select="$first"/>
        > <xsl:copy-of select="$last"/>
        > </xsl:message>
        >
        > Is my xslt above correct? It does give me the desired output though...
        > --
        > *Jeff Sese*
        >
        > G. Ken Holman wrote:
        > >
        > > At 2007-02-01 15:33 +0800, Jeff Sese wrote:
        > > >I'm have a dictionary style running heads that displays the title
        > of the
        > > >active article in the page and the last article in the page using this
        > > >fo instruction:
        > > >
        > > ><fo:retrieve-marker retrieve-class-name="header"
        > > >retrieve-boundary="page"
        > retrieve-position="first-including-carryover"/>
        > > >— <fo:retrieve-marker retrieve-class-name="header"
        > > >retrieve-boundary="page"
        > retrieve-position="last-starting-within-page"/>
        > > >
        > > >When my page only contains a single article, my header will return the
        > > >title of the article twice separated by the em dash, which is normal by
        > > >following the instructions above. What I want, however, is to output
        > > >only the article title once without the em dash if the page contains
        > > >only one article and when there are two or more articles present in the
        > > >page, i want them displayed as first article em dash second article.
        > >
        > > There is no way to conditionally retrieve content ... you get what
        > > you get by the class name, boundary and position, but you can't
        > > arbitrate what you get when there are multiple markers, nor can you
        > > test the absence of a marker.
        > >
        > > You can get closer to what you want if you retrieve two separate
        > > parts of the header, the bit at the start and then the bit at the
        > > end, with the dash in the bit at the end. But make the end marker
        > > empty for the first entry.
        > >
        > > The problem is on the last page when you get the last title twice ...
        > > but I think you are closer to what you want.
        > >
        > > I hope the example below helps.
        > >
        > > . . . . . . . . . . . Ken
        > >
        > > <?xml version="1.0" encoding="utf-8"?><!--marker6.fo-->
        > > <root xmlns="http://www.w3.org/1999/XSL/Format
        > <http://www.w3.org/1999/XSL/Format>
        > > <http://www.w3.org/1999/XSL/Format <http://www.w3.org/1999/XSL/Format>>"
        > > font-family="Times" font-size="20pt">
        > >
        > > <layout-master-set>
        > > <simple-page-master master-name="frame"
        > > page-height="297mm" page-width="210mm"
        > > margin-top="15mm" margin-bottom="15mm"
        > > margin-left="15mm" margin-right="15mm">
        > > <region-body region-name="frame-body"
        > > margin-bottom=".5cm" margin-top=".5cm"/>
        > > <region-before region-name="frame-before" extent=".5cm"/>
        > > <region-after region-name="frame-after" extent=".5cm"/>
        > > </simple-page-master>
        > > </layout-master-set>
        > >
        > > <page-sequence master-reference="frame"
        > > xmlns="http://www.w3.org/1999/XSL/Format
        > <http://www.w3.org/1999/XSL/Format>
        > > <http://www.w3.org/1999/XSL/Format
        > <http://www.w3.org/1999/XSL/Format>>">
        > > <static-content flow-name="frame-before">
        > > <block>
        > > <retrieve-marker retrieve-class-name="header-start"
        > > retrieve-boundary="page" retrieve-position="first-including-carryover"/>
        > > <retrieve-marker retrieve-class-name="header-end"
        > > retrieve-boundary="page" retrieve-position="last-starting-within-page"/>
        > > </block>
        > > </static-content>
        > >
        > > <flow flow-name="frame-body">
        > > <block space-after="3in" break-after="page">
        > > <marker marker-class-name="header-start">
        > > first
        > > </marker>
        > > <marker marker-class-name="header-end">
        > >
        > > </marker>
        > > Test
        > > </block>
        > > <block space-after="3in">
        > > <marker marker-class-name="header-start">
        > > second
        > > </marker>
        > > <marker marker-class-name="header-end">
        > > — second
        > > </marker>
        > > Test
        > > </block>
        > > <block space-after="3in">
        > > <marker marker-class-name="header-start">
        > > third
        > > </marker>
        > > <marker marker-class-name="header-end">
        > > — third
        > > </marker>
        > > Test
        > > </block>
        > > <block space-after="3in">
        > > <marker marker-class-name="header-start">
        > > fourth
        > > </marker>
        > > <marker marker-class-name="header-end">
        > > — fourth
        > > </marker>
        > > Test
        > > </block>
        > > <block space-after="3in">
        > > <marker marker-class-name="header-start">
        > > fifth
        > > </marker>
        > > <marker marker-class-name="header-end">
        > > — fifth
        > > </marker>
        > > Test
        > > </block>
        > > <block space-after="3in">
        > > <marker marker-class-name="header-start">
        > > sixth
        > > </marker>
        > > <marker marker-class-name="header-end">
        > > — sixth
        > > </marker>
        > > Test
        > > </block>
        > > <block space-after="3in">
        > > <marker marker-class-name="header-start">
        > > seventh
        > > </marker>
        > > <marker marker-class-name="header-end">
        > > — sevent
        > > </marker>
        > > Test
        > > </block>
        > > <block space-after="3in">
        > > <marker marker-class-name="header-start">
        > > eighth
        > > </marker>
        > > <marker marker-class-name="header-end">
        > > — eighth
        > > </marker>
        > > Test
        > > </block>
        > > <block space-after="3in">
        > > <marker marker-class-name="header-start">
        > > ninth
        > > </marker>
        > > <marker marker-class-name="header-end">
        > > — ninth
        > > </marker>
        > > Test
        > > </block>
        > > <block space-after="3in">
        > > <marker marker-class-name="header-start">
        > > tenth
        > > </marker>
        > > <marker marker-class-name="header-end">
        > > — tenth
        > > </marker>
        > > Test
        > > </block>
        > >
        > > </flow></page-sequence>
        > >
        > > </root>
        > >
        > > --
        > > World-wide corporate, govt. & user group XML, XSL and UBL training
        > > RSS feeds: publicly-available developer resources and training
        > > G. Ken Holman mailto:gkholman@...
        > <mailto:gkholman%40CraneSoftwrights.com>
        > > <mailto:gkholman%40CraneSoftwrights.com>
        > > Crane Softwrights Ltd. http://www.CraneSoftwrights.com/f/
        > <http://www.CraneSoftwrights.com/f/>
        > > <http://www.CraneSoftwrights.com/f/
        > <http://www.CraneSoftwrights.com/f/>>
        > > Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (F:-0995)
        > > Male Cancer Awareness Aug'05 http://www.CraneSoftwrights.com/f/bc
        > <http://www.CraneSoftwrights.com/f/bc>
        > > <http://www.CraneSoftwrights.com/f/bc
        > <http://www.CraneSoftwrights.com/f/bc>>
        > > Legal business disclaimers: http://www.CraneSoftwrights.com/legal
        > <http://www.CraneSoftwrights.com/legal>
        > > <http://www.CraneSoftwrights.com/legal
        > <http://www.CraneSoftwrights.com/legal>>
        > >
        > >
        > > ----------------------------------------------------------
        > >
        > > No virus found in this incoming message.
        > > Checked by AVG Free Edition.
        > > Version: 7.5.432 / Virus Database: 268.17.18/662 - Release Date:
        > 1/31/2007 3:16 PM
        > >
        >
        >
        > ------------------------------------------------------------------------
        >
        > No virus found in this incoming message.
        > Checked by AVG Free Edition.
        > Version: 7.5.432 / Virus Database: 268.17.18/662 - Release Date: 1/31/2007 3:16 PM
        >
      • G. Ken Holman
        ... Well, I don t have the time to make *more* test data for your requirements, so if you haven t tried the code I took the time to suggest then I won t bother
        Message 3 of 7 , Feb 1, 2007
        • 0 Attachment
          At 2007-02-01 17:02 +0800, Jeff Sese wrote:
          >Ken, I haven't tried your code yet but i think if i have a page like this:

          Well, I don't have the time to make *more* test data for your
          requirements, so if you haven't tried the code I took the time to
          suggest then I won't bother trying it either.

          >I tried this and i got the desired output,

          Then why did you post in your first message that you had a problem?

          >but i can seem to understand how it happened.

          I do not see why you have added complexity in your code.

          ><xsl:variable name="first" as="xs:string">
          > <fo:retrieve-marker retrieve-class-name="header"
          >retrieve-boundary="page" retrieve-position="first-including-carryover"/>
          ></xsl:variable>
          ><xsl:variable name="last" as="xs:string">
          > <fo:retrieve-marker retrieve-class-name="header"
          >retrieve-boundary="page" retrieve-position="last-starting-within-page"/>
          ></xsl:variable>
          ><fo:block>
          > <xsl:choose>
          > <xsl:when test="$first eq $last">

          You have bound two specified sequence constructors to variables as
          strings and then compared them. Each string is empty. They will
          always return the same result and will be considered equal. How did
          you think they were going to vary?

          >I tried outputting the content of the variable using xsl:message but i
          >get no output for their value:
          ><xsl:message>
          > <xsl:copy-of select="$first"/>
          > <xsl:copy-of select="$last"/>
          ></xsl:message>

          Both variables are cast as strings and they are both empty, hence you
          get their empty value.

          >Is my xslt above correct?

          "correct" for what purpose? It does seem nonsensical to cast empty
          string values and then compare them.

          >It does give me the desired output though...

          Well, I cannot see how, since your comparison of two empty strings
          will always produce a "true" and you won't see the dash. But since
          you are seeing the dash, then I don't understand where you got your
          snippet, or some other information is missing.

          Remember that the XSL-FO process is arms-length from the XSLT
          process. There is no feedback loop. There is *nothing* you can test
          in your XSLT that is the result of any condition of formatting in your XSL-FO.

          . . . . . . . . . . . . . Ken

          --
          World-wide corporate, govt. & user group XML, XSL and UBL training
          RSS feeds: publicly-available developer resources and training
          G. Ken Holman mailto:gkholman@...
          Crane Softwrights Ltd. http://www.CraneSoftwrights.com/f/
          Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (F:-0995)
          Male Cancer Awareness Aug'05 http://www.CraneSoftwrights.com/f/bc
          Legal business disclaimers: http://www.CraneSoftwrights.com/legal
        • J.Pietschmann
          ... Probably because of the common misunderstanding that the FO statements are evaluated , i.e. that markers are actually retrieved during the XSL
          Message 4 of 7 , Feb 1, 2007
          • 0 Attachment
            G. Ken Holman wrote:
            >> <xsl:variable name="first" as="xs:string">
            >> <fo:retrieve-marker retrieve-class-name="header"
            >> retrieve-boundary="page" retrieve-position="first-including-carryover"/>
            >> </xsl:variable>
            ...
            > You have bound two specified sequence constructors to variables as
            > strings and then compared them. Each string is empty. They will
            > always return the same result and will be considered equal. How did
            > you think they were going to vary?

            Probably because of the common misunderstanding that the FO "statements"
            are "evaluated", i.e. that markers are actually retrieved during the XSL
            transformation.

            J.Pietschmann
          • Jeff Sese
            It s not that i don t want to try your sample code... (it was near end of office hours so i was planning to try it this morning) I just want confirmation or at
            Message 5 of 7 , Feb 1, 2007
            • 0 Attachment
              It's not that i don't want to try your sample code... (it was near end
              of office hours so i was planning to try it this morning) I just want
              confirmation or at least some insights that my assumptions of the sample
              code, given a data somewhat the same as the one presented below, were
              correct or wrong.

              After trying the code this morning, i did confirm that indeed that my
              assumptions were correct. That if i have a page that would contain one
              article, then the resulting header using:
              <block>
              <retrieve-marker retrieve-class-name="header-start"
              retrieve-boundary="page" retrieve-position="first-including-carryover"/>
              <retrieve-marker retrieve-class-name="header-end"
              retrieve-boundary="page" retrieve-position="last-starting-within-page"/>
              </block>
              would be: title1 - title1; which is not my desired output.

              The code i posted below was written after i posted my first post, and I
              thought that I had the correct output but after looking at it this
              morning it was not (proof that I really needed to go home at that time
              :)). I just tried that code thinking that the fo:retrieve-marker would
              return a value in xslt... which i was wrong.

              Is there any work-around to this problem? Btw i'm using an evaluation
              software of Antenna XSL-Formatter.

              Thanks for the help,
              *Jeff Sese*

              G. Ken Holman wrote:
              >
              > At 2007-02-01 17:02 +0800, Jeff Sese wrote:
              > >Ken, I haven't tried your code yet but i think if i have a page like
              > this:
              >
              > Well, I don't have the time to make *more* test data for your
              > requirements, so if you haven't tried the code I took the time to
              > suggest then I won't bother trying it either.
              >
              > >I tried this and i got the desired output,
              >
              > Then why did you post in your first message that you had a problem?
              >
              > >but i can seem to understand how it happened.
              >
              > I do not see why you have added complexity in your code.
              >
              > ><xsl:variable name="first" as="xs:string">
              > > <fo:retrieve-marker retrieve-class-name="header"
              > >retrieve-boundary="page" retrieve-position="first-including-carryover"/>
              > ></xsl:variable>
              > ><xsl:variable name="last" as="xs:string">
              > > <fo:retrieve-marker retrieve-class-name="header"
              > >retrieve-boundary="page" retrieve-position="last-starting-within-page"/>
              > ></xsl:variable>
              > ><fo:block>
              > > <xsl:choose>
              > > <xsl:when test="$first eq $last">
              >
              > You have bound two specified sequence constructors to variables as
              > strings and then compared them. Each string is empty. They will
              > always return the same result and will be considered equal. How did
              > you think they were going to vary?
              >
              > >I tried outputting the content of the variable using xsl:message but i
              > >get no output for their value:
              > ><xsl:message>
              > > <xsl:copy-of select="$first"/>
              > > <xsl:copy-of select="$last"/>
              > ></xsl:message>
              >
              > Both variables are cast as strings and they are both empty, hence you
              > get their empty value.
              >
              > >Is my xslt above correct?
              >
              > "correct" for what purpose? It does seem nonsensical to cast empty
              > string values and then compare them.
              >
              > >It does give me the desired output though...
              >
              > Well, I cannot see how, since your comparison of two empty strings
              > will always produce a "true" and you won't see the dash. But since
              > you are seeing the dash, then I don't understand where you got your
              > snippet, or some other information is missing.
              >
              > Remember that the XSL-FO process is arms-length from the XSLT
              > process. There is no feedback loop. There is *nothing* you can test
              > in your XSLT that is the result of any condition of formatting in your
              > XSL-FO.
              >
              > . . . . . . . . . . . . . Ken
              >
              > --
              > World-wide corporate, govt. & user group XML, XSL and UBL training
              > RSS feeds: publicly-available developer resources and training
              > G. Ken Holman mailto:gkholman@...
              > <mailto:gkholman%40CraneSoftwrights.com>
              > Crane Softwrights Ltd. http://www.CraneSoftwrights.com/f/
              > <http://www.CraneSoftwrights.com/f/>
              > Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (F:-0995)
              > Male Cancer Awareness Aug'05 http://www.CraneSoftwrights.com/f/bc
              > <http://www.CraneSoftwrights.com/f/bc>
              > Legal business disclaimers: http://www.CraneSoftwrights.com/legal
              > <http://www.CraneSoftwrights.com/legal>
              >
              >
              > ------------------------------------------------------------------------
              >
              > No virus found in this incoming message.
              > Checked by AVG Free Edition.
              > Version: 7.5.432 / Virus Database: 268.17.18/662 - Release Date: 1/31/2007 3:16 PM
              >
            Your message has been successfully submitted and would be delivered to recipients shortly.