XSL-FO Lists

Lists in XSL-FO are created using four formatting objects:

  • <fo:list-block> contains the list and is used to format it. Each <fo:list-block> contains one or more <fo:list-item>
  • <fo:list-item> contains an item of a list. An item consists of the label and the body.
  • <fo:list-item-label> is a block-level formatting object for an item's label (a number, character, term, etc.).
  • <fo:list-item-body> has the content of an item.

The <fo:list-item-label> and <fo:list-item-body> have start-indent and end-indent attributes that is used to set the offset from the left and right sides respectively of a block-area generated with these formatting objects. The start-indent and end-indent can be valued explicitly or calculated via special functions: label-end() or body-start().

Here is a simple example illustrating the usage of lists in XSL-FO:

   ...
   <fo:block>
     Main industry areas of application of the engine:
     <fo:list-block>
     	<fo:list-item>
	     <fo:list-item-label end-indent="label-end()">
	        <fo:block>•</fo:block>
	     </fo:list-item-label>
	     <fo:list-item-body>
	        <fo:block>
	          Banking and different accounting systems
	        </fo:block>
	     </fo:list-item-body>
	</fo:list-item>
     	<fo:list-item>
	     <fo:list-item-label end-indent="label-end()">
	        <fo:block>•</fo:block>
	     </fo:list-item-label>
	     <fo:list-item-body>
	        <fo:block>
	         GIS (Geographic Information Systems) providers
	        </fo:block>
	     </fo:list-item-body>
     	<fo:list-item>
	     <fo:list-item-label end-indent="label-end()">
	        <fo:block>•</fo:block>
	     </fo:list-item-label>
	     <fo:list-item-body>
	        <fo:block>
	          etc.
	        </fo:block>
	     </fo:list-item-body>
     </fo:list-block>
   </fo:block>
   ...