[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: RE: [docbook-apps] listitems and FO numbering
Thanks Bob, works like a charm.
I
wanted to share my resulting code with the list in case someone else would like
to move list item numbers around.
<!-- Template
customization for listitem so that a role can determine where the list item
number is formatted -->
<xsl:template name="listitem_no_number"> <xsl:variable name="id"/> <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing"> <fo:list-item-label/> <fo:list-item-body start-indent="body-start()"> <fo:block> <xsl:apply-templates select="para[1]/preceding-sibling::*"/> </fo:block> </fo:list-item-body> </fo:list-item> <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing"> <fo:list-item-label end-indent="label-end()"> <fo:block> <xsl:apply-templates select="." mode="item-number"/> </fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block> <xsl:apply-templates select="*/following-sibling::para[1]"/> </fo:block> </fo:list-item-body> </fo:list-item> </xsl:template> <!-- Determine if first node in listitem is a figure or a danger/warning/caution, if so call another template --> <xsl:template match="orderedlist/listitem"> <xsl:variable name="id"> <xsl:call-template name="object.id"/> </xsl:variable> <xsl:choose> <xsl:when test="(para[1]/preceding-sibling::figure) or (para[1]/preceding-sibling::warning) or (para[1]/preceding-sibling::caution)"> <xsl:call-template name="listitem_no_number"/> </xsl:when> <xsl:otherwise> <xsl:variable name="item.contents"> <fo:list-item-label end-indent="label-end()"> <fo:block> <xsl:apply-templates select="." mode="item-number"/> </fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block> <xsl:apply-templates/> </fo:block> </fo:list-item-body> </xsl:variable> <xsl:choose> <xsl:when test="parent::*/@spacing = 'compact'"> <fo:list-item id="{$id}" xsl:use-attribute-sets="compact.list.item.spacing"> <xsl:copy-of select="$item.contents"/> </fo:list-item> </xsl:when> <xsl:otherwise> <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing"> <xsl:copy-of select="$item.contents"/> </fo:list-item> </xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:template> From: Bob Stayton [mailto:bobs@sagehill.net] Sent: Friday, May 12, 2006 12:02 PM To: David White; docbook-apps@lists.oasis-open.org Cc: David White Subject: Re: [docbook-apps] listitems and FO numbering 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.
-- -- |
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]