| About namespaces in the following sections | |
|---|---|
In the following sections, all the element names have a |
The stylesheet passed as a parameter to XFC (-styles command-line option) is specified in an XML file conforming to the styles.xsd schema. The recommended extension for these XML files are ".xfc".
<styles>
Content: [ text-style | paragraph-style | numbering ]*
</styles>Example:
<styles xmlns="http://www.xmlmind.com/foconverter/xsl/extensions"
xmlns:xfc="http://www.xmlmind.com/foconverter/xsl/extensions">
...
</styles><text-style name = non empty token abstract = boolean : false base-style =name of another text-styleSome standard XSL-FO text attributesSome standard XSL-FO background attributes/>
Specifies a text style (also known as a “character style”) which can be applied to a fo:inline element by the means of the xfc:user-style extension attribute. Ignored if applied to any element other than fo:inline.
nameRequired. Unique name of this text style.
abstractIf true, this text style is not intended to be directly applied to any fo:inline element. Instead, it is intended to be inherited by other text-style elements by the means of their base-style attributes.
base-styleSpecifies another text-style element. This causes this text-style element to inherit all the XSL-FO attributes found in the base text-style element
The standard XSL-FO attributes allowed in a text-style element are:
Note that specifying any other XSL-FO attribute (e.g. text-transform) is reported as a fatal error.
Examples:
<text-style name="Basic" abstract="true" font="10pt sans-serif" /> <text-style name="Red" base-style="Basic" color="red" />
<paragraph-style name = non empty token abstract = boolean : false base-style =name of another paragraph-stylenext-style =name of another paragraph-stylenumbering =name of a numberingnumbering-level = integer between 1 and 10 inclusive outline-level = non empty stringSome standard XSL-FO text attributesSome standard XSL-FO background attributesSome standard XSL-FO paragraph attributes/>
Specifies a paragraph style which can be applied to a fo:block element by the means of the xfc:user-style extension attribute. Ignored if applied to any element other than fo:block.
nameRequired. Unique name of this paragraph style.
abstractIf true, this paragraph style is not intended to be directly applied to any fo:block element. Instead, it is intended to be inherited by other paragraph-style elements by the means of their base-style attributes.
base-styleSpecifies another paragraph-style element. This causes this paragraph-style element to inherit all the XSL-FO attributes and also the next-style, numbering, numbering-level and outline-level attributes found in the base paragraph-style element
next-styleSpecifies the name of a paragraph-style element, this one or another one. A paragraph having next-style style will be automatically created by the word processor if the user presses key Enter inside a paragraph having this style.
numberingSpecifies that paragraphs having this style are to be automatically numbered by the word processor, the numbering scheme to be used being specified by the value of this attribute. See Section 3.4, “The numbering element”.
numbering-levelRequired if numbering attribute has also been specified, but not required if this paragraph style is abstract. Specifies the list level of paragraphs having this style. See Section 3.4, “The numbering element”.
outline-levelSame extension attribute, except for the empty namespace, as Section 4.4.1, “The xfc:outline-level extension attribute”.
The standard XSL-FO attributes allowed in a paragraph-style element are:
line-height (Number, percentage or length only. Not space.)
Note that specifying any other XSL-FO attribute (e.g. padding-after, margin-left, keep-together.within-column, space-before.mininum) is reported as a fatal error.
Examples:
<paragraph-style name="Caption" base-style="Centered"
keep-with-previous="always"
font-style="oblique" font-size="smaller"
start-indent="4em" end-indent="4em" />
<paragraph-style name="Bullet 3" numbering="Bullets" numbering-level="3"
start-indent="2*24pt" /><numbering name = non empty token show-all-levels = boolean : false > Content: [ level ]{1,10} </numbering> <level format = non empty string text-align = non empty string : start provisional-distance-between-starts = non empty string : 24pt provisional-label-separation = non empty string : 6ptSome standard XSL-FO text attributesSome standard XSL-FO background attributes/>
Element numbering specifies a numbering scheme (also known as a “list style”) for use by a paragraph style. For this, the name of the numbering scheme must be referenced in the numbering attribute of element paragraph-style.
Attributes of element numbering:
nameRequired. Unique name of this numbering scheme.
show-all-levelsIf true, prepend to the number of a list item the numbers of all its “parent” list items. Ignored if this numbering scheme specifies bullets and not numbers.
For example, if list item "d." is “nested” inside list item "3.", itself “nested” inside list item "IV.", then the label found at the beginning of list item "d." will be in fact "IV.3.d.".
A numbering element may contain up to 10 level elements. A level element specifies a number or bullet format for a list item “nested” at the corresponding level. That is, top-level (“non-nested”) list items have a numbering level equal to 1 and their number/bullet formats are specified by the first level child of element numbering; list items “nested” inside top-level list items have a numbering level equal to 2 and their number/bullet formats are specified by the second level child of element numbering; and so on up to 10 “nesting” levels.
Attributes of element level:
formatRequired. Number or bullet format specified using the syntax documented in Section 4.2.1, “The xfc:label-format extension attribute”.
text-alignStandard XSL-FO attribute text-align. Specifies the horizontal alignment of the number or bullet within the space specified using provisional-distance-between-starts.
provisional-distance-between-startsStandard XSL-FO attribute provisional-distance-between-starts. If specified as a positive length, this gives a hanging indent to the list item.
provisional-label-separationStandard XSL-FO attribute provisional-label-separation. Useful when provisional-distance-between-starts is 0 because it allows to separate the number or bullet from the body of the list item.
The other standard XSL-FO attributes allowed in a level element are:
Note that specifying any other XSL-FO attribute is reported as a fatal error.
Examples:
<numbering name="Bullets">
<level format="•"
provisional-label-separation="0" />
<level format="-"
provisional-label-separation="0" />
<level format="●"
text-align="right"
provisional-distance-between-starts="48pt"
provisional-label-separation="0" />
</numbering>
<numbering name="Numbers" show-all-levels="true">
<level format="%{decimal}."
font-family="sans-serif" font-weight="bold" font-size="10pt"
color="#800000" />
<level format="%{lower-alpha}."
font-family="sans-serif" font-weight="bold" font-size="10pt"
color="#008000" />
<level format="-%{lower-roman}-"
text-align="center"
font-family="sans-serif" font-weight="bold" font-size="10pt"
color="#000080" />
</numbering>This extension attribute specifies which named style to use for a fo:inline or fo:block element. Example:
<fo:inline xfc:user-style="Warning">always keep your seat belt
fastened</fo:inline>When an ".xfc" file has been passed as a parameter to XFC, for example by the means of the -styles command-line option :
If set on a fo:inline element, attribute xfc:user-style must reference the name of an existing xfc:text-style element, otherwise a fatal error is reported.
If set on a fo:block element, attribute xfc:user-style must reference the name of an existing xfc:paragraph-style element, otherwise a fatal error is reported.
It's a fatal error to specify xfc:user-style on any XSL-FO element other than fo:inline and fo:block.
Attribute xfc:user-style is ignored, whatever its value, if no ".xfc" file has been passed as a parameter to XFC.
Attribute xfc:user-style="" (empty string value) is ignored in all cases.
Using this boolean extension attribute is required to reuse the same numbered paragraph styles to create several logical lists.
Attribute xfc:restart-numbering is best explained using a simple example. The numbering element is:
<numbering name="Item Numbers" show-all-levels="true"> <level format="%{decimal}." provisional-distance-between-starts="20pt" provisional-label-separation="0" font-family="serif" font-size="10pt" color="#004080" /> <level format="%{upper-alpha}." provisional-distance-between-starts="30pt" provisional-label-separation="0" font-family="serif" font-size="10pt" color="#004080" /> </numbering>
The numbered paragraph styles are:
<paragraph-style name="Numbered Item 1" base-style="Numbered Item" numbering-level="1" start-indent="2em" /> <paragraph-style name="Numbered Item 2" base-style="Numbered Item" numbering-level="2" start-indent="2em + 20pt" />
What follows is meant to specify two “logical lists” separated by a paragraph.
<fo:block xfc:user-style="Numbered Item 1">First item.</fo:block> <fo:block xfc:user-style="Numbered Item 2">First sub-item of first item.</fo:block> <fo:block xfc:user-style="Numbered Item 2">Second sub-item of first item.</fo:block> <fo:block xfc:user-style="Numbered Item 1">Second item.</fo:block> <fo:block xfc:user-style="Numbered Item 2">First sub-item of second item.</fo:block> <fo:block xfc:user-style="Numbered Item 2">Second sub-item of second item.</fo:block> <fo:block>A paragraph.</fo:block> <fo:block xfc:user-style="Numbered Item 1">First item.</fo:block> <fo:block xfc:user-style="Numbered Item 2">First sub-item of first item.</fo:block> <fo:block xfc:user-style="Numbered Item 2">Second sub-item of first item.</fo:block> <fo:block xfc:user-style="Numbered Item 1">Second item.</fo:block> <fo:block xfc:user-style="Numbered Item 2">First sub-item of second item.</fo:block> <fo:block xfc:user-style="Numbered Item 2">Second sub-item of second item.</fo:block>
However the above XSL-FO snippet is converted to:
1.
1.A
1.B
2.
2.A
2.B
A paragraph.
3.
3.A.
3.B.
4.
4.A.
4.B
by XFC.
After adding attribute xfc:restart-numbering="true" to the first item of each logical list:
<fo:block xfc:user-style="Numbered Item 1" xfc:restart-numbering="true>First item.</fo:block> <fo:block xfc:user-style="Numbered Item 2">First sub-item of first item.</fo:block> <fo:block xfc:user-style="Numbered Item 2">Second sub-item of first item.</fo:block> <fo:block xfc:user-style="Numbered Item 1">Second item.</fo:block> <fo:block xfc:user-style="Numbered Item 2">First sub-item of second item.</fo:block> <fo:block xfc:user-style="Numbered Item 2">Second sub-item of second item.</fo:block> <fo:block>A paragraph.</fo:block> <fo:block xfc:user-style="Numbered Item 1" xfc:restart-numbering="true>First item.</fo:block> <fo:block xfc:user-style="Numbered Item 2">First sub-item of first item.</fo:block> <fo:block xfc:user-style="Numbered Item 2">Second sub-item of first item.</fo:block> <fo:block xfc:user-style="Numbered Item 1">Second item.</fo:block> <fo:block xfc:user-style="Numbered Item 2">First sub-item of second item.</fo:block> <fo:block xfc:user-style="Numbered Item 2">Second sub-item of second item.</fo:block>
This gives the expected result:
1.
1.A
1.B
2.
2.A
2.B
A paragraph.
1.
1.A
1.B
2.
2.A
2.B
It is not required to add attribute |