Re: [docbook-apps] listitems and FO numbering

From
Bob Stayton <>
Date
2006-05-12T17:01:27+00:00
ID
02d801c675e5$b99491c0$6400a8c0@totoro
Thread
Re: [docbook-apps] listitems and FO numbering
Title: KCC Stationery

Hi David,

The mode="item-number" template just returns a number, but 
it doesn't place it anywhere.   Trying to use float sounds hard, 
as you'll have to deal with alignment and such to match your other 
listitems.

 

I would suggest creating a customized copy of 
the template for the listitem itself:

 

<xsl:template 
match="orderedlist/listitem[@role='no_number']">

 

I would have it create two fo:list-items.  Put 
everything that precedes the first para in the first list-item's list-item-body, 
and give it an empty list-item-label.  Then put the first para and 
everything that follows it in the second list-item's list-body, and put the 
number in its list-item-label.  That would keep everything lined up the way 
you want.

 

Bob Stayton
Sagehill Enterprises
DocBook Consulting


 

 

  
----- Original Message ----- 

  
From: 
  David White 
  

  
To:  
  

  
Cc: David White 

  
Sent: Friday, May 12, 2006 7:37 AM

  
Subject: [docbook-apps] listitems and FO 
  numbering

  

  
Hello everyone,

  
 

  
I'm looking to control how the listitems 
  are formatted in XSL-FO.  I have XML that is formatted like this for my 
  list:

  
 

  

  
<listitem 
  role="no_number">

  
<figure>

  
<title/>

  
<mediaobject><imageobject><imagedata fileref="A.tif"/></imageobject></mediaobject>

  
</figure>

  
<para>some text<para>

  
</listitem>

  
What I'm trying to do is 
  move the listitem number to the <para> tag instead of immediately 
  rendering after the <listitem> tag.

  
 

  
Below is my XSLT 
  modification to the <xsl:template match="orderedlist/listitem" mode="item-number"> template:

  
<xsl:choose>

  
<xsl:when 
  test="self::listitem/@role='no_number' and 
  parent::orderedlist">

  
<!-- This dosnt render the listitem 
  immediately after the element tag -->

  
<!--<xsl:apply-templates 
  select="child::para[1]" mode="item-number" />-->

  
<fo:inline 
  height="15pt" float="left" padding-right="2pt" >

  
<xsl:apply-templates 
  select="ancestor::listitem[parent::orderedlist][1]" mode="item-number"/>

  
</fo:inline>

  
<xsl:number 
  value="$item-number" format="{$type}"/>

  
</xsl:when>

  
<xsl:otherwise>

  
<xsl:if test="parent::orderedlist/@inheritnum='inherit' and 
  ancestor::listitem[parent::orderedlist]">

  
<xsl:apply-templates 
  select="ancestor::listitem[parent::orderedlist][1]" mode="item-number"/>

  
</xsl:if>

  
<xsl:number value="$item-number" format="{$type}"/>

  
</xsl:otherwise>

  
</xsl:choose>

  
 

  
Any suggestions as to how I can correct this 
  code to allow flexiblity in where a list item is rendered?

  
 

  
Thanks,

  
 

  
David White

  
Ken Cook Co.,

  
Content Management

  


  
http://www.kencook.com

  
tel: 414.847.1322

  
 

  
 

  
 

  
--
No virus found in this outgoing message.
Checked by 
  AVG Free Edition.
Version: 7.1.392 / Virus Database: 268.5.6/337 - Release 
  Date: 5/11/2006