--- /dev/null
+<?xml version = "1.0" encoding = "UTF-8"?>
+<schema xmlns = "http://www.w3.org/2001/XMLSchema" targetNamespace = "http://www.w3.org/1999/XSL/Format" xmlns:fo = "http://www.w3.org/1999/XSL/Format" xmlns:xs = "http://www.w3.org/2001/XMLSchema" elementFormDefault = "qualified">
+
+ <annotation>
+ <documentation>
+
+ I'm not sure where to place this.
+ It applies to the page context (NOT implemented)
+ <attribute name = "size" type = "size_Type"/>
+
+ I have not coded for the functions described in 5.10 Core Function Library
+ They need to be segregated into groups and then inserted in the types
+
+ common_functions
+ object inherited-property-value(NCName)
+ object from-parent( NCName)
+ object from-nearest-specified-value( NCName)
+ object merge-property-values( NCName)
+
+ font_functions
+ object system-font( NCName , NCName)
+
+ length_functions
+ numeric floor( numeric)
+ numeric ceiling(numeric)
+ numeric round(numeric)
+ numeric min( numeric , numeric)
+ numeric max(numeric , numeric)
+ numeric abs( numeric)
+
+ table_cell_or_descendants_functions
+ object from-table-column( NCName)
+
+ color_functions
+ color rgb(numeric , numeric , numeric)
+ color rgb-icc(numeric , numeric , numeric , NCName , numeric , numeric)
+ color system-color( NCName)
+
+ label_functions
+ numeric body-start()
+ numeric label-end()
+
+ (defined)
+ table-column_functions
+ numeric proportional-column-width( numeric)
+
+ This schema has been developed in order to validate XSL FO documents for FOP
+ All of the elements need to be prefixed with fo:
+ The namespace prefix is xmlns:fo = "http://www.w3.org/1999/XSL/Format".
+
+ This schema, as delivered, may either validate the full spec, or, just the FOP portion.
+ (What it validates depends upon what I was doing with it when released.)
+
+ If you want to restrict it to just those elements and attributes implemented by FOP,
+ you need to edit the <group xmlns=""/> and <attributeGroup xmlns=""/> tags to exclude the groups ending with _Not
+
+ Some schema tools complain about the placement of comments in this schema and will remove or reorder them
+ There are fop_result and fop_fail comments on specific features not implemented by FOP
+
+ FOP does not enforce the following schema requirements
+
+ fo:simple-page-master model = "(region-body,region-before?,region-after?,region-start?,region-end?)"
+ elements can be in any order
+
+ fo:table-cell model = "(%block;)+"
+ Can be empty
+
+ fo:flow model = "(%block;)+"
+ Can be empty
+
+ This schema allows the length attribute to be negative for some elements like margins.
+ There may be instances where I've entered %integer_Type; and it should be positive-integer or number
+ The schema trys to handle the text based rules re: fo:markers, fo:float, footer and fo:initial-property-set
+ But, allows you to do illegal things if you want because I couldn't figure out how to constrain against the illegal actions.
+
+ Please e-mail your comments to cpaussa@myrealbox.com
+
+ Contribution by Oleg Tkachenko
+ (Declarations able to include non-xsl children)
+ <xs:any minOccurs = "0" maxOccurs = "unbounded" namespace = "##other" processContents = "skip"/>
+ This declaration assumes that all <fo:color-profile/> elements must come before other stuff,
+ which is not required by spec, but I cannot see any way to express such constraints in schema,
+ one could use <xs:choice/> instead of <xs:sequence/>, but this way we lose control over (color-profile)+ constraint.
+
+ </documentation>
+ </annotation>
+
+ <group name = "initial_property_set_List_Not">
+ <choice>
+ <element ref = "fo:initial-property-set"/>
+ </choice>
+ </group>
+
+ <annotation>
+ <documentation>
+ empty group so cannot be defined
+ <group name = "initial_property_set_List_FOP">
+ <choice/>
+ </group>
+ </documentation>
+ </annotation>
+
+ <group name = "initial_property_set_List">
+ <annotation>
+ <documentation>
+ <choice>
+ <group ref = "fo:initial_property_set_List_FOP"/>
+ </choice>
+ </documentation>
+ </annotation>
+ <choice>
+ <group ref = "fo:initial_property_set_List_Not"/>
+ </choice>
+ </group>
+ <group name = "marker_List">
+ <choice>
+ <element ref = "fo:marker"/>
+ </choice>
+ </group>
+ <group name = "inline_List_FOP">
+ <choice>
+ <element ref = "fo:character"/>
+ <element ref = "fo:external-graphic"/>
+ <element ref = "fo:instream-foreign-object"/>
+ <element ref = "fo:inline"/>
+ <element ref = "fo:leader"/>
+ <element ref = "fo:page-number"/>
+ <element ref = "fo:page-number-citation"/>
+ <element ref = "fo:basic-link"/>
+ </choice>
+ </group>
+ <group name = "inline_List_Not">
+ <choice>
+ <element ref = "fo:bidi-override"/>
+ <element ref = "fo:inline-container"/>
+ <element ref = "fo:multi-toggle"/>
+ </choice>
+ </group>
+ <group name = "inline_List">
+ <choice>
+ <group ref = "fo:inline_List_FOP"/>
+ <group ref = "fo:inline_List_Not"/>
+ </choice>
+ </group>
+ <group name = "block_List_FOP">
+ <choice>
+ <element ref = "fo:block"/>
+ <element ref = "fo:block-container"/>
+ <element ref = "fo:table"/>
+ <element ref = "fo:list-block"/>
+ </choice>
+ </group>
+ <group name = "block_List_Not">
+ <choice>
+ <element ref = "fo:table-and-caption"/>
+ </choice>
+ </group>
+ <group name = "block_List">
+ <choice>
+ <group ref = "fo:block_List_FOP"/>
+ <group ref = "fo:block_List_Not"/>
+ </choice>
+ </group>
+ <group name = "neutral_List_FOP">
+ <choice>
+ <element ref = "fo:wrapper"/>
+ <element ref = "fo:retrieve-marker"/>
+ </choice>
+ </group>
+ <group name = "neutral_List_Not">
+ <choice>
+ <element ref = "fo:multi-switch"/>
+ <element ref = "fo:multi-properties"/>
+ </choice>
+ </group>
+ <group name = "neutral_List">
+ <choice>
+ <group ref = "fo:neutral_List_FOP"/>
+ <group ref = "fo:neutral_List_Not"/>
+ </choice>
+ </group>
+ <annotation>
+ <documentation>
+ empty group so cannot be defined
+ <group name = "float_List_FOP">
+ <choice/>
+ </group>
+ </documentation>
+ </annotation>
+ <group name = "float_List_Not">
+ <choice>
+ <element ref = "fo:float"/>
+ </choice>
+ </group>
+ <group name = "float_List">
+ <annotation>
+ <documentation>
+ empty group
+ <choice>
+ <group ref = "fo:float_List_FOP"/>
+ </choice>
+ </documentation>
+ </annotation>
+ <choice>
+ <group ref = "fo:float_List_Not"/>
+ </choice>
+ </group>
+ <group name = "footnote_List">
+ <choice>
+ <element ref = "fo:footnote"/>
+ </choice>
+ </group>
+
+ <attributeGroup name = "block_properties_Not">
+ <attribute name = "page-break-after" type = "fo:page_break_after_Type"/>
+ <attribute name = "page-break-before" type = "fo:page_break_after_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "block_properties_FOP">
+ </attributeGroup>
+ <attributeGroup name = "block_properties">
+ <attributeGroup ref = "fo:block_properties_FOP"/>
+ <attributeGroup ref = "fo:block_properties_Not"/>
+ </attributeGroup>
+
+ <attributeGroup name = "list_properties_Not">
+ <attribute name = "page-break-after" type = "fo:page_break_after_Type"/>
+ <attribute name = "page-break-before" type = "fo:page_break_after_Type"/>
+ <attribute name = "background-position" type = "fo:background_position_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "list_properties_FOP">
+ </attributeGroup>
+ <attributeGroup name = "list_properties">
+ <attributeGroup ref = "fo:list_properties_FOP"/>
+ <attributeGroup ref = "fo:list_properties_Not"/>
+ </attributeGroup>
+
+ <attributeGroup name = "inheritable_properties_List_Not">
+ <attribute name = "auto-restore" type = "fo:auto_restore_Type"/>
+ <attribute name = "background" type = "fo:background_Type" />
+ <attribute name = "border-spacing" type = "fo:length_Type"/>
+ <attribute name = "caption-side" type = "fo:caption_side_Type"/>
+ <attribute name = "direction" type = "fo:direction_Type"/>
+ <attribute name = "empty-cells" type = "fo:empty_cells_Type"/>
+ <attribute name = "font" type = "xs:string"/>
+ <attribute name = "font-selection-strategy" type = "fo:font_selection_strategy_Type"/>
+ <attribute name = "font-size-adjust" type = "fo:font_size_adjust_Type"/>
+ <attribute name = "font-stretch" type = "xs:string"/>
+ <attribute name = "font-variant" type = "fo:font_variant_Type"/>
+ <attribute name = "glyph-orientation-vertical" type = "fo:orientation_Type"/>
+ <attribute name = "glyph-orientation-horizontal" type = "fo:orientation_Type"/>
+ <attribute name = "hyphenation-keep" type = "fo:hyphenation_keep_Type"/>
+ <attribute name = "hyphenation-ladder-count" type = "fo:hyphenation_ladder_count_Type"/>
+ <attribute name = "intrusion-displace" type = "fo:displace_Type"/>
+ <attribute name = "last-line-end-indent" type = "fo:last_line_end_indent_Type"/>
+ <attribute name = "line-height-shift-adjustment" type = "fo:line_height_shift_adjustment_Type"/>
+ <attribute name = "line-stacking-strategy" type = "fo:line_stacking_strategy_Type"/>
+ <attribute name = "linefeed-treatment" type = "fo:linefeed_treatment_Type"/>
+ <attribute name = "margin" type = "fo:border_margin_width_Type" />
+ <attribute name = "max-width" type = "fo:max_width_Type"/>
+ <attribute name = "min-height" type = "fo:start_indent_Type"/>
+ <attribute name = "min-width" type = "fo:start_indent_Type"/>
+ <attribute name = "page-break-inside" type = "fo:page_break_inside_Type"/>
+ <attribute name = "reference-orientation" type = "fo:orientation_Type"/>
+ <attribute name = "score-spaces" type = "fo:score_spaces_Type"/>
+ <attribute name = "script" type = "xs:string"/>
+ <attribute name = "text-transform" type = "fo:text_transform_Type"/>
+ <attribute name = "visibility" type = "fo:visibility_Type"/>
+ <attribute name = "white-space" type = "fo:white_space_Type"/>
+ <attribute name = "white-space-treatment" type = "fo:white_space_treatment_Type"/>
+ <attribute name = "word-spacing" type = "fo:letter_spacing_Type"/>
+ <attribute name = "writing-mode" type = "fo:writing_mode_Type"/>
+ </attributeGroup>
+
+
+ <attributeGroup name = "inheritable_properties_List_FOP">
+ <annotation>
+ <documentation>
+ Removed because I'm not sure how to handle this<attribute xmlns="" name = "xml:lang" type = "xs:string"/>
+ </documentation>
+ </annotation>
+ <attribute name = "border-bottom" type = "fo:border_side_Type"/>
+ <attribute name = "border-collapse" type = "fo:border_collapse_Type"/>
+ <attribute name = "border-color" type = "fo:border_color_Type" />
+ <attribute name = "border-left" type = "fo:border_side_Type" />
+ <attribute name = "border-right" type = "fo:border_side_Type" />
+ <attribute name = "border-separation" type = "fo:length_bp_ip_direction_Type"/>
+ <attribute name = "border-style" type = "fo:border_multi_style_Type" />
+ <attribute name = "border-top" type = "fo:border_side_Type" />
+ <attribute name = "border-width" type = "fo:border_margin_width_Type" />
+ <attribute name = "color" type = "fo:color_Type"/>
+ <attribute name = "country" type = "fo:country_Type"/>
+ <attribute name = "display-align" type = "fo:display_align_Type"/>
+ <attribute name = "end-indent" type = "fo:end_indent_Type"/>
+ <attribute name = "font-family" type = "fo:family_name_Type"/>
+ <attribute name = "font-size" type = "fo:font_size_Type"/>
+ <attribute name = "font-style" type = "fo:font_style_Type"/>
+ <attribute name = "font-weight" type = "fo:font_weight_Type"/>
+ <attribute name = "hyphenate" type = "fo:hyphenate_Type"/>
+ <attribute name = "hyphenation-character" type = "fo:hyphenation_character_Type"/>
+ <attribute name = "hyphenation-push-character-count" type = "fo:integer_Type"/>
+ <attribute name = "hyphenation-remain-character-count" type = "fo:integer_Type"/>
+ <attribute name = "keep-together" type = "fo:keep_compound_Type"/>
+ <attribute name = "keep-together.within-column" type = "fo:keep_integer_Type"/>
+ <attribute name = "keep-together.within-line" type = "fo:keep_integer_Type"/>
+ <attribute name = "keep-together.within-page" type = "fo:keep_integer_Type"/>
+ <attribute name = "language" type = "fo:language_Type"/>
+ <attribute name = "leader-alignment" type = "fo:leader_alignment_Type"/>
+ <attribute name = "leader-length" type = "fo:leader_length_Type"/>
+ <attribute name = "leader-length.maximum" type = "fo:length_Type"/>
+ <attribute name = "leader-length.minimum" type = "fo:length_Type"/>
+ <attribute name = "leader-length.optimum" type = "fo:length_Type"/>
+ <attribute name = "leader-pattern" type = "fo:leader_pattern_Type"/>
+ <attribute name = "leader-pattern-width" type = "fo:leader_pattern_width_Type"/>
+ <attribute name = "letter-spacing" type = "fo:letter_spacing_Type"/>
+ <attribute name = "line-height" type = "fo:line_height_Type"/>
+ <attribute name = "orphans" type = "fo:orphans_Type"/>
+ <attribute name = "position" type = "fo:position_Type"/>
+ <attribute name = "provisional-distance-between-starts" type = "fo:provisional_distance_between_starts_Type"/>
+ <attribute name = "provisional-label-separation" type = "fo:provisional_label_separation_Type"/>
+ <attribute name = "relative-align" type = "fo:relative_align_Type"/>
+ <attribute name = "rule-style" type = "fo:rule_style_Type"/>
+ <attribute name = "rule-thickness" type = "fo:length_Type"/>
+ <attribute name = "start-indent" type = "fo:start_indent_Type"/>
+ <attribute name = "text-align" type = "fo:text_align_Type"/>
+ <attribute name = "text-align-last" type = "fo:text_align_last_Type"/>
+ <attribute name = "text-indent" type = "fo:length_percentage_Type"/>
+ <attribute name = "white-space-collapse" type = "fo:white_space_collapse_Type"/>
+ <attribute name = "widows" type = "fo:widows_Type"/>
+ <attribute name = "wrap-option" type = "fo:wrap_option_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "inheritable_properties_List">
+ <attributeGroup ref = "fo:inheritable_properties_List_FOP"/>
+ <attributeGroup ref = "fo:inheritable_properties_List_Not"/>
+ </attributeGroup>
+ <attributeGroup name = "break_Properties_List_Not">
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "page-break-inside" type = "fo:breaks_Type"/>
+ </documentation>
+ </annotation>
+ </attributeGroup>
+ <attributeGroup name = "break_Properties_List_FOP">
+ <attribute name = "break-after" type = "fo:breaks_Type"/>
+ <attribute name = "break-before" type = "fo:breaks_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "break_Properties_List">
+ <attributeGroup ref = "fo:break_Properties_List_FOP"/>
+ <attributeGroup ref = "fo:break_Properties_List_Not"/>
+ </attributeGroup>
+ <attributeGroup name = "text_one_Properties_List_FOP"/>
+ <attributeGroup name = "text_one_Properties_List_Not">
+ <attribute name = "text-depth" type = "fo:text_depth_Type"/>
+ <attribute name = "text-altitude" type = "fo:text_altitude_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "text_one_Properties_List">
+ <attributeGroup ref = "fo:text_one_Properties_List_FOP"/>
+ <attributeGroup ref = "fo:text_one_Properties_List_Not"/>
+ </attributeGroup>
+ <attributeGroup name = "line_height_Properties_List_FOP"/>
+ <attributeGroup name = "line_height_Properties_List_Not">
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "line-height-shift-adjustment" type = "fo:line_height_shift_adjustment_Type"/>
+ <attribute name = "line-stacking-strategy" type = "fo:line_stacking_strategy_Type"/>
+ </documentation>
+ </annotation>
+ </attributeGroup>
+ <attributeGroup name = "line_height_Properties_List">
+ <attributeGroup ref = "fo:line_height_Properties_List_FOP"/>
+ <attributeGroup ref = "fo:line_height_Properties_List_Not"/>
+ </attributeGroup>
+ <attributeGroup name = "keep_Properties_List_FOP">
+ <attribute name = "keep-with-next" type = "fo:keep_integer_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "keep_Properties_List_Not">
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "keep-together" type = "fo:keep_compound_Type"/>
+ <attribute name = "keep-together.within-line" type = "fo:keep_integer_Type"/>
+ <attribute name = "keep-together.within-column" type = "fo:keep_integer_Type"/>
+ <attribute name = "keep-together.within-page" type = "fo:keep_integer_Type"/>
+ </documentation>
+ </annotation>
+ <attribute name = "keep-with-previous" type = "fo:keep_integer_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "keep_Properties_List">
+ <attributeGroup ref = "fo:keep_Properties_List_FOP"/>
+ <attributeGroup ref = "fo:keep_Properties_List_Not"/>
+ </attributeGroup>
+ <attributeGroup name = "block_hyphenation_Properties_List_FOP"/>
+ <attributeGroup name = "block_hyphenation_Properties_List_Not">
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "hyphenation-keep" type = "fo:hyphenation_keep_Type"/>
+ <attribute name = "hyphenation-ladder-count" type = "fo:hyphenation_ladder_count_Type"/>
+ </documentation>
+ </annotation>
+ </attributeGroup>
+ <attributeGroup name = "block_hyphenation_Properties_List">
+ <attributeGroup ref = "fo:block_hyphenation_Properties_List_FOP"/>
+ <attributeGroup ref = "fo:block_hyphenation_Properties_List_Not"/>
+ </attributeGroup>
+ <attributeGroup name = "intrusion_displace_Properties_List_FOP"/>
+ <attributeGroup name = "intrusion_displace_Properties_List_Not">
+ <annotation>
+ <documentation>
+ Inheritable attributes
+ <attribute name = "intrusion-displace" type = "fo:displace_Type"/>
+ </documentation>
+ </annotation>
+ </attributeGroup>
+ <attributeGroup name = "intrusion_displace_Properties_List">
+ <attributeGroup ref = "fo:intrusion_displace_Properties_List_FOP"/>
+ <attributeGroup ref = "fo:intrusion_displace_Properties_List_Not"/>
+ </attributeGroup>
+ <attributeGroup name = "progression_Properties_List_FOP"/>
+ <attributeGroup name = "progression_Properties_List_Not">
+ <attribute name = "block-progression-dimension" type = "fo:margin_width_Type"/>
+ <attribute name = "block-progression-dimension.minimum" type = "fo:length_Type"/>
+ <attribute name = "block-progression-dimension.optimum" type = "fo:block_progression_dimension_optimum_Type"/>
+ <attribute name = "block-progression-dimension.maximum" type = "fo:block_progression_dimension_maximum_Type"/>
+ <attribute name = "inline-progression-dimension" type = "fo:margin_width_Type"/>
+ <attribute name = "inline-progression-dimension.minimum" type = "fo:length_Type"/>
+ <attribute name = "inline-progression-dimension.optimum" type = "fo:block_progression_dimension_optimum_Type"/>
+ <attribute name = "inline-progression-dimension.maximum" type = "fo:block_progression_dimension_maximum_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "progression_Properties_List">
+ <attributeGroup ref = "fo:progression_Properties_List_FOP"/>
+ <attributeGroup ref = "fo:progression_Properties_List_Not"/>
+ </attributeGroup>
+ <attributeGroup name = "clip_Properties_List_FOP"/>
+ <attributeGroup name = "clip_Properties_List_Not">
+ <attribute name = "clip" type = "fo:clip_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "clip_Properties_List">
+ <attributeGroup ref = "fo:clip_Properties_List_FOP"/>
+ <attributeGroup ref = "fo:clip_Properties_List_Not"/>
+ </attributeGroup>
+ <attributeGroup name = "reference_Properties_List_FOP"/>
+ <attributeGroup name = "reference_Properties_List_Not">
+ <annotation>
+ <documentation>
+ Inherited
+ <attribute name = "reference-orientation" type = "fo:orientation_Type"/>
+ <attribute name = "writing-mode" type = "fo:writing_mode_Type"/>
+ </documentation>
+ </annotation>
+ </attributeGroup>
+ <attributeGroup name = "reference_Properties_List">
+ <attributeGroup ref = "fo:reference_Properties_List_FOP"/>
+ <attributeGroup ref = "fo:reference_Properties_List_Not"/>
+ </attributeGroup>
+ <attributeGroup name = "Accessibility_Properties_List_FOP"/>
+ <attributeGroup name = "Accessibility_Properties_List_Not">
+ <attribute name = "source-document" type = "xs:string"/>
+ <attribute name = "role" type = "xs:string"/>
+ </attributeGroup>
+ <attributeGroup name = "Accessibility_Properties_List">
+ <attributeGroup ref = "fo:Accessibility_Properties_List_FOP"/>
+ <attributeGroup ref = "fo:Accessibility_Properties_List_Not"/>
+ </attributeGroup>
+ <attributeGroup name = "Relative_Position_Properties_List_FOP">
+ <annotation>
+ <documentation>
+ Inherited
+ <attribute name = "position" type = "fo:position_Type"/>
+ </documentation>
+ </annotation>
+ <attribute name = "top" type = "fo:top_Type"/>
+ <attribute name = "right" type = "fo:right_Type"/>
+ <attribute name = "bottom" type = "fo:bottom_Type"/>
+ <attribute name = "left" type = "fo:left_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "Relative_Position_Properties_List_Not">
+ <attribute name = "relative-position" type = "fo:relative_position_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "Relative_Position_Properties_List">
+ <attributeGroup ref = "fo:Relative_Position_Properties_List_FOP"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List_Not"/>
+ </attributeGroup>
+ <attributeGroup name = "absolute_or_Relative_Position_Properties_List_FOP">
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ </attributeGroup>
+ <attributeGroup name = "absolute_or_Relative_Position_Properties_List_Not">
+ <attribute name = "absolute-position" type = "fo:absolute_position_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "absolute_or_Relative_Position_Properties_List">
+ <attributeGroup ref = "fo:absolute_or_Relative_Position_Properties_List_FOP"/>
+ <attributeGroup ref = "fo:absolute_or_Relative_Position_Properties_List_Not"/>
+ </attributeGroup>
+ <attributeGroup name = "Aural_Properties_List_FOP"/>
+ <attributeGroup name = "Aural_Properties_List_Not">
+ <attribute name = "azimuth" type = "fo:azimuth_Type"/>
+ <attribute name = "cue" type = "xs:string"/>
+ <attribute name = "cue-after" type = "xs:string"/>
+ <attribute name = "cue-before" type = "xs:string"/>
+ <attribute name = "elevation" type = "fo:elevation_Type"/>
+ <attribute name = "pause" type = "xs:string"/>
+ <attribute name = "pause-after" type = "xs:string"/>
+ <attribute name = "pause-before" type = "xs:string"/>
+ <attribute name = "pitch" type = "xs:string"/>
+ <attribute name = "pitch-range" type = "xs:string"/>
+ <attribute name = "play-during" type = "xs:string"/>
+ <attribute name = "richness" type = "xs:string"/>
+ <attribute name = "speak" type = "xs:string"/>
+ <attribute name = "speak-header" type = "xs:string"/>
+ <attribute name = "speak-numeral" type = "fo:speak_numeral_Type"/>
+ <attribute name = "speak-punctuation" type = "xs:string"/>
+ <attribute name = "speech-rate" type = "fo:speech_rate_Type"/>
+ <attribute name = "stress" type = "xs:string"/>
+ <attribute name = "voice-family" type = "xs:string"/>
+ <attribute name = "volume" type = "xs:string"/>
+ </attributeGroup>
+ <attributeGroup name = "Aural_Properties_List">
+ <attributeGroup ref = "fo:Aural_Properties_List_FOP"/>
+ <attributeGroup ref = "fo:Aural_Properties_List_Not"/>
+ </attributeGroup>
+ <attributeGroup name = "Border_Padding_and_Background_Properties_List">
+ <attributeGroup ref = "fo:Border_Properties_List"/>
+ <attributeGroup ref = "fo:Padding_Properties_List"/>
+ <attributeGroup ref = "fo:Background_Properties_List"/>
+ </attributeGroup>
+ <attributeGroup name = "Absolute_Position_Properties_List_FOP">
+ <annotation>
+ <documentation>
+ Inherited
+ <attribute name = "position" type = "fo:position_Type"/>
+ </documentation>
+ </annotation>
+ <attribute name = "top" type = "fo:top_Type"/>
+ <attribute name = "right" type = "fo:right_Type"/>
+ <attribute name = "bottom" type = "fo:bottom_Type"/>
+ <attribute name = "left" type = "fo:left_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "Absolute_Position_Properties_List_Not">
+ <attribute name = "absolute-position" type = "fo:absolute_position_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "Absolute_Position_Properties_List">
+ <attributeGroup ref = "fo:Absolute_Position_Properties_List_FOP"/>
+ <attributeGroup ref = "fo:Absolute_Position_Properties_List_Not"/>
+ </attributeGroup>
+ <attributeGroup name = "Background_Properties_List_FOP">
+ <attribute name = "background-color" type = "fo:background_color_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "Background_Properties_List_Not">
+ <attribute name = "background-attachment" type = "fo:background_attachment_Type"/>
+ <attribute name = "background-image" type = "xs:string"/>
+ <attribute name = "background-repeat" type = "fo:background_repeat_Type"/>
+ <attribute name = "background-position-horizontal" type = "fo:background_position_horizontal_Type"/>
+ <attribute name = "background-position-vertical" type = "fo:background_position_vertical_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "Background_Properties_List">
+ <attributeGroup ref = "fo:Background_Properties_List_FOP"/>
+ <attributeGroup ref = "fo:Background_Properties_List_Not"/>
+ </attributeGroup>
+ <attributeGroup name = "Border_Properties_List">
+ <attribute name = "border" type = "fo:border_Type"/>
+ <attribute name = "border-before-color" type = "fo:color_Type"/>
+ <attribute name = "border-before-style" type = "fo:border_style_Type"/>
+ <attribute name = "border-before-width" type = "fo:border_before_width_Type"/>
+ <attribute name = "border-before-width.length" type = "fo:length_Type"/>
+ <attribute name = "border-before-width.conditionality" type = "fo:conditionality_Type"/>
+ <attribute name = "border-after-color" type = "fo:color_Type"/>
+ <attribute name = "border-after-style" type = "fo:border_style_Type"/>
+ <attribute name = "border-after-width" type = "fo:border_before_width_Type"/>
+ <attribute name = "border-after-width.length" type = "fo:length_Type"/>
+ <attribute name = "border-after-width.conditionality" type = "fo:conditionality_Type"/>
+ <attribute name = "border-start-color" type = "fo:color_Type"/>
+ <attribute name = "border-start-style" type = "fo:border_style_Type"/>
+ <attribute name = "border-start-width" type = "fo:border_before_width_Type"/>
+ <attribute name = "border-start-width.length" type = "fo:length_Type"/>
+ <attribute name = "border-start-width.conditionality" type = "fo:conditionality_Type"/>
+ <attribute name = "border-end-color" type = "fo:color_Type"/>
+ <attribute name = "border-end-style" type = "fo:border_style_Type"/>
+ <attribute name = "border-end-width" type = "fo:border_before_width_Type"/>
+ <attribute name = "border-end-width.length" type = "fo:length_Type"/>
+ <attribute name = "border-end-width.conditionality" type = "fo:conditionality_Type"/>
+ <attribute name = "border-top-color" type = "fo:color_Type"/>
+ <attribute name = "border-top-style" type = "fo:border_style_Type"/>
+ <attribute name = "border-top-width" type = "fo:border_top_width_Type"/>
+ <attribute name = "border-top-width.length" type = "fo:length_Type"/>
+ <attribute name = "border-top-width.conditionality" type = "fo:conditionality_Type"/>
+ <attribute name = "border-bottom-color" type = "fo:color_Type"/>
+ <attribute name = "border-bottom-style" type = "fo:border_style_Type"/>
+ <attribute name = "border-bottom-width" type = "fo:border_top_width_Type"/>
+ <attribute name = "border-bottom-width.length" type = "fo:length_Type"/>
+ <attribute name = "border-bottom-width.conditionality" type = "fo:conditionality_Type"/>
+ <attribute name = "border-left-color" type = "fo:color_Type"/>
+ <attribute name = "border-left-style" type = "fo:border_style_Type"/>
+ <attribute name = "border-left-width" type = "fo:border_top_width_Type"/>
+ <attribute name = "border-left-width.length" type = "fo:length_Type"/>
+ <attribute name = "border-left-width.conditionality" type = "fo:conditionality_Type"/>
+ <attribute name = "border-right-color" type = "fo:color_Type"/>
+ <attribute name = "border-right-style" type = "fo:border_style_Type"/>
+ <attribute name = "border-right-width" type = "fo:border_top_width_Type"/>
+ <attribute name = "border-right-width.length" type = "fo:length_Type"/>
+ <attribute name = "border-right-width.conditionality" type = "fo:conditionality_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "Padding_Properties_List">
+ <attribute name = "padding" type = "fo:padding_before_Type"/>
+ <attribute name = "padding-before" type = "fo:padding_before_Type"/>
+ <attribute name = "padding-before.length" type = "fo:length_Type"/>
+ <attribute name = "padding-before.conditionality" type = "fo:conditionality_Type"/>
+ <attribute name = "padding-after" type = "fo:padding_before_Type"/>
+ <attribute name = "padding-after.length" type = "fo:length_Type"/>
+ <attribute name = "padding-after.conditionality" type = "fo:conditionality_Type"/>
+ <attribute name = "padding-start" type = "fo:padding_before_Type"/>
+ <attribute name = "padding-start.length" type = "fo:length_Type"/>
+ <attribute name = "padding-start.conditionality" type = "fo:conditionality_Type"/>
+ <attribute name = "padding-end" type = "fo:padding_before_Type"/>
+ <attribute name = "padding-end.length" type = "fo:length_Type"/>
+ <attribute name = "padding-end.conditionality" type = "fo:conditionality_Type"/>
+ <attribute name = "padding-top" type = "fo:padding_top_Type"/>
+ <attribute name = "padding-top.length" type = "fo:length_Type"/>
+ <attribute name = "padding-top.conditionality" type = "fo:conditionality_Type"/>
+ <attribute name = "padding-bottom" type = "fo:padding_top_Type"/>
+ <attribute name = "padding-bottom.length" type = "fo:length_Type"/>
+ <attribute name = "padding-bottom.conditionality" type = "fo:conditionality_Type"/>
+ <attribute name = "padding-left" type = "fo:padding_top_Type"/>
+ <attribute name = "padding-left.length" type = "fo:length_Type"/>
+ <attribute name = "padding-left.conditionality" type = "fo:conditionality_Type"/>
+ <attribute name = "padding-right" type = "fo:padding_top_Type"/>
+ <attribute name = "padding-right.length" type = "fo:length_Type"/>
+ <attribute name = "padding-right.conditionality" type = "fo:conditionality_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "Font_Properties_List_FOP">
+ <annotation>
+ <documentation>
+ Font properties are all inheritable
+ <attribute name = "font-family" type = "fo:family_name_Type"/>
+ <attribute name = "font-size" type = "fo:font_size_Type"/>
+ <attribute name = "font-style" type = "fo:font_style_Type"/>
+ <attribute name = "font-weight" type = "fo:font_weight_Type"/>
+ </documentation>
+ </annotation>
+ </attributeGroup>
+ <attributeGroup name = "Font_Properties_List_Not">
+ <annotation>
+ <documentation>
+ Font properties are all inheritable
+ <attribute name = "font" type = "xs:string"/>
+ <attribute name = "font-selection-strategy" type = "fo:font_selection_strategy_Type"/>
+ <attribute name = "font-size-adjust" type = "xs:string"/>
+ <attribute name = "font-stretch" type = "xs:string"/>
+ <attribute name = "font-variant" type = "fo:font_variant_Type"/>
+ </documentation>
+ </annotation>
+ </attributeGroup>
+ <attributeGroup name = "Font_Properties_List">
+ <attributeGroup ref = "fo:Font_Properties_List_FOP"/>
+ <attributeGroup ref = "fo:Font_Properties_List_Not"/>
+ </attributeGroup>
+ <attributeGroup name = "Hyphenation_Properties_List_FOP">
+ <annotation>
+ <documentation>
+ The hyphenation properties are all inheritable and so superceeded by that list
+ <attribute name = "country" type = "fo:country_Type"/>
+ <attribute name = "language" type = "fo:language_Type"/>
+ <attribute name = "hyphenate" type = "fo:hyphenate_Type"/>
+ <attribute name = "hyphenation-character" type = "fo:hyphenation_character_Type"/>
+ <attribute name = "hyphenation-push-character-count" type = "fo:integer_Type"/>
+ <attribute name = "hyphenation-remain-character-count" type = "fo:integer_Type"/>
+ </documentation>
+ </annotation>
+ </attributeGroup>
+ <attributeGroup name = "Hyphenation_Properties_List_Not">
+ <annotation>
+ <documentation>
+ The hyphenation properties are all inheritable and so superceeded by that list
+ <attribute name = "script" type = "xs:string"/>
+ </documentation>
+ </annotation>
+ </attributeGroup>
+ <attributeGroup name = "Hyphenation_Properties_List">
+ <attributeGroup ref = "fo:Hyphenation_Properties_List_FOP"/>
+ <attributeGroup ref = "fo:Hyphenation_Properties_List_Not"/>
+ </attributeGroup>
+ <attributeGroup name = "Margin_Properties_Basic_List">
+ <attribute name = "margin-top" type = "fo:margin_width_Type"/>
+ <attribute name = "margin-bottom" type = "fo:margin_width_Type"/>
+ <attribute name = "margin-left" type = "fo:margin_width_Type"/>
+ <attribute name = "margin-right" type = "fo:margin_width_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "Margin_Properties_vertical_Space_List_FOP">
+ <annotation>
+ <documentation>
+ Indent properties are inheritable
+ <attribute name = "start-indent" type = "fo:start_indent_Type"/>
+ <attribute name = "end-indent" type = "fo:end_indent_Type"/>
+ </documentation>
+ </annotation>
+ <attribute name = "space-before.optimum" type = "fo:space_before_optimum_Type"/>
+ <attribute name = "space-after.optimum" type = "fo:space_after_optimum_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "Margin_Properties_vertical_Space_List_Not">
+ <attribute name = "space-before" type = "fo:space_Type"/>
+ <attribute name = "space-before.minimum" type = "fo:length_Type"/>
+ <attribute name = "space-before.maximum" type = "fo:length_Type"/>
+ <attribute name = "space-before.conditionality" type = "fo:conditionality_Type"/>
+ <attribute name = "space-before.precedence" type = "fo:integer_Force_Type"/>
+ <attribute name = "space-after" type = "fo:space_Type"/>
+ <attribute name = "space-after.minimum" type = "fo:length_Type"/>
+ <attribute name = "space-after.maximum" type = "fo:length_Type"/>
+ <attribute name = "space-after.conditionality" type = "fo:conditionality_Type"/>
+ <attribute name = "space-after.precedence" type = "fo:integer_Force_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "Margin_Properties_vertical_Space_List">
+ <attributeGroup ref = "fo:Margin_Properties_vertical_Space_List_FOP"/>
+ <attributeGroup ref = "fo:Margin_Properties_vertical_Space_List_Not"/>
+ </attributeGroup>
+ <attributeGroup name = "Margin_Properties_Block_List">
+ <attributeGroup ref = "fo:Margin_Properties_Basic_List"/>
+ <attributeGroup ref = "fo:Margin_Properties_vertical_Space_List"/>
+ </attributeGroup>
+ <attributeGroup name = "Margin_Properties_Inline_List">
+ <attributeGroup ref = "fo:Margin_Properties_Basic_List"/>
+ <attributeGroup ref = "fo:Margin_Properties_Horizontal_Space_List"/>
+ </attributeGroup>
+ <attributeGroup name = "Margin_Properties_Horizontal_Space_List_FOP"/>
+ <attributeGroup name = "Margin_Properties_Horizontal_Space_List_Not">
+ <attribute name = "space-start" type = "fo:space_start_Type"/>
+ <attribute name = "space-start.minimum" type = "fo:length_Type"/>
+ <attribute name = "space-start.optimum" type = "fo:length_Type"/>
+ <attribute name = "space-start.maximum" type = "fo:length_Type"/>
+ <attribute name = "space-start.conditionality" type = "fo:conditionality_Type"/>
+ <attribute name = "space-start.precedence" type = "fo:integer_Force_Type"/>
+ <attribute name = "space-end" type = "fo:space_start_Type"/>
+ <attribute name = "space-end.minimum" type = "fo:length_Type"/>
+ <attribute name = "space-end.optimum" type = "fo:length_Type"/>
+ <attribute name = "space-end.maximum" type = "fo:length_Type"/>
+ <attribute name = "space-end.conditionality" type = "fo:conditionality_Type"/>
+ <attribute name = "space-end.precedence" type = "fo:integer_Force_Type"/>
+ </attributeGroup>
+ <attributeGroup name = "Margin_Properties_Horizontal_Space_List">
+ <attributeGroup ref = "fo:Margin_Properties_Horizontal_Space_List_FOP"/>
+ <attributeGroup ref = "fo:Margin_Properties_Horizontal_Space_List_Not"/>
+ </attributeGroup>
+
+ <annotation>
+ <documentation>
+ Simple Types definitions
+ </documentation>
+ </annotation>
+ <simpleType name = "integer_Type">
+ <annotation>
+ <documentation>
+ A signed integer value which consists of an optional '+' or '-' character followed by a sequence of digits. A property may define additional constraints on the value.
+ <enumeration value = "-3"/>
+ <enumeration value = "0"/>
+ <enumeration value = "1"/>
+ <enumeration value = "+3"/>
+ <enumeration value = "5"/>
+ </documentation>
+ </annotation>
+ <restriction base = "NMTOKEN">
+ <pattern value = "[-+]?\d+"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "number_Type">
+ <annotation>
+ <documentation>
+ A signed real number which consists of an optional '+' or '-' character followed by a sequence of digits followed by an optional '.' character and sequence of digits. A property may define additional constraints on the value.
+ <enumeration value = "-2.4"/>
+ <enumeration value = "2"/>
+ <enumeration value = "4"/>
+ </documentation>
+ </annotation>
+ <restriction base = "string">
+ <pattern value = "[-+]?\d+\.\d*"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "length_Type">
+ <annotation>
+ <documentation>
+ A signed length value where a 'length' is a real number plus a unit qualification. A property may define additional constraints on the value.
+ <enumeration value = "1px"/>
+ <enumeration value = "1pt"/>
+ <enumeration value = "1mm"/>
+ <enumeration value = "1cm"/>
+ <enumeration value = "1in"/>
+ <enumeration value = "1em"/>
+ </documentation>
+ </annotation>
+ <restriction base = "NMTOKEN">
+ <pattern value = "[+-]?\d+\.?\d*(px|pt|mm|cm|in|em)"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "length_range_Type">
+ <annotation>
+ <documentation>
+ A compound datatype, with components: minimum, optimum, maximum. Each component is a <length xmlns=""/>. If "minimum" is greater than optimum, it will be treated as if it had been set to "optimum". If "maximum" is less than optimum, it will be treated as if it had been set to "optimum". A property may define additional constraints on the values.
+ <enumeration value = "1mm 2mm 3mm"/>
+ <enumeration value = "2mm 2mm 1mm"/>
+ <enumeration value = "3mm 2mm 1mm"/>
+ </documentation>
+ </annotation>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base = "fo:length_Type"/>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ <xs:minLength value = "3" />
+ <xs:maxLength value = "3" />
+ </xs:restriction>
+ </simpleType>
+ <simpleType name = "length_conditional_Type">
+ <annotation>
+ <documentation>
+ A compound datatype, with components: length, conditionality. The length component is a <length xmlns=""/>. The conditionality component is either "discard" or "retain". A property may define additional constraints on the values.
+ <enumeration value = "1mm retain"/>
+ <enumeration value = "1mm discard"/>
+ <enumeration value = "1px retain"/>
+ <enumeration value = "1px discard"/>
+ <enumeration value = "1pt retain"/>
+ <enumeration value = "1pt discard"/>
+ <enumeration value = "1mm retain"/>
+ <enumeration value = "1mm discard"/>
+ <enumeration value = "1cm retain"/>
+ <enumeration value = "1cm discard"/>
+ <enumeration value = "1in retain"/>
+ <enumeration value = "1in discard"/>
+ <enumeration value = "1em retain"/>
+ <enumeration value = "1em discard"/>
+ </documentation>
+ </annotation>
+ <restriction base = "string">
+ <pattern value = "\+?\d+\.?\d*(px|pt|mm|cm|in|em) (retain|discard)"/>
+ </restriction>
+ </simpleType>
+ <xs:simpleType name = "length_bp_ip_direction_Type">
+ <annotation>
+ <documentation>
+ A compound datatype, with components: block-progression-direction, and inline-progression-direction. Each component is a <length xmlns=""/>. A property may define additional constraints on the values.
+ <enumeration value = "1mm 2mm"/>
+ <enumeration value = "2mm"/>
+ <enumeration value = "3mm 2mm"/>
+ </documentation>
+ </annotation>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base = "fo:length_Type"/>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ <xs:minLength value = "1" />
+ <xs:maxLength value = "2" />
+ </xs:restriction>
+ </xs:simpleType>
+ <simpleType name = "space_Type">
+ <annotation>
+ <documentation>
+ A compound datatype, with components: minimum, optimum, maximum, precedence, and conditionality. The minimum, optimum, and maximum components are <length xmlns=""/>s. The precedence component is either "force" or an <integer/>. The conditionality component is either "discard" or "retain". If "minimum" is greater than optimum, it will be treated as if it had been set to "optimum". If "maximum" is less than optimum, it will be treated as if it had been set to "optimum".
+ <enumeration value = "1mm 2mm 3mm force retain"/>
+ <enumeration value = "1mm 2mm 3mm force discard"/>
+ <enumeration value = "1mm 2mm 3mm 3 retain"/>
+ </documentation>
+ </annotation>
+ <restriction base = "string">
+ <pattern value = "([ ]?\+?\d+\.?\d*(px|pt|mm|cm|in|em)){1,3}( \+?\d+| force)?( retain| discard)?"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "angle_Type">
+ <annotation>
+ <documentation>
+ A representation of an angle consisting of an optional '+' or '-' character immediately followed by a <number/> immediately followed by an angle unit identifier. Angle unit identifiers are: 'deg' (for degrees), 'grad' (for grads), and 'rad' (for radians). The specified values are normalized to the range 0deg to 360deg. A property may define additional constraints on the value.
+ <enumeration value = "3deg"/>
+ <enumeration value = "45deg"/>
+ <enumeration value = "-12deg"/>
+ </documentation>
+ </annotation>
+ <restriction base = "string">
+ <pattern value = "[-+]?[1-3]?\d?\d?\.?\d*(deg|grad|rad)"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "percentage_Type">
+ <annotation>
+ <documentation>
+ A signed real percentage which consists of an optional '+' or '-' character followed by a sequence of digits followed by an optional '.' character and sequence of digits followed by '%'. A property may define additional constraints on the value.
+ <enumeration value = "10%"/>
+ <enumeration value = "30%"/>
+ <enumeration value = "100%"/>
+ </documentation>
+ </annotation>
+ <restriction base = "string">
+ <pattern value = "[-+]?\d+\.?\d*%"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "character_Type">
+ <annotation>
+ <documentation>
+ <enumeration value = "-"/>
+ <enumeration value = "h"/>
+ <enumeration value = "e"/>
+ <enumeration value = "l"/>
+ <enumeration value = "p"/>
+ <enumeration value = "o"/>
+ </documentation>
+ </annotation>
+ <restriction base = "string">
+ <pattern value = "."/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "name_Type">
+ <annotation>
+ <documentation>
+ A string of characters representing a name. It must conform to the definition of an NCName in
+ </documentation>
+ </annotation>
+ <restriction base = "string">
+ <pattern value = ".*"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "family_name_Type">
+ <annotation>
+ <documentation>
+ A string of characters identifying a font.
+ <enumeration value = "serif"/>
+ <enumeration value = "sans-serif"/>
+ <enumeration value = "Arial"/>
+ <enumeration value = "Times"/>
+ <enumeration value = "Courier"/>
+ <enumeration value = "Zapf Dingbats"/>
+ <enumeration value = "code39"/>
+ <enumeration value = "cyberbit"/>
+ <enumeration value = "Edwardian Script ITC"/>
+ <enumeration value = "Viner Hand ITC"/>
+ <enumeration value = "Georgia"/>
+ <enumeration value = "Bookman Old Style"/>
+ <enumeration value = "Book Antiqua"/>
+ </documentation>
+ </annotation>
+ <restriction base = "string">
+ <pattern value = ".*"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "color_Type">
+ <annotation>
+ <documentation>
+ Either a string of characters representing a keyword or a color function defined in . The list of keyword color names is: aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, and yellow.
+ <enumeration value = "red"/>
+ <enumeration value = "blue"/>
+ <enumeration value = "yellow"/>
+ <enumeration value = "green"/>
+ </documentation>
+ </annotation>
+ <union memberTypes = "fo:color_Hex_Type fo:color_Name_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "proportional_column_width_Type">
+ <annotation>
+ <documentation>
+ The function proportional-column-width(N[0])
+ This returns a width as a fraction of the available width as ( N[0] / sum1 ) * available space
+ The parent table must have width="x" and table-layout="fixed"
+ <enumeration value = "proportional-column-width(Number)"/>
+ </documentation>
+ </annotation>
+ <restriction base = "string">
+ <pattern value = "proportional-column-width\(\d+\)"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "column_width_Type">
+ <annotation>
+ <documentation>
+ <length xmlns=""/>, <percentage/>, <function>proportional-column-width</function>, or <function>common-functions</function>
+ <enumeration value = "20mm"/>
+ <enumeration value = "15%"/>
+ </documentation>
+ </annotation>
+ <union memberTypes = "fo:length_percentage_Type fo:proportional_column_width_Type"/>
+ </simpleType>
+ <annotation>
+ <documentation>
+ <script/> A string of characters conforming to an ISO 15924 script code.
+ </documentation>
+ </annotation>
+ <annotation>
+ <documentation>
+ <id/> A string of characters conforming to the definition of an NCName in and is unique within the stylesheet.
+ </documentation>
+ </annotation>
+ <annotation>
+ <documentation>
+ <idRef/> A string of characters conforming to the definition of an NCName in and that matches an ID property value used within the stylesheet.
+ </documentation>
+ </annotation>
+ <annotation>
+ <documentation>
+ <uri-specification/> A sequence of characters that is "url(", followed by optional white space, followed by an optional single quote (') or double quote (") character, followed by a URI reference as defined in , followed by an optional single quote (') or double quote (") character, followed by optional white space, followed by ")". The two quote characters must be the same and must both be present or absent. If the URI reference contains a single quote, the two quote characters must be present and be double quotes.
+ </documentation>
+ </annotation>
+ <annotation>
+ <documentation>
+ <time/> A <number/> immediately followed by a time unit identifier. Time unit identifiers are: 'ms' (for milliseconds) and 's' (for seconds).
+ </documentation>
+ </annotation>
+ <annotation>
+ <documentation>
+ <frequency/> A <number/> immediately followed by a frequency unit identifier. Frequency unit identifiers are: 'Hz' (for Hertz) and 'kHz' (for kilo Hertz).
+ </documentation>
+ </annotation>
+ <annotation>
+ <documentation>
+ <generic-family/> The following generic families are defined: "serif", "sans-serif", "cursive", "fantasy", and "monospace". Please see the section on generic font families for descriptions of these families. Generic font family names are keywords, and therefore must not be quoted.
+ </documentation>
+ </annotation>
+ <simpleType name = "absolute_size_Type">
+ <annotation>
+ <documentation>
+ An <absolute-size/> keyword refers to an entry in a table of font sizes computed and kept by the user agent. Possible values are: [ xx-small | x-small | small | medium | large | x-large | xx-large ] On a computer screen a scaling factor of 1.2 is suggested between adjacent indexes; if the "medium" font is 12pt, the "large" font could be 14.4pt. Different media may need different scaling factors. Also, the user agent should take the quality and availability of fonts into account when computing the table. The table may be different from one font family to another. Note. In CSS1, the suggested scaling factor between adjacent indexes was 1.5 which user experience proved to be too large.
+ </documentation>
+ </annotation>
+ <restriction base = "NMTOKEN">
+ <enumeration value = "xx-small"/>
+ <enumeration value = "x-small"/>
+ <enumeration value = "small"/>
+ <enumeration value = "medium"/>
+ <enumeration value = "large"/>
+ <enumeration value = "x-large"/>
+ <enumeration value = "xx-large"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "relative_size_Type">
+ <annotation>
+ <documentation>
+ A <relative-size/> keyword is interpreted relative to the table of font sizes and the font size of the parent element. Possible values are: [ larger | smaller ] For example, if the parent element has a font size of "medium", a value of "larger" will make the font size of the current element be "large". If the parent element's size is not close to a table entry, the user agent is free to interpolate between table entries or round off to the closest one. The user agent may have to extrapolate table values if the numerical value goes beyond the keywords.
+ </documentation>
+ </annotation>
+ <restriction base = "NMTOKEN">
+ <enumeration value = "larger"/>
+ <enumeration value = "smaller"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "clip_Type">
+ <annotation>
+ <documentation>
+ shape_Type In CSS2, the only valid <shape/> value is: rect (<top/>, <right/>, <bottom/>, <left/>) where <top/>, <bottom/> <right/>, and <left/> specify offsets from the respective sides of the box. <top/>, <right/>, <bottom/>, and <left/> may either have a <length xmlns=""/> value or "auto". Negative lengths are permitted. The value "auto" means that a given edge of the clipping region will be the same as the edge of the element's generated box (i.e., "auto" means the same as "0".) When coordinates are rounded to pixel coordinates, care should be taken that no pixels remain visible when <left/> + <right/> is equal to the element's width (or <top/> + <bottom/> equals the element's height), and conversely that no pixels remain hidden when these values are 0.
+ </documentation>
+ </annotation>
+ <restriction base = "string">
+ <annotation>
+ <documentation>
+ length_Type{1,2}
+ </documentation>
+ </annotation>
+ <pattern value = "(rect\((\+?\d+\.?\d*(px|pt|mm|cm|in|em)|auto),(\+?\d+\.?\d*(px|pt|mm|cm|in|em)|auto),(\+?\d+\.?\d*(px|pt|mm|cm|in|em)|auto),(\+?\d+\.?\d*(px|pt|mm|cm|in|em)|auto)\)|auto|inherit)"/>
+ </restriction>
+ </simpleType>
+
+ <simpleType name = "border_side_Type">
+ <annotation>
+ <documentation>
+ "fo:width_Type fo:border_style_Type fo:color_Type"
+ <enumeration value="thin solid red"/>
+ <enumeration value="medium solid black"/>
+ <enumeration value="thick solid blue"/>
+ </documentation>
+ </annotation>
+ <restriction base = "string">
+ <pattern value = "(thin|medium|thick) (none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset) ([a-z]{3,16}|#[0-9A-F]{6})"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "border_margin_width_Type">
+ <annotation>
+ <documentation>
+ "fo:width_Type{1,4} fo:inherit_Type"
+ <enumeration value = "none"/>
+ <enumeration value = "thin"/>
+ <enumeration value = "medium"/>
+ <enumeration value = "thick"/>
+ <enumeration value = "thick thin medium none"/>
+ </documentation>
+ </annotation>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <union memberTypes = "fo:width_Type fo:positive_length_Type"/>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ <xs:minLength value = "1" />
+ <xs:maxLength value = "4" />
+ </xs:restriction>
+ </simpleType>
+ <simpleType name = "border_multi_style_Type" >
+ <annotation>
+ <documentation>
+ "fo:border_style_Type{1,4} fo:inherit_Type"
+ <enumeration value = "none"/>
+ <enumeration value = "hidden"/>
+ <enumeration value = "dotted"/>
+ <enumeration value = "dashed"/>
+ <enumeration value = "solid"/>
+ <enumeration value = "double"/>
+ <enumeration value = "groove"/>
+ <enumeration value = "ridge"/>
+ <enumeration value = "inset"/>
+ <enumeration value = "outset"/>
+ <enumeration value = "solid dashed ridge groove"/>
+ </documentation>
+ </annotation>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base = "fo:border_style_Type"/>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ <xs:minLength value = "1" />
+ <xs:maxLength value = "4" />
+ </xs:restriction>
+ </simpleType>
+ <simpleType name = "border_color_Type" >
+ <annotation>
+ <documentation>
+ "fo:background_color_Type{1,4}"
+ <enumeration value="red"/>
+ <enumeration value="green"/>
+ <enumeration value="blue red yellow"/>
+ <enumeration value="black"/>
+ <enumeration value="black red yellow green"/>
+ <enumeration value="silver black"/>
+ </documentation>
+ </annotation>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base = "fo:color_Type"/>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ <xs:minLength value = "1" />
+ <xs:maxLength value = "4" />
+ </xs:restriction>
+ </simpleType>
+ <simpleType name = "max_width_Type">
+ <annotation>
+ <documentation>
+ <enumeration value="100%"/>
+ <enumeration value="160mm"/>
+ </documentation>
+ </annotation>
+ <union memberTypes = "fo:length_Type fo:percentage_Type fo:none_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "background_Type">
+ <union memberTypes = "fo:background_color_Type fo:background_image_Type fo:background_repeat_Type fo:background_attachment_Type fo:background_position_Type"/>
+ </simpleType>
+ <simpleType name = "background_position_Type">
+ <union memberTypes = "fo:background_position_percentage_Type fo:background_position_length_Type fo:background_position_base_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "background_position_percentage_Type">
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base = "fo:percentage_Type"/>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ <xs:minLength value = "1" />
+ <xs:maxLength value = "2" />
+ </xs:restriction>
+ </simpleType>
+ <simpleType name = "background_position_length_Type">
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base = "fo:length_Type"/>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ <xs:minLength value = "1" />
+ <xs:maxLength value = "2" />
+ </xs:restriction>
+ </simpleType>
+ <simpleType name = "background_position_base_Type">
+ <restriction base = "string">
+ <enumeration value = "top left"/>
+ <enumeration value = "top center"/>
+ <enumeration value = "top right"/>
+ <enumeration value = "center left"/>
+ <enumeration value = "center center"/>
+ <enumeration value = "center right"/>
+ <enumeration value = "bottom left"/>
+ <enumeration value = "bottom center"/>
+ <enumeration value = "bottom right"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "size_Type">
+ <union memberTypes = "fo:background_position_length_Type fo:size_base_Type"/>
+ </simpleType>
+ <simpleType name = "size_base_Type">
+ <restriction base = "string">
+ <enumeration value = "auto"/>
+ <enumeration value = "landscape"/>
+ <enumeration value = "portrait"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "vertical_align_base_Type">
+ <restriction base = "string">
+ <enumeration value = "baseline"/>
+ <enumeration value = "middle"/>
+ <enumeration value = "sub"/>
+ <enumeration value = "super"/>
+ <enumeration value = "text-top"/>
+ <enumeration value = "text-bottom"/>
+ <enumeration value = "top"/>
+ <enumeration value = "bottom"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "vertical_align_Type">
+ <union memberTypes = "fo:vertical_align_base_Type fo:percentage_Type fo:length_Type"/>
+ </simpleType>
+ <simpleType name = "leader_length_Type">
+ <annotation>
+ <documentation>
+ <enumeration value = "50% 100% 100%"/>
+ </documentation>
+ </annotation>
+ <union memberTypes = "fo:length_range_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "letter_spacing_Type">
+ <union memberTypes = "fo:normal_Type fo:length_Type fo:space_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "font_size_adjust_Type">
+ <union memberTypes = "fo:number_Type fo:none_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "space_start_Type">
+ <union memberTypes = "fo:space_Type fo:percentage_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "normal_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "normal"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "background_attachment_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "scroll"/>
+ <enumeration value = "fixed"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "background_repeat_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "repeat"/>
+ <enumeration value = "repeat-x"/>
+ <enumeration value = "repeat-y"/>
+ <enumeration value = "no-repeat"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "speech_rate_base_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "x-slow"/>
+ <enumeration value = "slow"/>
+ <enumeration value = "medium"/>
+ <enumeration value = "fast"/>
+ <enumeration value = "x-fast"/>
+ <enumeration value = "faster"/>
+ <enumeration value = "slower"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "speech_rate_Type">
+ <union memberTypes = "fo:speech_rate_base_Type fo:integer_Type"/>
+ </simpleType>
+ <simpleType name = "speak_numeral_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "digits"/>
+ <enumeration value = "continuous"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "font_variant_Type">
+ <restriction base = "string">
+ <enumeration value = "normal"/>
+ <enumeration value = "small-caps"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "line_height_Type">
+ <union memberTypes = "fo:normal_Type fo:length_Type fo:integer_Type fo:percentage_Type fo:space_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "text_shadow_Type">
+ <union memberTypes = "fo:none_Type fo:color_Type fo:length_range_Type"/>
+ </simpleType>
+ <simpleType name = "height_Type">
+ <union memberTypes = "fo:length_Type fo:percentage_Type fo:auto_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "hyphenation_character_Type">
+ <union memberTypes = "fo:character_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "content_height_Type">
+ <union memberTypes = "fo:auto_Type fo:scale_to_fit_Type fo:length_Type fo:percentage_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "scale_to_fit_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "scale-to-fit"/>
+ </restriction>
+ </simpleType>
+
+ <simpleType name = "font_weight_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "normal"/>
+ <enumeration value = "bold">
+ <annotation>
+ <documentation>
+ <fop_result>heavier than no value</fop_result>
+ </documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value = "bolder">
+ <annotation>
+ <documentation>
+ <fop_result>lighter than normal</fop_result> <fop_fail>unknown font</fop_fail>
+ </documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value = "lighter">
+ <annotation>
+ <documentation>
+ <fop_result>lighter than normal</fop_result> <fop_fail>unknown font</fop_fail>
+ </documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value = "100">
+ <annotation>
+ <documentation>
+ <fop_result>same as normal</fop_result>
+ </documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value = "200">
+ <annotation>
+ <documentation>
+ <fop_result>same as normal</fop_result>
+ </documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value = "300">
+ <annotation>
+ <documentation>
+ <fop_result>same as normal</fop_result>
+ </documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value = "400">
+ <annotation>
+ <documentation>
+ <fop_result>same as normal</fop_result>
+ </documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value = "500">
+ <annotation>
+ <documentation>
+ <fop_result>same as normal</fop_result>
+ </documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value = "600">
+ <annotation>
+ <documentation>
+ <fop_result>same as normal</fop_result>
+ </documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value = "700">
+ <annotation>
+ <documentation>
+ <fop_result>same as bold</fop_result>
+ </documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value = "800">
+ <annotation>
+ <documentation>
+ <fop_result>same as bold</fop_result>
+ </documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value = "900">
+ <annotation>
+ <documentation>
+ <fop_result>same as bold</fop_result>
+ </documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value = "inherit">
+ <annotation>
+ <documentation>
+ <fop_result>lighter than normal</fop_result> <fop_fail>unknown font</fop_fail>
+ </documentation>
+ </annotation>
+ </enumeration>
+ </restriction>
+ </simpleType>
+ <simpleType name = "font_style_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "normal"/>
+ <enumeration value = "italic"/>
+ <enumeration value = "oblique"/>
+ <enumeration value = "backslant">
+ <annotation>
+ <documentation>
+ <fop_fail>unknown font</fop_fail>
+ </documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value = "inherit">
+ <annotation>
+ <documentation>
+ <fop_fail>unknown font</fop_fail>
+ </documentation>
+ </annotation>
+ </enumeration>
+ </restriction>
+ </simpleType>
+ <simpleType name = "page_break_inside_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "auto"/>
+ <enumeration value = "avoid"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "page_break_after_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "auto"/>
+ <enumeration value = "always"/>
+ <enumeration value = "avoid"/>
+ <enumeration value = "left"/>
+ <enumeration value = "right"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "white_space_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "normal"/>
+ <enumeration value = "pre"/>
+ <enumeration value = "nowrap"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "show_destination_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "replace"/>
+ <enumeration value = "new"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "indicate_destination_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "true"/>
+ <enumeration value = "false"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "speak_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "normal"/>
+ <enumeration value = "none"/>
+ <enumeration value = "spell-out"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "relative_align_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "before"/>
+ <enumeration value = "baseline"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "empty_cells_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "show"/>
+ <enumeration value = "hide"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "ends_row_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "true"/>
+ <enumeration value = "false"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "starts_row_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "true"/>
+ <enumeration value = "false"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "position_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "static"/>
+ <enumeration value = "relative"/>
+ <enumeration value = "absolute"/>
+ <enumeration value = "fixed"/>
+ <enumeration value = "inherit">
+ <annotation>
+ <documentation>
+ <fop_fail>Unknown enumerated value</fop_fail>
+ </documentation>
+ </annotation>
+ </enumeration>
+ </restriction>
+ </simpleType>
+ <simpleType name = "conditionality_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "retain"/>
+ <enumeration value = "discard"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "keep_compound_Type">
+ <annotation>
+ <documentation>
+ A compound datatype, with components: within-line, within-column, within-page. Each component is a <keep/>.
+ <enumeration value = "2 auto always"/>
+ <enumeration value = "auto"/>
+ <enumeration value = "always"/>
+ </documentation>
+ </annotation>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base = "fo:keep_integer_Type"/>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ <xs:minLength value = "1" />
+ <xs:maxLength value = "3" />
+ </xs:restriction>
+ </simpleType>
+ <simpleType name = "keep_integer_Type">
+ <annotation>
+ <documentation>
+ <enumeration value = "2"/>
+ <enumeration value = "5"/>
+ <enumeration value = "10"/>
+ <enumeration value = "auto"/>
+ <enumeration value = "always"/>
+ </documentation>
+ </annotation>
+ <restriction base = "NMTOKEN">
+ <pattern value = "(\+?\d+|auto|always)"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "letter_value_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "auto"/>
+ <enumeration value = "alphabetic"/>
+ <enumeration value = "traditional"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "alignment_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "baseline"/>
+ <enumeration value = "before-edge"/>
+ <enumeration value = "text-before-edge"/>
+ <enumeration value = "middle"/>
+ <enumeration value = "central"/>
+ <enumeration value = "after-edge"/>
+ <enumeration value = "text-after-edge"/>
+ <enumeration value = "ideographic"/>
+ <enumeration value = "alphabetic"/>
+ <enumeration value = "hanging"/>
+ <enumeration value = "mathematical"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "box_alignment_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "top"/>
+ <enumeration value = "text-top"/>
+ <enumeration value = "bottom"/>
+ <enumeration value = "text-bottom"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "breaks_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "inherit">
+ <annotation>
+ <documentation>
+ <fop_fail>Unknown enumerated value</fop_fail>
+ </documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value = "auto"/>
+ <enumeration value = "column"/>
+ <enumeration value = "page"/>
+ <enumeration value = "even-page"/>
+ <enumeration value = "odd-page"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "force_page_count_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "auto"/>
+ <enumeration value = "even"/>
+ <enumeration value = "odd"/>
+ <enumeration value = "end-on-even"/>
+ <enumeration value = "end-on-odd"/>
+ <enumeration value = "no-force"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "table_layout_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "auto"/>
+ <enumeration value = "fixed"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "scaling_method_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "auto"/>
+ <enumeration value = "integer-pixels"/>
+ <enumeration value = "resample-any-method"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "displace_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "inherit"/>
+ <enumeration value = "auto"/>
+ <enumeration value = "none"/>
+ <enumeration value = "line"/>
+ <enumeration value = "indent"/>
+ <enumeration value = "block"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "media_usage_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "auto"/>
+ <enumeration value = "paginate"/>
+ <enumeration value = "bounded-in-one-dimension"/>
+ <enumeration value = "unbounded"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "rendering_intent_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "auto"/>
+ <enumeration value = "perceptual"/>
+ <enumeration value = "relative-colorimetric"/>
+ <enumeration value = "saturation"/>
+ <enumeration value = "absolute-colorimetric"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "hyphenate_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "false"/>
+ <enumeration value = "true"/>
+ <enumeration value = "inherit">
+ <annotation>
+ <documentation>
+ <fop_fail>Unknown enumerated value</fop_fail>
+ </documentation>
+ </annotation>
+ </enumeration>
+ </restriction>
+ </simpleType>
+ <simpleType name = "suppress_at_line_break_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "auto"/>
+ <enumeration value = "suppress"/>
+ <enumeration value = "retain"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "treat_as_word_space_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "auto"/>
+ <enumeration value = "true"/>
+ <enumeration value = "false"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "dominant_baseline_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "auto"/>
+ <enumeration value = "use-script"/>
+ <enumeration value = "no-change"/>
+ <enumeration value = "reset-size"/>
+ <enumeration value = "ideographic"/>
+ <enumeration value = "alphabetic"/>
+ <enumeration value = "hanging"/>
+ <enumeration value = "mathematical"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "orientation_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "inherit"/>
+ <enumeration value = "0"/>
+ <enumeration value = "90"/>
+ <enumeration value = "180"/>
+ <enumeration value = "270"/>
+ <enumeration value = "-90"/>
+ <enumeration value = "-180"/>
+ <enumeration value = "-270"/>
+ <enumeration value = "0deg"/>
+ <enumeration value = "90deg"/>
+ <enumeration value = "180deg"/>
+ <enumeration value = "270deg"/>
+ <enumeration value = "-90deg"/>
+ <enumeration value = "-180deg"/>
+ <enumeration value = "-270deg"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "measurement_Type">
+ <annotation>
+ <documentation>
+ Here to document the acceptable measurements
+ </documentation>
+ </annotation>
+ <restriction base = "string">
+ <enumeration value = "px"/>
+ <enumeration value = "pt"/>
+ <enumeration value = "mm"/>
+ <enumeration value = "in"/>
+ <enumeration value = "cm"/>
+ <enumeration value = "em"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "positive_length_Type">
+ <restriction base = "NMTOKEN">
+ <pattern value = "\+?\d+\.?\d*(px|pt|mm|cm|in|em)"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "negative_length_Type">
+ <restriction base = "NMTOKEN">
+ <pattern value = "-\d+\.?\d*(px|pt|mm|cm|in|em)"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "integer_Force_Type">
+ <restriction base = "string">
+ <pattern value = "([0-9]+|force)"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "padding_top_Type">
+ <union memberTypes = "fo:width_Type fo:length_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "padding_before_Type">
+ <union memberTypes = "fo:width_Type fo:length_Type fo:length_conditional_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "country_Type">
+ <annotation>
+ <documentation>
+ A string of characters conforming to an ISO 3166 country code.
+ </documentation>
+ </annotation>
+ <restriction base = "NMTOKEN">
+ <enumeration value = "none"/>
+ <enumeration value = "inherit"/>
+ <enumeration value = "AF"><annotation><documentation> country-name = "AFGHANISTAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AL"><annotation><documentation> country-name = "ALBANIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "DZ"><annotation><documentation> country-name = "ALGERIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AS"><annotation><documentation> country-name = "AMERICANSAMOA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AD"><annotation><documentation> country-name = "ANDORRA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AO"><annotation><documentation> country-name = "ANGOLA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AI"><annotation><documentation> country-name = "ANGUILLA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AQ"><annotation><documentation> country-name = "ANTARCTICA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AG"><annotation><documentation> country-name = "ANTIGUAANDBARBUDA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AR"><annotation><documentation> country-name = "ARGENTINA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AM"><annotation><documentation> country-name = "ARMENIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AW"><annotation><documentation> country-name = "ARUBA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AU"><annotation><documentation> country-name = "AUSTRALIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AT"><annotation><documentation> country-name = "AUSTRIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AZ"><annotation><documentation> country-name = "AZERBAIJAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BS"><annotation><documentation> country-name = "BAHAMAS"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BH"><annotation><documentation> country-name = "BAHRAIN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BD"><annotation><documentation> country-name = "BANGLADESH"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BB"><annotation><documentation> country-name = "BARBADOS"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BY"><annotation><documentation> country-name = "BELARUS"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BE"><annotation><documentation> country-name = "BELGIUM"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BZ"><annotation><documentation> country-name = "BELIZE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BJ"><annotation><documentation> country-name = "BENIN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BM"><annotation><documentation> country-name = "BERMUDA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BT"><annotation><documentation> country-name = "BHUTAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BO"><annotation><documentation> country-name = "BOLIVIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BA"><annotation><documentation> country-name = "BOSNIAANDHERZEGOVINA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BW"><annotation><documentation> country-name = "BOTSWANA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BV"><annotation><documentation> country-name = "BOUVETISLAND"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BR"><annotation><documentation> country-name = "BRAZIL"/ </documentation></annotation> </enumeration>
+ <enumeration value = "IO"><annotation><documentation> country-name = "BRITISHINDIANOCEANTERRITORY"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BN"><annotation><documentation> country-name = "BRUNEIDARUSSALAM"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BG"><annotation><documentation> country-name = "BULGARIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BF"><annotation><documentation> country-name = "BURKINAFASO"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BI"><annotation><documentation> country-name = "BURUNDI"/ </documentation></annotation> </enumeration>
+ <enumeration value = "KH"><annotation><documentation> country-name = "CAMBODIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CM"><annotation><documentation> country-name = "CAMEROON"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CA"><annotation><documentation> country-name = "CANADA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CV"><annotation><documentation> country-name = "CAPEVERDE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "KY"><annotation><documentation> country-name = "CAYMANISLANDS"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CF"><annotation><documentation> country-name = "CENTRALAFRICANREPUBLIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TD"><annotation><documentation> country-name = "CHAD"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CL"><annotation><documentation> country-name = "CHILE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CN"><annotation><documentation> country-name = "CHINA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CX"><annotation><documentation> country-name = "CHRISTMASISLAND"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CC"><annotation><documentation> country-name = "COCOS(KEELING)ISLANDS"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CO"><annotation><documentation> country-name = "COLOMBIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "KM"><annotation><documentation> country-name = "COMOROS"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CG"><annotation><documentation> country-name = "CONGO"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CD"><annotation><documentation> country-name = "CONGO,THEDEMOCRATICREPUBLICOFTHE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CK"><annotation><documentation> country-name = "COOKISLANDS"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CR"><annotation><documentation> country-name = "COSTARICA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CI"><annotation><documentation> country-name = "COTED'IVOIRE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "HR"><annotation><documentation> country-name = "CROATIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CU"><annotation><documentation> country-name = "CUBA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CY"><annotation><documentation> country-name = "CYPRUS"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CZ"><annotation><documentation> country-name = "CZECHREPUBLIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "DK"><annotation><documentation> country-name = "DENMARK"/ </documentation></annotation> </enumeration>
+ <enumeration value = "DJ"><annotation><documentation> country-name = "DJIBOUTI"/ </documentation></annotation> </enumeration>
+ <enumeration value = "DM"><annotation><documentation> country-name = "DOMINICA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "DO"><annotation><documentation> country-name = "DOMINICANREPUBLIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TP"><annotation><documentation> country-name = "EASTTIMOR"/ </documentation></annotation> </enumeration>
+ <enumeration value = "EC"><annotation><documentation> country-name = "ECUADOR"/ </documentation></annotation> </enumeration>
+ <enumeration value = "EG"><annotation><documentation> country-name = "EGYPT"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SV"><annotation><documentation> country-name = "ELSALVADOR"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GQ"><annotation><documentation> country-name = "EQUATORIALGUINEA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "ER"><annotation><documentation> country-name = "ERITREA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "EE"><annotation><documentation> country-name = "ESTONIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "ET"><annotation><documentation> country-name = "ETHIOPIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "FK"><annotation><documentation> country-name = "FALKLANDISLANDS(MALVINAS)"/ </documentation></annotation> </enumeration>
+ <enumeration value = "FO"><annotation><documentation> country-name = "FAROEISLANDS"/ </documentation></annotation> </enumeration>
+ <enumeration value = "FJ"><annotation><documentation> country-name = "FIJI"/ </documentation></annotation> </enumeration>
+ <enumeration value = "FI"><annotation><documentation> country-name = "FINLAND"/ </documentation></annotation> </enumeration>
+ <enumeration value = "FR"><annotation><documentation> country-name = "FRANCE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GF"><annotation><documentation> country-name = "FRENCHGUIANA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "PF"><annotation><documentation> country-name = "FRENCHPOLYNESIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TF"><annotation><documentation> country-name = "FRENCHSOUTHERNTERRITORIES"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GA"><annotation><documentation> country-name = "GABON"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GM"><annotation><documentation> country-name = "GAMBIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GE"><annotation><documentation> country-name = "GEORGIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "DE"><annotation><documentation> country-name = "GERMANY"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GH"><annotation><documentation> country-name = "GHANA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GI"><annotation><documentation> country-name = "GIBRALTAR"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GR"><annotation><documentation> country-name = "GREECE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GL"><annotation><documentation> country-name = "GREENLAND"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GD"><annotation><documentation> country-name = "GRENADA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GP"><annotation><documentation> country-name = "GUADELOUPE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GU"><annotation><documentation> country-name = "GUAM"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GT"><annotation><documentation> country-name = "GUATEMALA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GN"><annotation><documentation> country-name = "GUINEA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GW"><annotation><documentation> country-name = "GUINEA-BISSAU"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GY"><annotation><documentation> country-name = "GUYANA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "HT"><annotation><documentation> country-name = "HAITI"/ </documentation></annotation> </enumeration>
+ <enumeration value = "HM"><annotation><documentation> country-name = "HEARDISLANDANDMCDONALDISLANDS"/ </documentation></annotation> </enumeration>
+ <enumeration value = "VA"><annotation><documentation> country-name = "HOLYSEE(VATICANCITYSTATE)"/ </documentation></annotation> </enumeration>
+ <enumeration value = "HN"><annotation><documentation> country-name = "HONDURAS"/ </documentation></annotation> </enumeration>
+ <enumeration value = "HK"><annotation><documentation> country-name = "HONGKONG"/ </documentation></annotation> </enumeration>
+ <enumeration value = "HU"><annotation><documentation> country-name = "HUNGARY"/ </documentation></annotation> </enumeration>
+ <enumeration value = "IS"><annotation><documentation> country-name = "ICELAND"/ </documentation></annotation> </enumeration>
+ <enumeration value = "IN"><annotation><documentation> country-name = "INDIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "ID"><annotation><documentation> country-name = "INDONESIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "IR"><annotation><documentation> country-name = "IRAN,ISLAMICREPUBLICOF"/ </documentation></annotation> </enumeration>
+ <enumeration value = "IQ"><annotation><documentation> country-name = "IRAQ"/ </documentation></annotation> </enumeration>
+ <enumeration value = "IE"><annotation><documentation> country-name = "IRELAND"/ </documentation></annotation> </enumeration>
+ <enumeration value = "IL"><annotation><documentation> country-name = "ISRAEL"/ </documentation></annotation> </enumeration>
+ <enumeration value = "IT"><annotation><documentation> country-name = "ITALY"/ </documentation></annotation> </enumeration>
+ <enumeration value = "JM"><annotation><documentation> country-name = "JAMAICA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "JP"><annotation><documentation> country-name = "JAPAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "JO"><annotation><documentation> country-name = "JORDAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "KZ"><annotation><documentation> country-name = "KAZAKSTAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "KE"><annotation><documentation> country-name = "KENYA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "KI"><annotation><documentation> country-name = "KIRIBATI"/ </documentation></annotation> </enumeration>
+ <enumeration value = "KP"><annotation><documentation> country-name = "KOREA,DEMOCRATICPEOPLE'SREPUBLICOF"/ </documentation></annotation> </enumeration>
+ <enumeration value = "KR"><annotation><documentation> country-name = "KOREA,REPUBLICOF"/ </documentation></annotation> </enumeration>
+ <enumeration value = "KW"><annotation><documentation> country-name = "KUWAIT"/ </documentation></annotation> </enumeration>
+ <enumeration value = "KG"><annotation><documentation> country-name = "KYRGYZSTAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "LA"><annotation><documentation> country-name = "LAOPEOPLE'SDEMOCRATICREPUBLIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "LV"><annotation><documentation> country-name = "LATVIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "LB"><annotation><documentation> country-name = "LEBANON"/ </documentation></annotation> </enumeration>
+ <enumeration value = "LS"><annotation><documentation> country-name = "LESOTHO"/ </documentation></annotation> </enumeration>
+ <enumeration value = "LR"><annotation><documentation> country-name = "LIBERIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "LY"><annotation><documentation> country-name = "LIBYANARABJAMAHIRIYA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "LI"><annotation><documentation> country-name = "LIECHTENSTEIN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "LT"><annotation><documentation> country-name = "LITHUANIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "LU"><annotation><documentation> country-name = "LUXEMBOURG"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MO"><annotation><documentation> country-name = "MACAU"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MK"><annotation><documentation> country-name = "MACEDONIA,THEFORMERYUGOSLAVREPUBLICOF"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MG"><annotation><documentation> country-name = "MADAGASCAR"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MW"><annotation><documentation> country-name = "MALAWI"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MY"><annotation><documentation> country-name = "MALAYSIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MV"><annotation><documentation> country-name = "MALDIVES"/ </documentation></annotation> </enumeration>
+ <enumeration value = "ML"><annotation><documentation> country-name = "MALI"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MT"><annotation><documentation> country-name = "MALTA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MH"><annotation><documentation> country-name = "MARSHALLISLANDS"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MQ"><annotation><documentation> country-name = "MARTINIQUE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MR"><annotation><documentation> country-name = "MAURITANIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MU"><annotation><documentation> country-name = "MAURITIUS"/ </documentation></annotation> </enumeration>
+ <enumeration value = "YT"><annotation><documentation> country-name = "MAYOTTE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MX"><annotation><documentation> country-name = "MEXICO"/ </documentation></annotation> </enumeration>
+ <enumeration value = "FM"><annotation><documentation> country-name = "MICRONESIA,FEDERATEDSTATESOF"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MD"><annotation><documentation> country-name = "MOLDOVA,REPUBLICOF"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MC"><annotation><documentation> country-name = "MONACO"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MN"><annotation><documentation> country-name = "MONGOLIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MS"><annotation><documentation> country-name = "MONTSERRAT"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MA"><annotation><documentation> country-name = "MOROCCO"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MZ"><annotation><documentation> country-name = "MOZAMBIQUE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MM"><annotation><documentation> country-name = "MYANMAR"/ </documentation></annotation> </enumeration>
+ <enumeration value = "NA"><annotation><documentation> country-name = "NAMIBIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "NR"><annotation><documentation> country-name = "NAURU"/ </documentation></annotation> </enumeration>
+ <enumeration value = "NP"><annotation><documentation> country-name = "NEPAL"/ </documentation></annotation> </enumeration>
+ <enumeration value = "NL"><annotation><documentation> country-name = "NETHERLANDS"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AN"><annotation><documentation> country-name = "NETHERLANDSANTILLES"/ </documentation></annotation> </enumeration>
+ <enumeration value = "NC"><annotation><documentation> country-name = "NEWCALEDONIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "NZ"><annotation><documentation> country-name = "NEWZEALAND"/ </documentation></annotation> </enumeration>
+ <enumeration value = "NI"><annotation><documentation> country-name = "NICARAGUA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "NE"><annotation><documentation> country-name = "NIGER"/ </documentation></annotation> </enumeration>
+ <enumeration value = "NG"><annotation><documentation> country-name = "NIGERIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "NU"><annotation><documentation> country-name = "NIUE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "NF"><annotation><documentation> country-name = "NORFOLKISLAND"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MP"><annotation><documentation> country-name = "NORTHERNMARIANAISLANDS"/ </documentation></annotation> </enumeration>
+ <enumeration value = "NO"><annotation><documentation> country-name = "NORWAY"/ </documentation></annotation> </enumeration>
+ <enumeration value = "OM"><annotation><documentation> country-name = "OMAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "PK"><annotation><documentation> country-name = "PAKISTAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "PW"><annotation><documentation> country-name = "PALAU"/ </documentation></annotation> </enumeration>
+ <enumeration value = "PS"><annotation><documentation> country-name = "PALESTINIANTERRITORY,OCCUPIED"/ </documentation></annotation> </enumeration>
+ <enumeration value = "PA"><annotation><documentation> country-name = "PANAMA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "PG"><annotation><documentation> country-name = "PAPUANEWGUINEA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "PY"><annotation><documentation> country-name = "PARAGUAY"/ </documentation></annotation> </enumeration>
+ <enumeration value = "PE"><annotation><documentation> country-name = "PERU"/ </documentation></annotation> </enumeration>
+ <enumeration value = "PH"><annotation><documentation> country-name = "PHILIPPINES"/ </documentation></annotation> </enumeration>
+ <enumeration value = "PN"><annotation><documentation> country-name = "PITCAIRN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "PL"><annotation><documentation> country-name = "POLAND"/ </documentation></annotation> </enumeration>
+ <enumeration value = "PT"><annotation><documentation> country-name = "PORTUGAL"/ </documentation></annotation> </enumeration>
+ <enumeration value = "PR"><annotation><documentation> country-name = "PUERTORICO"/ </documentation></annotation> </enumeration>
+ <enumeration value = "QA"><annotation><documentation> country-name = "QATAR"/ </documentation></annotation> </enumeration>
+ <enumeration value = "RE"><annotation><documentation> country-name = "R+UNION"/ </documentation></annotation> </enumeration>
+ <enumeration value = "RO"><annotation><documentation> country-name = "ROMANIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "RU"><annotation><documentation> country-name = "RUSSIANFEDERATION"/ </documentation></annotation> </enumeration>
+ <enumeration value = "RW"><annotation><documentation> country-name = "RWANDA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SH"><annotation><documentation> country-name = "SAINTHELENA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "KN"><annotation><documentation> country-name = "SAINTKITTSANDNEVIS"/ </documentation></annotation> </enumeration>
+ <enumeration value = "LC"><annotation><documentation> country-name = "SAINTLUCIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "PM"><annotation><documentation> country-name = "SAINTPIERREANDMIQUELON"/ </documentation></annotation> </enumeration>
+ <enumeration value = "VC"><annotation><documentation> country-name = "SAINTVINCENTANDTHEGRENADINES"/ </documentation></annotation> </enumeration>
+ <enumeration value = "WS"><annotation><documentation> country-name = "SAMOA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SM"><annotation><documentation> country-name = "SANMARINO"/ </documentation></annotation> </enumeration>
+ <enumeration value = "ST"><annotation><documentation> country-name = "SAOTOMEANDPRINCIPE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SA"><annotation><documentation> country-name = "SAUDIARABIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SN"><annotation><documentation> country-name = "SENEGAL"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SC"><annotation><documentation> country-name = "SEYCHELLES"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SL"><annotation><documentation> country-name = "SIERRALEONE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SG"><annotation><documentation> country-name = "SINGAPORE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SK"><annotation><documentation> country-name = "SLOVAKIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SI"><annotation><documentation> country-name = "SLOVENIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SB"><annotation><documentation> country-name = "SOLOMONISLANDS"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SO"><annotation><documentation> country-name = "SOMALIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "ZA"><annotation><documentation> country-name = "SOUTHAFRICA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GS"><annotation><documentation> country-name = "SOUTHGEORGIAANDTHESOUTHSANDWICHISLANDS"/ </documentation></annotation> </enumeration>
+ <enumeration value = "ES"><annotation><documentation> country-name = "SPAIN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "LK"><annotation><documentation> country-name = "SRILANKA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SD"><annotation><documentation> country-name = "SUDAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SR"><annotation><documentation> country-name = "SURINAME"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SJ"><annotation><documentation> country-name = "SVALBARDANDJANMAYEN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SZ"><annotation><documentation> country-name = "SWAZILAND"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SE"><annotation><documentation> country-name = "SWEDEN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CH"><annotation><documentation> country-name = "SWITZERLAND"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SY"><annotation><documentation> country-name = "SYRIANARABREPUBLIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TW"><annotation><documentation> country-name = "TAIWAN,PROVINCEOFCHINA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TJ"><annotation><documentation> country-name = "TAJIKISTAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TZ"><annotation><documentation> country-name = "TANZANIA,UNITEDREPUBLICOF"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TH"><annotation><documentation> country-name = "THAILAND"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TG"><annotation><documentation> country-name = "TOGO"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TK"><annotation><documentation> country-name = "TOKELAU"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TO"><annotation><documentation> country-name = "TONGA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TT"><annotation><documentation> country-name = "TRINIDADANDTOBAGO"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TN"><annotation><documentation> country-name = "TUNISIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TR"><annotation><documentation> country-name = "TURKEY"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TM"><annotation><documentation> country-name = "TURKMENISTAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TC"><annotation><documentation> country-name = "TURKSANDCAICOSISLANDS"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TV"><annotation><documentation> country-name = "TUVALU"/ </documentation></annotation> </enumeration>
+ <enumeration value = "UG"><annotation><documentation> country-name = "UGANDA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "UA"><annotation><documentation> country-name = "UKRAINE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AE"><annotation><documentation> country-name = "UNITEDARABEMIRATES"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GB"><annotation><documentation> country-name = "UNITEDKINGDOM"/ </documentation></annotation> </enumeration>
+ <enumeration value = "US"><annotation><documentation> country-name = "UNITEDSTATES"/ </documentation></annotation> </enumeration>
+ <enumeration value = "UM"><annotation><documentation> country-name = "UNITEDSTATESMINOROUTLYINGISLANDS"/ </documentation></annotation> </enumeration>
+ <enumeration value = "UY"><annotation><documentation> country-name = "URUGUAY"/ </documentation></annotation> </enumeration>
+ <enumeration value = "UZ"><annotation><documentation> country-name = "UZBEKISTAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "VU"><annotation><documentation> country-name = "VANUATU"/ </documentation></annotation> </enumeration>
+ <enumeration value = "VE"><annotation><documentation> country-name = "VENEZUELA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "VN"><annotation><documentation> country-name = "VIETNAM"/ </documentation></annotation> </enumeration>
+ <enumeration value = "VG"><annotation><documentation> country-name = "VIRGINISLANDS,BRITISH"/ </documentation></annotation> </enumeration>
+ <enumeration value = "VI"><annotation><documentation> country-name = "VIRGINISLANDS,U.S."/ </documentation></annotation> </enumeration>
+ <enumeration value = "WF"><annotation><documentation> country-name = "WALLISANDFUTUNA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "EH"><annotation><documentation> country-name = "WESTERNSAHARA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "YE"><annotation><documentation> country-name = "YEMEN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "YU"><annotation><documentation> country-name = "YUGOSLAVIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "ZM"><annotation><documentation> country-name = "ZAMBIA"/ </documentation></annotation> </enumeration>
+ <enumeration value = "ZW"><annotation><documentation> country-name = "ZIMBABWE"/ </documentation></annotation> </enumeration>
+ </restriction>
+ </simpleType>
+ <simpleType name = "language_Type">
+ <annotation><documentation> A string of characters conforming to the ISO 639 3-letter code. (Rather odd since all of them have 2 letters)</documentation></annotation>
+ <restriction base = "NMTOKEN">
+ <enumeration value = "none"/>
+ <enumeration value = "inherit"/>
+ <enumeration value = "AY"><annotation><documentation> language-name = "AYMARA" language-family = "AMERINDIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GN"><annotation><documentation> language-name = "GUARANI" language-family = "AMERINDIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "QU"><annotation><documentation> language-name = "QUECHUA" language-family = "AMERINDIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "DZ"><annotation><documentation> language-name = "BHUTANI" language-family = "ASIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MY"><annotation><documentation> language-name = "BURMESE" language-family = "ASIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "KM"><annotation><documentation> language-name = "CAMBODIAN" language-family = "ASIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "ZH"><annotation><documentation> language-name = "CHINESE" language-family = "ASIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "JA"><annotation><documentation> language-name = "JAPANESE" language-family = "ASIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "KO"><annotation><documentation> language-name = "KOREAN" language-family = "ASIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "LO"><annotation><documentation> language-name = "LAOTHIAN" language-family = "ASIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TH"><annotation><documentation> language-name = "THAI" language-family = "ASIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BO"><annotation><documentation> language-name = "TIBETAN" language-family = "ASIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "VI"><annotation><documentation> language-name = "VIETNAMESE" language-family = "ASIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "LV"><annotation><documentation> language-name = "LATVIAN;LETTISH" language-family = "BALTIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "LT"><annotation><documentation> language-name = "LITHUANIAN" language-family = "BALTIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "EU"><annotation><documentation> language-name = "BASQUE" language-family = "BASQUE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BR"><annotation><documentation> language-name = "BRETON" language-family = "CELTIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GA"><annotation><documentation> language-name = "IRISH" language-family = "CELTIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GD"><annotation><documentation> language-name = "SCOTS-GAELIC" language-family = "CELTIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CY"><annotation><documentation> language-name = "WELSH" language-family = "CELTIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "KN"><annotation><documentation> language-name = "KANNADA" language-family = "DRAVIDIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "ML"><annotation><documentation> language-name = "MALAYALAM" language-family = "DRAVIDIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TA"><annotation><documentation> language-name = "TAMIL" language-family = "DRAVIDIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TE"><annotation><documentation> language-name = "TELUGU" language-family = "DRAVIDIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "KL"><annotation><documentation> language-name = "GREENLANDIC" language-family = "ESKIMO"/ </documentation></annotation> </enumeration>
+ <enumeration value = "IK"><annotation><documentation> language-name = "INUPIAK" language-family = "ESKIMO"/ </documentation></annotation> </enumeration>
+ <enumeration value = "ET"><annotation><documentation> language-name = "ESTONIAN" language-family = "FINNO-UGRIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "FI"><annotation><documentation> language-name = "FINNISH" language-family = "FINNO-UGRIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "HU"><annotation><documentation> language-name = "HUNGARIAN" language-family = "FINNO-UGRIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AF"><annotation><documentation> language-name = "AFRIKAANS" language-family = "GERMANIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "DA"><annotation><documentation> language-name = "DANISH" language-family = "GERMANIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "NL"><annotation><documentation> language-name = "DUTCH" language-family = "GERMANIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "EN"><annotation><documentation> language-name = "ENGLISH" language-family = "GERMANIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "FO"><annotation><documentation> language-name = "FAROESE" language-family = "GERMANIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "FY"><annotation><documentation> language-name = "FRISIAN" language-family = "GERMANIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "DE"><annotation><documentation> language-name = "GERMAN" language-family = "GERMANIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "IS"><annotation><documentation> language-name = "ICELANDIC" language-family = "GERMANIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "NO"><annotation><documentation> language-name = "NORWEGIAN" language-family = "GERMANIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SV"><annotation><documentation> language-name = "SWEDISH" language-family = "GERMANIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "YI"><annotation><documentation> language-name = "YIDDISH" language-family = "GERMANIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "OM"><annotation><documentation> language-name = "AFAN-(OROMO)" language-family = "HAMITIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AA"><annotation><documentation> language-name = "AFAR" language-family = "HAMITIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SO"><annotation><documentation> language-name = "SOMALI" language-family = "HAMITIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AB"><annotation><documentation> language-name = "ABKHAZIAN" language-family = "IBERO-CAUCASIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "KA"><annotation><documentation> language-name = "GEORGIAN" language-family = "IBERO-CAUCASIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AS"><annotation><documentation> language-name = "ASSAMESE" language-family = "INDIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BN"><annotation><documentation> language-name = "BENGALI;BANGLA" language-family = "INDIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BH"><annotation><documentation> language-name = "BIHARI" language-family = "INDIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GU"><annotation><documentation> language-name = "GUJARATI" language-family = "INDIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "HI"><annotation><documentation> language-name = "HINDI" language-family = "INDIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "KS"><annotation><documentation> language-name = "KASHMIRI" language-family = "INDIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MR"><annotation><documentation> language-name = "MARATHI" language-family = "INDIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "NE"><annotation><documentation> language-name = "NEPALI" language-family = "INDIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "OR"><annotation><documentation> language-name = "ORIYA" language-family = "INDIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "PA"><annotation><documentation> language-name = "PUNJABI" language-family = "INDIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SA"><annotation><documentation> language-name = "SANSKRIT" language-family = "INDIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SD"><annotation><documentation> language-name = "SINDHI" language-family = "INDIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SI"><annotation><documentation> language-name = "SINGHALESE" language-family = "INDIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "UR"><annotation><documentation> language-name = "URDU" language-family = "INDIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SQ"><annotation><documentation> language-name = "ALBANIAN" language-family = "INDO-EUROPEAN(OTHER)"/ </documentation></annotation> </enumeration>
+ <enumeration value = "HY"><annotation><documentation> language-name = "ARMENIAN" language-family = "INDO-EUROPEAN(OTHER)"/ </documentation></annotation> </enumeration>
+ <enumeration value = "EO"><annotation><documentation> language-name = "ESPERANTO" language-family = "INTERNATIONAL-AUX."/ </documentation></annotation> </enumeration>
+ <enumeration value = "IA"><annotation><documentation> language-name = "INTERLINGUA" language-family = "INTERNATIONAL-AUX."/ </documentation></annotation> </enumeration>
+ <enumeration value = "IE"><annotation><documentation> language-name = "INTERLINGUE" language-family = "INTERNATIONAL-AUX."/ </documentation></annotation> </enumeration>
+ <enumeration value = "VO"><annotation><documentation> language-name = "VOLAPUK" language-family = "INTERNATIONAL-AUX."/ </documentation></annotation> </enumeration>
+ <enumeration value = "KU"><annotation><documentation> language-name = "KURDISH" language-family = "IRANIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "PS"><annotation><documentation> language-name = "PASHTO;PUSHTO" language-family = "IRANIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "FA"><annotation><documentation> language-name = "PERSIAN-(farsi)" language-family = "IRANIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TG"><annotation><documentation> language-name = "TAJIK" language-family = "IRANIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "EL"><annotation><documentation> language-name = "GREEK" language-family = "LATIN/GREEK"/ </documentation></annotation> </enumeration>
+ <enumeration value = "LA"><annotation><documentation> language-name = "LATIN" language-family = "LATIN/GREEK"/ </documentation></annotation> </enumeration>
+ <enumeration value = "HA"><annotation><documentation> language-name = "HAUSA" language-family = "NEGRO-AFRICAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "RW"><annotation><documentation> language-name = "KINYARWANDA" language-family = "NEGRO-AFRICAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "RN"><annotation><documentation> language-name = "KURUNDI" language-family = "NEGRO-AFRICAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "LN"><annotation><documentation> language-name = "LINGALA" language-family = "NEGRO-AFRICAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SG"><annotation><documentation> language-name = "SANGHO" language-family = "NEGRO-AFRICAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "ST"><annotation><documentation> language-name = "SESOTHO" language-family = "NEGRO-AFRICAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TN"><annotation><documentation> language-name = "SETSWANA" language-family = "NEGRO-AFRICAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SN"><annotation><documentation> language-name = "SHONA" language-family = "NEGRO-AFRICAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SS"><annotation><documentation> language-name = "SISWATI" language-family = "NEGRO-AFRICAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SW"><annotation><documentation> language-name = "SWAHILI" language-family = "NEGRO-AFRICAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TS"><annotation><documentation> language-name = "TSONGA" language-family = "NEGRO-AFRICAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TW"><annotation><documentation> language-name = "TWI" language-family = "NEGRO-AFRICAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "WO"><annotation><documentation> language-name = "WOLOF" language-family = "NEGRO-AFRICAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "XH"><annotation><documentation> language-name = "XHOSA" language-family = "NEGRO-AFRICAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "YO"><annotation><documentation> language-name = "YORUBA" language-family = "NEGRO-AFRICAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "ZU"><annotation><documentation> language-name = "ZULU" language-family = "NEGRO-AFRICAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "FJ"><annotation><documentation> language-name = "FIJI" language-family = "OCEANIC/INDONESIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "ID"><annotation><documentation> language-name = "INDONESIAN" language-family = "OCEANIC/INDONESIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "JV"><annotation><documentation> language-name = "JAVANESE" language-family = "OCEANIC/INDONESIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MG"><annotation><documentation> language-name = "MALAGASY" language-family = "OCEANIC/INDONESIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MS"><annotation><documentation> language-name = "MALAY" language-family = "OCEANIC/INDONESIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MI"><annotation><documentation> language-name = "MAORI" language-family = "OCEANIC/INDONESIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SM"><annotation><documentation> language-name = "SAMOAN" language-family = "OCEANIC/INDONESIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SU"><annotation><documentation> language-name = "SUNDANESE" language-family = "OCEANIC/INDONESIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TL"><annotation><documentation> language-name = "TAGALOG" language-family = "OCEANIC/INDONESIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TO"><annotation><documentation> language-name = "TONGA" language-family = "OCEANIC/INDONESIAN"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CA"><annotation><documentation> language-name = "CATALAN" language-family = "ROMANCE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CO"><annotation><documentation> language-name = "CORSICAN" language-family = "ROMANCE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "FR"><annotation><documentation> language-name = "FRENCH" language-family = "ROMANCE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "GL"><annotation><documentation> language-name = "GALICIAN" language-family = "ROMANCE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "IT"><annotation><documentation> language-name = "ITALIAN" language-family = "ROMANCE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MO"><annotation><documentation> language-name = "MOLDAVIAN" language-family = "ROMANCE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "OC"><annotation><documentation> language-name = "OCCITAN" language-family = "ROMANCE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "PT"><annotation><documentation> language-name = "PORTUGUESE" language-family = "ROMANCE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "RM"><annotation><documentation> language-name = "RHAETO-ROMANCE" language-family = "ROMANCE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "RO"><annotation><documentation> language-name = "ROMANIAN" language-family = "ROMANCE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "ES"><annotation><documentation> language-name = "SPANISH" language-family = "ROMANCE"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AM"><annotation><documentation> language-name = "AMHARIC" language-family = "SEMITIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AR"><annotation><documentation> language-name = "ARABIC" language-family = "SEMITIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "HE"><annotation><documentation> language-name = "HEBREW" language-family = "SEMITIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MT"><annotation><documentation> language-name = "MALTESE" language-family = "SEMITIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TI"><annotation><documentation> language-name = "TIGRINYA" language-family = "SEMITIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BG"><annotation><documentation> language-name = "BULGARIAN" language-family = "SLAVIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BE"><annotation><documentation> language-name = "BYELORUSSIAN" language-family = "SLAVIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "HR"><annotation><documentation> language-name = "CROATIAN" language-family = "SLAVIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "CS"><annotation><documentation> language-name = "CZECH" language-family = "SLAVIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MK"><annotation><documentation> language-name = "MACEDONIAN" language-family = "SLAVIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "PL"><annotation><documentation> language-name = "POLISH" language-family = "SLAVIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "RU"><annotation><documentation> language-name = "RUSSIAN" language-family = "SLAVIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SR"><annotation><documentation> language-name = "SERBIAN" language-family = "SLAVIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SH"><annotation><documentation> language-name = "SERBO-CROATIAN" language-family = "SLAVIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SK"><annotation><documentation> language-name = "SLOVAK" language-family = "SLAVIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "SL"><annotation><documentation> language-name = "SLOVENIAN" language-family = "SLAVIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "UK"><annotation><documentation> language-name = "UKRAINIAN" language-family = "SLAVIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "AZ"><annotation><documentation> language-name = "AZERBAIJANI" language-family = "TURKIC/ALTAIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BA"><annotation><documentation> language-name = "BASHKIR" language-family = "TURKIC/ALTAIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "KK"><annotation><documentation> language-name = "KAZAKH" language-family = "TURKIC/ALTAIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "KY"><annotation><documentation> language-name = "KIRGHIZ" language-family = "TURKIC/ALTAIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TT"><annotation><documentation> language-name = "TATAR" language-family = "TURKIC/ALTAIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TR"><annotation><documentation> language-name = "TURKISH" language-family = "TURKIC/ALTAIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "TK"><annotation><documentation> language-name = "TURKMEN" language-family = "TURKIC/ALTAIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "UZ"><annotation><documentation> language-name = "UZBEK" language-family = "TURKIC/ALTAIC"/ </documentation></annotation> </enumeration>
+ <enumeration value = "BI"><annotation><documentation> language-name = "BISLAMA" language-family = "[not-given]"/ </documentation></annotation> </enumeration>
+ <enumeration value = "MN"><annotation><documentation> language-name = "MONGOLIAN" language-family = "[not-given]"/ </documentation></annotation> </enumeration>
+ <enumeration value = "NA"><annotation><documentation> language-name = "NAURU" language-family = "[not-given]"/ </documentation></annotation> </enumeration>
+ </restriction>
+ </simpleType>
+ <simpleType name = "always_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "always"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "auto_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "auto"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "baseline_base_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "baseline"/>
+ <enumeration value = "sub"/>
+ <enumeration value = "super"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "caption_side_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "before"/>
+ <enumeration value = "after"/>
+ <enumeration value = "start"/>
+ <enumeration value = "end"/>
+ <enumeration value = "top"/>
+ <enumeration value = "bottom"/>
+ <enumeration value = "left"/>
+ <enumeration value = "right"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "display_align_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "auto"/>
+ <enumeration value = "before"/>
+ <enumeration value = "center"/>
+ <enumeration value = "after"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "float_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "inherit"/>
+ <enumeration value = "before"/>
+ <enumeration value = "start"/>
+ <enumeration value = "end"/>
+ <enumeration value = "left"/>
+ <enumeration value = "right"/>
+ <enumeration value = "none"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "blank_or_not_blank_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "blank"/>
+ <enumeration value = "not-blank"/>
+ <enumeration value = "any"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "text_transform_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "capitalize"/>
+ <enumeration value = "uppercase"/>
+ <enumeration value = "lowercase"/>
+ <enumeration value = "none"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "border_collapse_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "collapse"/>
+ <enumeration value = "separate"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "line_height_shift_adjustment_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "consider-shifts"/>
+ <enumeration value = "disregard-shifts"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "white_space_collapse_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "false"/>
+ <enumeration value = "true"/>
+ <enumeration value = "inherit">
+ <annotation>
+ <documentation>
+ <fop_fail>Unknown enumerated value</fop_fail>
+ </documentation>
+ </annotation>
+ </enumeration>
+ </restriction>
+ </simpleType>
+ <simpleType name = "retrieve_position_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "first-starting-within-page"/>
+ <enumeration value = "first-including-carryover"/>
+ <enumeration value = "last-starting-within-page"/>
+ <enumeration value = "last-ending-within-page"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "page_position_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "first"/>
+ <enumeration value = "last"/>
+ <enumeration value = "rest"/>
+ <enumeration value = "any"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "force_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "force"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "white_space_treatment_Type">
+ <annotation>
+ <documentation>
+ <fop_fail>property ignored</fop_fail>
+ </documentation>
+ </annotation>
+ <restriction base = "NMTOKEN">
+ <enumeration value = "ignore"/>
+ <enumeration value = "preserve"/>
+ <enumeration value = "ignore-if-before-linefeed"/>
+ <enumeration value = "ignore-if-after-linefeed"/>
+ <enumeration value = "ignore-if-surrounding-linefeed"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "linefeed_treatment_Type">
+ <annotation>
+ <documentation>
+ <fop_fail>property is not implemented yet</fop_fail>
+ </documentation>
+ </annotation>
+ <restriction base = "NMTOKEN">
+ <enumeration value = "ignore"/>
+ <enumeration value = "preserve"/>
+ <enumeration value = "treat-as-space"/>
+ <enumeration value = "treat-as-zero-width-space"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "inherit_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "horizontal_position_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "left"/>
+ <enumeration value = "center"/>
+ <enumeration value = "right"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "line_stacking_strategy_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "line-height"/>
+ <enumeration value = "font-height"/>
+ <enumeration value = "max-height"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "active_state_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "link"/>
+ <enumeration value = "visited"/>
+ <enumeration value = "active"/>
+ <enumeration value = "hover"/>
+ <enumeration value = "focus"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "writing_mode_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "lr-tb"/>
+ <enumeration value = "rl-tb"/>
+ <enumeration value = "tb-rl"/>
+ <enumeration value = "lr"/>
+ <enumeration value = "rl"/>
+ <enumeration value = "tb"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "direction_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "ltr"/>
+ <enumeration value = "rtl"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "wrap_option_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "no-wrap"/>
+ <enumeration value = "wrap"/>
+ <enumeration value = "inherit">
+ <annotation>
+ <documentation>
+ <fop_fail>Unknown enumerated value</fop_fail>
+ </documentation>
+ </annotation>
+ </enumeration>
+ </restriction>
+ </simpleType>
+ <simpleType name = "span_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "none"/>
+ <enumeration value = "all"/>
+ <enumeration value = "inherit">
+ <annotation>
+ <documentation>
+ <fop_fail>Unknown enumerated value</fop_fail>
+ </documentation>
+ </annotation>
+ </enumeration>
+ </restriction>
+ </simpleType>
+ <simpleType name = "rule_style_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "none"/>
+ <enumeration value = "dotted"/>
+ <enumeration value = "dashed"/>
+ <enumeration value = "solid"/>
+ <enumeration value = "double"/>
+ <enumeration value = "groove"/>
+ <enumeration value = "ridge"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "border_style_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "inherit">
+ <annotation>
+ <documentation>
+ <fop_fail>Unknown enumerated value</fop_fail>
+ </documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value = "none"/>
+ <enumeration value = "hidden"/>
+ <enumeration value = "dotted"/>
+ <enumeration value = "dashed"/>
+ <enumeration value = "solid"/>
+ <enumeration value = "double"/>
+ <enumeration value = "groove"/>
+ <enumeration value = "ridge"/>
+ <enumeration value = "inset"/>
+ <enumeration value = "outset"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "leader_alignment_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "none"/>
+ <enumeration value = "reference-area"/>
+ <enumeration value = "page"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "text_decoration_Type">
+ <annotation>
+ <documentation>
+ <fop_result>not implemented</fop_result>
+ </documentation>
+ </annotation>
+ <restriction base = "NMTOKEN">
+ <enumeration value = "none"/>
+ <enumeration value = "underline"/>
+ <enumeration value = "no-underline"/>
+ <enumeration value = "overline"/>
+ <enumeration value = "no-overline"/>
+ <enumeration value = "line-through"/>
+ <enumeration value = "no-line-through"/>
+ <enumeration value = "blink"/>
+ <enumeration value = "no-blink"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "unicode_bidi_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "normal"/>
+ <enumeration value = "embed"/>
+ <enumeration value = "bidi-override"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "odd_or_even_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "odd"/>
+ <enumeration value = "even"/>
+ <enumeration value = "any"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "once_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "once"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "retrieve_boundary_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "page"/>
+ <enumeration value = "page-sequence"/>
+ <enumeration value = "document"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "starting_state_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "show"/>
+ <enumeration value = "hide"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "leader_pattern_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "space"/>
+ <enumeration value = "rule"/>
+ <enumeration value = "dots"/>
+ <enumeration value = "use-content"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "text_align_last_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "start"/>
+ <enumeration value = "center"/>
+ <enumeration value = "end"/>
+ <enumeration value = "justify"/>
+ <enumeration value = "inside">
+ <annotation>
+ <documentation>
+ <fop_fail>Unknown enumerated value</fop_fail>
+ </documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value = "outside">
+ <annotation>
+ <documentation>
+ <fop_fail>Unknown enumerated value</fop_fail>
+ </documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value = "left">
+ <annotation>
+ <documentation>
+ <fop_fail>Unknown enumerated value</fop_fail>
+ </documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value = "right">
+ <annotation>
+ <documentation>
+ <fop_fail>Unknown enumerated value</fop_fail>
+ </documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value = "inherit">
+ <annotation>
+ <documentation>
+ <fop_fail>Unknown enumerated value</fop_fail>
+ </documentation>
+ </annotation>
+ </enumeration>
+ </restriction>
+ </simpleType>
+ <simpleType name = "text_align_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "start"/>
+ <enumeration value = "center"/>
+ <enumeration value = "end"/>
+ <enumeration value = "justify"/>
+ <enumeration value = "inside">
+ <annotation>
+ <documentation>
+ <fop_fail>Unknown enumerated value</fop_fail>
+ </documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value = "outside">
+ <annotation>
+ <documentation>
+ <fop_fail>Unknown enumerated value</fop_fail>
+ </documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value = "left"/>
+ <enumeration value = "right"/>
+ <enumeration value = "inherit">
+ <annotation>
+ <documentation>
+ <fop_fail>Unknown enumerated value</fop_fail>
+ </documentation>
+ </annotation>
+ </enumeration>
+ </restriction>
+ </simpleType>
+ <simpleType name = "width_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "thin"/>
+ <enumeration value = "medium"/>
+ <enumeration value = "thick"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "vertical_position_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "top"/>
+ <enumeration value = "center"/>
+ <enumeration value = "bottom"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "auto_restore_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "true"/>
+ <enumeration value = "false"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "table_omit_footer_at_break_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "true"/>
+ <enumeration value = "false"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "table_omit_header_at_break_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "true"/>
+ <enumeration value = "false"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "precedence_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "true"/>
+ <enumeration value = "false"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "score_spaces_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "true"/>
+ <enumeration value = "false"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "scaling_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "uniform"/>
+ <enumeration value = "non-uniform"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "use_font_metrics_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "use-font-metrics"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "background_image_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "uri-specification"/>
+ <enumeration value = "none"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "hyphenation_keep_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "auto"/>
+ <enumeration value = "column"/>
+ <enumeration value = "page"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "no_limit_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "no-limit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "visibility_Type">
+ <annotation>
+ <documentation>
+ <fop_fail>property is not implemented yet</fop_fail>
+ </documentation>
+ </annotation>
+ <restriction base = "NMTOKEN">
+ <enumeration value = "visible"/>
+ <enumeration value = "hidden"/>
+ <enumeration value = "collapse"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "overflow_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "auto"/>
+ <enumeration value = "visible"/>
+ <enumeration value = "hidden"/>
+ <enumeration value = "scroll"/>
+ <enumeration value = "error-if-overflow"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "transparent_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "transparent"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "none_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "none"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "absolute_position_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "auto"/>
+ <enumeration value = "absolute"/>
+ <enumeration value = "fixed"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "azimuth_base_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "left-side"/>
+ <enumeration value = "far-left"/>
+ <enumeration value = "left"/>
+ <enumeration value = "center-left"/>
+ <enumeration value = "center"/>
+ <enumeration value = "center-right"/>
+ <enumeration value = "right"/>
+ <enumeration value = "far-right"/>
+ <enumeration value = "right-side"/>
+ <enumeration value = "behind"/>
+ <enumeration value = "leftwards"/>
+ <enumeration value = "rightwards"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "azimuth_Type">
+ <union memberTypes = "fo:angle_Type fo:azimuth_base_Type"/>
+ </simpleType>
+ <simpleType name = "elevation_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "below"/>
+ <enumeration value = "level"/>
+ <enumeration value = "above"/>
+ <enumeration value = "higher"/>
+ <enumeration value = "lower"/>
+ <enumeration value = "0"/>
+ <enumeration value = "90"/>
+ <enumeration value = "180"/>
+ <enumeration value = "270"/>
+ <enumeration value = "0deg"/>
+ <enumeration value = "90deg"/>
+ <enumeration value = "180deg"/>
+ <enumeration value = "270deg"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "font_selection_strategy_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "auto"/>
+ <enumeration value = "character-by-character"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "font_stretch_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "normal"/>
+ <enumeration value = "wider"/>
+ <enumeration value = "narrower"/>
+ <enumeration value = "ultra-condensed"/>
+ <enumeration value = "extra-condensed"/>
+ <enumeration value = "condensed"/>
+ <enumeration value = "semi-condensed"/>
+ <enumeration value = "semi-expanded"/>
+ <enumeration value = "expanded"/>
+ <enumeration value = "extra-expanded"/>
+ <enumeration value = "ultra-expanded"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "clear_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "start"/>
+ <enumeration value = "end"/>
+ <enumeration value = "left"/>
+ <enumeration value = "right"/>
+ <enumeration value = "both"/>
+ <enumeration value = "none"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "color_Name_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "aliceblue"/>
+ <enumeration value = "antiquewhite"/>
+ <enumeration value = "aqua"/>
+ <enumeration value = "aquamarine"/>
+ <enumeration value = "azure"/>
+ <enumeration value = "beige"/>
+ <enumeration value = "bisque"/>
+ <enumeration value = "black"/>
+ <enumeration value = "blanchedalmond"/>
+ <enumeration value = "blue"/>
+ <enumeration value = "blueviolet"/>
+ <enumeration value = "brown"/>
+ <enumeration value = "burlywood"/>
+ <enumeration value = "cadetblue"/>
+ <enumeration value = "chartreuse"/>
+ <enumeration value = "chocolate"/>
+ <enumeration value = "coral"/>
+ <enumeration value = "cornflowerblue"/>
+ <enumeration value = "cornsilk"/>
+ <enumeration value = "crimson"/>
+ <enumeration value = "cyan"/>
+ <enumeration value = "darkblue"/>
+ <enumeration value = "darkcyan"/>
+ <enumeration value = "darkgoldenrod"/>
+ <enumeration value = "darkgray"/>
+ <enumeration value = "darkgreen"/>
+ <enumeration value = "darkgrey"/>
+ <enumeration value = "darkkhaki"/>
+ <enumeration value = "darkmagenta"/>
+ <enumeration value = "darkolivegreen"/>
+ <enumeration value = "darkorange"/>
+ <enumeration value = "darkorchid"/>
+ <enumeration value = "darkred"/>
+ <enumeration value = "darksalmon"/>
+ <enumeration value = "darkseagreen"/>
+ <enumeration value = "darkslateblue"/>
+ <enumeration value = "darkslategray"/>
+ <enumeration value = "darkslategrey"/>
+ <enumeration value = "darkturquoise"/>
+ <enumeration value = "darkviolet"/>
+ <enumeration value = "deeppink"/>
+ <enumeration value = "deepskyblue"/>
+ <enumeration value = "dimgray"/>
+ <enumeration value = "dimgrey"/>
+ <enumeration value = "dodgerblue"/>
+ <enumeration value = "firebrick"/>
+ <enumeration value = "floralwhite"/>
+ <enumeration value = "forestgreen"/>
+ <enumeration value = "fuchsia"/>
+ <enumeration value = "gainsboro"/>
+ <enumeration value = "lightpink"/>
+ <enumeration value = "lightsalmon"/>
+ <enumeration value = "lightseagreen"/>
+ <enumeration value = "lightskyblue"/>
+ <enumeration value = "lightslategray"/>
+ <enumeration value = "lightslategrey"/>
+ <enumeration value = "lightsteelblue"/>
+ <enumeration value = "lightyellow"/>
+ <enumeration value = "lime"/>
+ <enumeration value = "limegreen"/>
+ <enumeration value = "linen"/>
+ <enumeration value = "magenta"/>
+ <enumeration value = "maroon"/>
+ <enumeration value = "mediumaquamarine"/>
+ <enumeration value = "mediumblue"/>
+ <enumeration value = "mediumorchid"/>
+ <enumeration value = "mediumpurple"/>
+ <enumeration value = "mediumseagreen"/>
+ <enumeration value = "mediumslateblue"/>
+ <enumeration value = "mediumspringgreen"/>
+ <enumeration value = "mediumturquoise"/>
+ <enumeration value = "mediumvioletred"/>
+ <enumeration value = "midnightblue"/>
+ <enumeration value = "mintcream"/>
+ <enumeration value = "mistyrose"/>
+ <enumeration value = "moccasin"/>
+ <enumeration value = "navajowhite"/>
+ <enumeration value = "navy"/>
+ <enumeration value = "oldlace"/>
+ <enumeration value = "olive"/>
+ <enumeration value = "olivedrab"/>
+ <enumeration value = "orange"/>
+ <enumeration value = "orangered"/>
+ <enumeration value = "orchid"/>
+ <enumeration value = "palegoldenrod"/>
+ <enumeration value = "palegreen"/>
+ <enumeration value = "paleturquoise"/>
+ <enumeration value = "palevioletred"/>
+ <enumeration value = "papayawhip"/>
+ <enumeration value = "peachpuff"/>
+ <enumeration value = "peru"/>
+ <enumeration value = "pink"/>
+ <enumeration value = "plum"/>
+ <enumeration value = "powderblue"/>
+ <enumeration value = "purple"/>
+ <enumeration value = "red"/>
+ <enumeration value = "rosybrown"/>
+ <enumeration value = "royalblue"/>
+ <enumeration value = "saddlebrown"/>
+ <enumeration value = "salmon"/>
+ <enumeration value = "ghostwhite"/>
+ <enumeration value = "gold"/>
+ <enumeration value = "goldenrod"/>
+ <enumeration value = "gray"/>
+ <enumeration value = "grey"/>
+ <enumeration value = "green"/>
+ <enumeration value = "greenyellow"/>
+ <enumeration value = "honeydew"/>
+ <enumeration value = "hotpink"/>
+ <enumeration value = "indianred"/>
+ <enumeration value = "indigo"/>
+ <enumeration value = "ivory"/>
+ <enumeration value = "khaki"/>
+ <enumeration value = "lavender"/>
+ <enumeration value = "lavenderblush"/>
+ <enumeration value = "lawngreen"/>
+ <enumeration value = "lemonchiffon"/>
+ <enumeration value = "lightblue"/>
+ <enumeration value = "lightcoral"/>
+ <enumeration value = "lightcyan"/>
+ <enumeration value = "lightgoldenrodyellow"/>
+ <enumeration value = "lightgray"/>
+ <enumeration value = "lightgreen"/>
+ <enumeration value = "lightgrey"/>
+ <enumeration value = "sandybrown"/>
+ <enumeration value = "seagreen"/>
+ <enumeration value = "seashell"/>
+ <enumeration value = "sienna"/>
+ <enumeration value = "silver"/>
+ <enumeration value = "skyblue"/>
+ <enumeration value = "slateblue"/>
+ <enumeration value = "slategray"/>
+ <enumeration value = "slategrey"/>
+ <enumeration value = "snow"/>
+ <enumeration value = "springgreen"/>
+ <enumeration value = "steelblue"/>
+ <enumeration value = "tan"/>
+ <enumeration value = "teal"/>
+ <enumeration value = "thistle"/>
+ <enumeration value = "tomato"/>
+ <enumeration value = "turquoise"/>
+ <enumeration value = "violet"/>
+ <enumeration value = "wheat"/>
+ <enumeration value = "white"/>
+ <enumeration value = "whitesmoke"/>
+ <enumeration value = "yellow"/>
+ <enumeration value = "yellowgreen"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "color_Hex_Type">
+ <restriction base = "string">
+ <pattern value = "#[0-9A-F]{6}"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "background_color_Type">
+ <union memberTypes = "fo:color_Hex_Type fo:color_Name_Type fo:inherit_Type fo:transparent_Type"/>
+ </simpleType>
+ <simpleType name = "relative_position_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "static"/>
+ <enumeration value = "relative"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "speak_header_Type">
+ <restriction base = "NMTOKEN">
+ <enumeration value = "once"/>
+ <enumeration value = "always"/>
+ <enumeration value = "inherit"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "border_Type">
+ <annotation>
+ <documentation>
+ "fo:width_Type fo:border_style_Type fo:color_Type"
+ <enumeration value="solid 4px yellow"/>
+ <enumeration value="solid 2px green"/>
+ <enumeration value="solid 1px blue"/>
+ <enumeration value="solid 1px silver"/>
+ </documentation>
+ </annotation>
+ <restriction base = "string">
+ <pattern value = "(none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset) \+?\d+\.?\d*(px|pt|mm|cm|in|em) (#[0-9A-F]{6}|[a-z]{3,16})"/>
+ </restriction>
+ </simpleType>
+ <simpleType name = "font_size_Type">
+ <union memberTypes = "fo:absolute_size_Type fo:relative_size_Type fo:length_Type fo:percentage_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "alignment_baseline_Type">
+ <union memberTypes = "fo:auto_Type fo:alignment_Type fo:box_alignment_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "alignment_adjust_Type">
+ <union memberTypes = "fo:auto_Type fo:alignment_Type fo:percentage_Type fo:length_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "z_index_Type">
+ <union memberTypes = "fo:auto_Type fo:integer_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "margin_width_Type">
+ <union memberTypes = "fo:auto_Type fo:length_Type fo:percentage_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "block_progression_dimension_optimum_Type">
+ <union memberTypes = "fo:auto_Type fo:length_Type"/>
+ </simpleType>
+ <simpleType name = "block_progression_dimension_maximum_Type">
+ <union memberTypes = "fo:auto_Type fo:length_Type"/>
+ </simpleType>
+ <simpleType name = "inline_progression_dimension_maximum_Type">
+ <union memberTypes = "fo:auto_Type fo:length_Type"/>
+ </simpleType>
+ <simpleType name = "inline_progression_dimension_optimum_Type">
+ <union memberTypes = "fo:auto_Type fo:length_Type"/>
+ </simpleType>
+ <simpleType name = "baseline_shift_Type">
+ <union memberTypes = "fo:baseline_base_Type fo:percentage_Type fo:length_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "space_start_precedence_Type">
+ <union memberTypes = "fo:integer_Type fo:force_Type"/>
+ </simpleType>
+ <simpleType name = "space_end_precedence_Type">
+ <union memberTypes = "fo:integer_Type fo:force_Type"/>
+ </simpleType>
+ <simpleType name = "space_after_precedence_Type">
+ <union memberTypes = "fo:integer_Type fo:force_Type"/>
+ </simpleType>
+ <simpleType name = "space_before_precedence_Type">
+ <union memberTypes = "fo:integer_Type fo:force_Type"/>
+ </simpleType>
+ <simpleType name = "widows_Type">
+ <union memberTypes = "fo:integer_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "orphans_Type">
+ <union memberTypes = "fo:integer_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "space_start_maximum_Type">
+ <union memberTypes = "fo:length_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "space_start_minimum_Type">
+ <union memberTypes = "fo:length_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "space_end_minimum_Type">
+ <union memberTypes = "fo:length_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "space_end_optimum_Type">
+ <union memberTypes = "fo:length_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "space_before_minimum_Type">
+ <union memberTypes = "fo:length_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "space_after_maximum_Type">
+ <union memberTypes = "fo:length_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "space_start_optimum_Type">
+ <union memberTypes = "fo:length_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "space_end_maximum_Type">
+ <union memberTypes = "fo:length_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "space_before_optimum_Type">
+ <union memberTypes = "fo:length_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "space_before_maximum_Type">
+ <union memberTypes = "fo:length_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "space_after_optimum_Type">
+ <union memberTypes = "fo:length_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "space_after_minimum_Type">
+ <union memberTypes = "fo:length_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "left_Type">
+ <union memberTypes = "fo:length_Type fo:percentage_Type fo:auto_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "bottom_Type">
+ <union memberTypes = "fo:length_Type fo:percentage_Type fo:auto_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "right_Type">
+ <union memberTypes = "fo:length_Type fo:percentage_Type fo:auto_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "top_Type">
+ <union memberTypes = "fo:length_Type fo:percentage_Type fo:auto_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "start_indent_Type">
+ <union memberTypes = "fo:length_Type fo:percentage_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "last_line_end_indent_Type">
+ <union memberTypes = "fo:length_Type fo:percentage_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "provisional_distance_between_starts_Type">
+ <union memberTypes = "fo:length_Type fo:percentage_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "end_indent_Type">
+ <union memberTypes = "fo:length_Type fo:percentage_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "extent_Type">
+ <union memberTypes = "fo:length_Type fo:percentage_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "provisional_label_separation_Type">
+ <union memberTypes = "fo:length_Type fo:percentage_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "length_percentage_Type">
+ <union memberTypes = "fo:length_Type fo:percentage_Type"/>
+ </simpleType>
+ <simpleType name = "hyphenation_ladder_count_Type">
+ <union memberTypes = "fo:no_limit_Type fo:integer_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "background_position_horizontal_Type">
+ <union memberTypes = "fo:percentage_Type fo:length_Type fo:horizontal_position_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "background_position_vertical_Type">
+ <union memberTypes = "fo:percentage_Type fo:length_Type fo:vertical_position_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "leader_pattern_width_Type">
+ <union memberTypes = "fo:use_font_metrics_Type fo:length_Type fo:percentage_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "text_altitude_Type">
+ <union memberTypes = "fo:use_font_metrics_Type fo:length_Type fo:percentage_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "text_depth_Type">
+ <union memberTypes = "fo:use_font_metrics_Type fo:length_Type fo:percentage_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "border_before_width_Type">
+ <union memberTypes = "fo:width_Type fo:length_Type fo:length_conditional_Type fo:inherit_Type"/>
+ </simpleType>
+ <simpleType name = "border_top_width_Type">
+ <union memberTypes = "fo:width_Type fo:length_Type fo:inherit_Type"/>
+ </simpleType>
+
+ <annotation>
+ <documentation>
+ Element definitions
+ </documentation>
+ </annotation>
+
+ <element name = "root">
+ <complexType>
+ <sequence>
+ <element ref = "fo:layout-master-set"/>
+ <element ref = "fo:declarations" minOccurs = "0"/>
+ <element ref = "fo:page-sequence" maxOccurs = "unbounded"/>
+ </sequence>
+ <attribute name = "media-usage" type = "fo:media_usage_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "declarations">
+ <complexType>
+ <sequence>
+ <element ref = "fo:color-profile" maxOccurs = "unbounded"/>
+ <any minOccurs = "0" maxOccurs = "unbounded" namespace = "##other" processContents = "skip"/>
+ </sequence>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "color-profile">
+ <complexType>
+ <attribute name = "src" type = "xs:string" use = "required"/>
+ <attribute name = "color-profile-name" type = "xs:string" use = "required"/>
+ <attribute name = "rendering-intent" type = "fo:rendering_intent_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "layout-master-set">
+ <complexType>
+ <choice maxOccurs = "unbounded">
+ <element ref = "fo:simple-page-master"/>
+ <element ref = "fo:page-sequence-master"/>
+ </choice>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "page-sequence-master">
+ <complexType>
+ <choice maxOccurs = "unbounded">
+ <element ref = "fo:single-page-master-reference"/>
+ <element ref = "fo:repeatable-page-master-reference"/>
+ <element ref = "fo:repeatable-page-master-alternatives"/>
+ </choice>
+ <attribute name = "master-name" type = "xs:string" use = "required"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "single-page-master-reference">
+ <complexType>
+ <attribute name = "master-reference" type = "xs:string" use = "required"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "repeatable-page-master-reference">
+ <complexType>
+ <attribute name = "master-reference" type = "xs:string" use = "required"/>
+ <attribute name = "maximum-repeats" type = "fo:integer_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "repeatable-page-master-alternatives">
+ <complexType>
+ <sequence>
+ <element ref = "fo:conditional-page-master-reference" maxOccurs = "unbounded"/>
+ </sequence>
+ <attribute name = "maximum-repeats" type = "fo:integer_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "conditional-page-master-reference">
+ <complexType>
+ <attribute name = "master-reference" type = "xs:string" use = "required"/>
+ <attribute name = "page-position" type = "fo:page_position_Type"/>
+ <attribute name = "odd-or-even" type = "fo:odd_or_even_Type"/>
+ <attribute name = "blank-or-not-blank" type = "fo:blank_or_not_blank_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "simple-page-master">
+ <complexType>
+ <sequence>
+ <element ref = "fo:region-body"/>
+ <element ref = "fo:region-before" minOccurs = "0"/>
+ <element ref = "fo:region-after" minOccurs = "0"/>
+ <element ref = "fo:region-start" minOccurs = "0"/>
+ <element ref = "fo:region-end" minOccurs = "0"/>
+ </sequence>
+ <attributeGroup ref = "fo:Margin_Properties_Block_List"/>
+ <attribute name = "master-name" type = "xs:string" use = "required"/>
+ <attribute name = "page-height" type = "fo:length_Type"/>
+ <attribute name = "page-width" type = "fo:length_Type"/>
+ <attributeGroup ref = "fo:reference_Properties_List"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "region-body">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable <attribute name = "display-align" type = "fo:display_align_Type"/>
+ </documentation>
+ </annotation>
+ <attributeGroup ref = "fo:Margin_Properties_Block_List"/>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:clip_Properties_List"/>
+ <attribute name = "column-count" type = "fo:integer_Type"/>
+ <attribute name = "column-gap" type = "fo:length_Type"/>
+ <attribute name = "overflow" type = "fo:overflow_Type"/>
+ <attribute name = "region-name" type = "xs:string"/>
+ <attributeGroup ref = "fo:reference_Properties_List"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "region-before">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable <attribute name = "display-align" type = "fo:display_align_Type"/>
+ </documentation>
+ </annotation>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:clip_Properties_List"/>
+ <attribute name = "extent" type = "fo:extent_Type"/>
+ <attribute name = "overflow" type = "fo:overflow_Type"/>
+ <attribute name = "precedence" type = "fo:precedence_Type"/>
+ <attribute name = "region-name" type = "xs:string"/>
+ <attributeGroup ref = "fo:reference_Properties_List"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "region-after">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable <attribute name = "display-align" type = "fo:display_align_Type"/>
+ </documentation>
+ </annotation>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:clip_Properties_List"/>
+ <attribute name = "extent" type = "fo:extent_Type"/>
+ <attribute name = "overflow" type = "fo:overflow_Type"/>
+ <attribute name = "precedence" type = "fo:precedence_Type"/>
+ <attribute name = "region-name" type = "xs:string"/>
+ <attributeGroup ref = "fo:reference_Properties_List"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "region-start">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable <attribute name = "display-align" type = "fo:display_align_Type"/>
+ </documentation>
+ </annotation>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:clip_Properties_List"/>
+ <attribute name = "extent" type = "fo:extent_Type"/>
+ <attribute name = "overflow" type = "fo:overflow_Type"/>
+ <attribute name = "precedence" type = "fo:precedence_Type"/>
+ <attribute name = "region-name" type = "xs:string"/>
+ <attributeGroup ref = "fo:reference_Properties_List"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "region-end">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable <attribute name = "display-align" type = "fo:display_align_Type"/>
+ </documentation>
+ </annotation>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:clip_Properties_List"/>
+ <attribute name = "extent" type = "fo:extent_Type"/>
+ <attribute name = "overflow" type = "fo:overflow_Type"/>
+ <attribute name = "precedence" type = "fo:precedence_Type"/>
+ <attribute name = "region-name" type = "xs:string"/>
+ <attributeGroup ref = "fo:reference_Properties_List"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "page-sequence">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "country" type = "fo:country_Type"/>
+ <attribute name = "language" type = "fo:language_Type"/>
+ </documentation>
+ </annotation>
+ <sequence>
+ <element ref = "fo:title" minOccurs = "0"/>
+ <element ref = "fo:static-content" minOccurs = "0" maxOccurs = "unbounded"/>
+ <element ref = "fo:flow"/>
+ </sequence>
+ <attribute name = "id" type = "xs:string"/>
+ <attribute name = "master-reference" type = "xs:string" use = "required"/>
+ <attribute name = "initial-page-number" type = "fo:integer_Type"/>
+ <attribute name = "force-page-count" type = "fo:force_page_count_Type"/>
+ <attribute name = "format" type = "xs:string"/>
+ <attribute name = "letter-value" type = "fo:letter_value_Type"/>
+ <attribute name = "grouping-separator" type = "fo:character_Type"/>
+ <attribute name = "grouping-size" type = "fo:integer_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "title">
+ <complexType mixed = "true">
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "color" type = "fo:color_Type"/>
+ <attribute name = "line-height" type = "fo:line_height_Type"/>
+ <attribute name = "visibility" type = "fo:visibility_Type"/>
+ </documentation>
+ </annotation>
+ <choice minOccurs = "0" maxOccurs = "unbounded">
+ <group ref = "fo:inline_List"/>
+ <group ref = "fo:neutral_List"/>
+ </choice>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:Font_Properties_List"/>
+ <attributeGroup ref = "fo:Margin_Properties_Inline_List"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "static-content">
+ <complexType>
+ <choice maxOccurs = "unbounded">
+ <group ref = "fo:block_List"/>
+ <group ref = "fo:neutral_List"/>
+ <group ref = "fo:float_List"/>
+ <group ref = "fo:footnote_List"/>
+ </choice>
+ <attribute name = "flow-name" type = "xs:string" use = "required"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "flow">
+ <complexType>
+ <choice maxOccurs = "unbounded">
+ <group ref = "fo:marker_List"/>
+ <group ref = "fo:block_List"/>
+ <group ref = "fo:neutral_List"/>
+ <group ref = "fo:float_List"/>
+ <group ref = "fo:footnote_List"/>
+ </choice>
+ <attribute name = "flow-name" type = "xs:string" use = "required"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "block">
+ <complexType mixed = "true">
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "color" type = "fo:color_Type"/>
+ <attribute name = "last-line-end-indent" type = "fo:last_line_end_indent_Type"/>
+ <attribute name = "linefeed-treatment" type = "fo:linefeed_treatment_Type"/>
+ <attribute name = "line-height" type = "fo:line_height_Type"/>
+ <attribute name = "orphans" type = "fo:orphans_Type"/>
+ <attribute name = "white-space-treatment" type = "fo:white_space_treatment_Type"/>
+ <attribute name = "text-align" type = "fo:text_align_Type"/>
+ <attribute name = "text-align-last" type = "fo:text_align_last_Type"/>
+ <attribute name = "text-indent" type = "fo:length_percentage_Type"/>
+ <attribute name = "visibility" type = "fo:visibility_Type"/>
+ <attribute name = "white-space-collapse" type = "fo:white_space_collapse_Type"/>
+ <attribute name = "widows" type = "fo:widows_Type"/>
+ <attribute name = "wrap-option" type = "fo:wrap_option_Type"/>
+ </documentation>
+ </annotation>
+ <choice minOccurs = "0" maxOccurs = "unbounded">
+ <group ref = "fo:marker_List"/>
+ <group ref = "fo:initial_property_set_List"/>
+ <group ref = "fo:inline_List"/>
+ <group ref = "fo:block_List"/>
+ <group ref = "fo:neutral_List"/>
+ <group ref = "fo:float_List"/>
+ <group ref = "fo:footnote_List"/>
+ </choice>
+ <attributeGroup ref = "fo:block_properties"/>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:Font_Properties_List"/>
+ <attributeGroup ref = "fo:Hyphenation_Properties_List"/>
+ <attributeGroup ref = "fo:Margin_Properties_Block_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attributeGroup ref = "fo:break_Properties_List"/>
+ <attributeGroup ref = "fo:text_one_Properties_List"/>
+ <attributeGroup ref = "fo:block_hyphenation_Properties_List"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attributeGroup ref = "fo:intrusion_displace_Properties_List"/>
+ <attributeGroup ref = "fo:keep_Properties_List"/>
+ <attributeGroup ref = "fo:line_height_Properties_List"/>
+ <attribute name = "span" type = "fo:span_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "block-container">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable <attribute name = "display-align" type = "fo:display_align_Type"/>
+ </documentation>
+ </annotation>
+ <choice maxOccurs = "unbounded">
+ <group ref = "fo:marker_List"/>
+ <group ref = "fo:block_List"/>
+ <group ref = "fo:neutral_List"/>
+ <group ref = "fo:float_List"/>
+ <group ref = "fo:footnote_List"/>
+ </choice>
+ <attributeGroup ref = "fo:block_properties"/>
+ <attributeGroup ref = "fo:Absolute_Position_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:Margin_Properties_Block_List"/>
+ <attributeGroup ref = "fo:progression_Properties_List"/>
+ <attributeGroup ref = "fo:break_Properties_List"/>
+ <attributeGroup ref = "fo:clip_Properties_List"/>
+ <attribute name = "height" type = "fo:height_Type"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attributeGroup ref = "fo:intrusion_displace_Properties_List"/>
+ <attributeGroup ref = "fo:keep_Properties_List"/>
+ <attribute name = "overflow" type = "fo:overflow_Type"/>
+ <attributeGroup ref = "fo:reference_Properties_List"/>
+ <attribute name = "span" type = "fo:span_Type"/>
+ <attribute name = "width" type = "fo:height_Type"/>
+ <attribute name = "z-index" type = "fo:z_index_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "bidi-override">
+ <complexType mixed = "true">
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "color" type = "fo:color_Type"/>
+ <attribute name = "direction" type = "fo:direction_Type"/>
+ <attribute name = "letter-spacing" type = "fo:letter_spacing_Type"/>
+ <attribute name = "line-height" type = "fo:line_height_Type"/>
+ <attribute name = "score-spaces" type = "fo:score_spaces_Type"/>
+ <attribute name = "word-spacing" type = "fo:letter_spacing_Type"/>
+ </documentation>
+ </annotation>
+ <choice minOccurs = "0" maxOccurs = "unbounded">
+ <group ref = "fo:marker_List"/>
+ <group ref = "fo:inline_List"/>
+ <group ref = "fo:block_List"/>
+ <group ref = "fo:neutral_List"/>
+ <group ref = "fo:float_List"/>
+ <group ref = "fo:footnote_List"/>
+ </choice>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Font_Properties_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attribute name = "unicode-bidi" type = "fo:unicode_bidi_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ <attribute name = "vertical-align" type = "fo:vertical_align_Type"/>
+ </complexType>
+ </element>
+ <element name = "character">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "color" type = "fo:color_Type"/>
+ <attribute name = "glyph-orientation-horizontal" type = "fo:orientation_Type"/>
+ <attribute name = "glyph-orientation-vertical" type = "fo:orientation_Type"/>
+ <attribute name = "letter-spacing" type = "fo:letter_spacing_Type"/>
+ <attribute name = "line-height" type = "fo:line_height_Type"/>
+ <attribute name = "score-spaces" type = "fo:score_spaces_Type"/>
+ <attribute name = "text-transform" type = "fo:text_transform_Type"/>
+ <attribute name = "visibility" type = "fo:visibility_Type"/>
+ <attribute name = "word-spacing" type = "fo:letter_spacing_Type"/>
+ </documentation>
+ </annotation>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:Font_Properties_List"/>
+ <attributeGroup ref = "fo:Hyphenation_Properties_List"/>
+ <attributeGroup ref = "fo:Margin_Properties_Inline_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attribute name = "alignment-adjust" type = "fo:alignment_adjust_Type"/>
+ <attribute name = "treat-as-word-space" type = "fo:treat_as_word_space_Type"/>
+ <attribute name = "alignment-baseline" type = "fo:alignment_baseline_Type"/>
+ <attribute name = "baseline-shift" type = "fo:baseline_shift_Type"/>
+ <attribute name = "character" type = "fo:character_Type"/>
+ <attribute name = "dominant-baseline" type = "fo:dominant_baseline_Type"/>
+ <attributeGroup ref = "fo:text_one_Properties_List"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attribute name = "keep-with-next" type = "fo:keep_integer_Type"/>
+ <attribute name = "keep-with-previous" type = "fo:keep_integer_Type"/>
+ <attribute name = "suppress-at-line-break" type = "fo:suppress_at_line_break_Type"/>
+ <attribute name = "text-decoration" type = "fo:text_decoration_Type"/>
+ <attribute name = "text-shadow" type = "fo:text_shadow_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ <attribute name = "vertical-align" type = "fo:vertical_align_Type"/>
+ </complexType>
+ </element>
+ <element name = "initial-property-set">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "color" type = "fo:color_Type"/>
+ <attribute name = "letter-spacing" type = "fo:letter_spacing_Type"/>
+ <attribute name = "line-height" type = "fo:line_height_Type"/>
+ <attribute name = "score-spaces" type = "fo:score_spaces_Type"/>
+ <attribute name = "text-transform" type = "fo:text_transform_Type"/>
+ <attribute name = "word-spacing" type = "fo:letter_spacing_Type"/>
+ </documentation>
+ </annotation>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:Font_Properties_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attribute name = "text-decoration" type = "fo:text_decoration_Type"/>
+ <attribute name = "text-shadow" type = "fo:text_shadow_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "external-graphic">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "display-align" type = "fo:display_align_Type"/>
+ <attribute name = "line-height" type = "fo:line_height_Type"/>
+ <attribute name = "text-align" type = "fo:text_align_Type"/>
+ </documentation>
+ </annotation>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:Margin_Properties_Inline_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attribute name = "alignment-adjust" type = "fo:alignment_adjust_Type"/>
+ <attribute name = "alignment-baseline" type = "fo:alignment_baseline_Type"/>
+ <attribute name = "baseline-shift" type = "fo:baseline_shift_Type"/>
+ <attributeGroup ref = "fo:progression_Properties_List"/>
+ <attributeGroup ref = "fo:clip_Properties_List"/>
+ <attribute name = "content-height" type = "fo:content_height_Type"/>
+ <attribute name = "content-type" type = "xs:string"/>
+ <attribute name = "content-width" type = "fo:content_height_Type"/>
+ <attribute name = "dominant-baseline" type = "fo:dominant_baseline_Type"/>
+ <attribute name = "height" type = "fo:height_Type"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attribute name = "keep-with-next" type = "fo:keep_integer_Type"/>
+ <attribute name = "keep-with-previous" type = "fo:keep_integer_Type"/>
+ <attribute name = "overflow" type = "fo:overflow_Type"/>
+ <attribute name = "scaling" type = "fo:scaling_Type"/>
+ <attribute name = "scaling-method" type = "fo:scaling_method_Type"/>
+ <attribute name = "src" type = "xs:string" use = "required"/>
+ <attribute name = "width" type = "fo:height_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ <attribute name = "vertical-align" type = "fo:vertical_align_Type"/>
+ </complexType>
+ </element>
+ <element name = "instream-foreign-object">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "display-align" type = "fo:display_align_Type"/>
+ <attribute name = "line-height" type = "fo:line_height_Type"/>
+ <attribute name = "text-align" type = "fo:text_align_Type"/>
+ </documentation>
+ </annotation>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:Margin_Properties_Inline_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attribute name = "alignment-adjust" type = "fo:alignment_adjust_Type"/>
+ <attribute name = "alignment-baseline" type = "fo:alignment_baseline_Type"/>
+ <attribute name = "baseline-shift" type = "fo:baseline_shift_Type"/>
+ <attributeGroup ref = "fo:progression_Properties_List"/>
+ <attributeGroup ref = "fo:clip_Properties_List"/>
+ <attribute name = "content-height" type = "fo:content_height_Type"/>
+ <attribute name = "content-type" type = "xs:string"/>
+ <attribute name = "content-width" type = "fo:content_height_Type"/>
+ <attribute name = "dominant-baseline" type = "fo:dominant_baseline_Type"/>
+ <attribute name = "height" type = "fo:height_Type"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attribute name = "keep-with-next" type = "fo:keep_integer_Type"/>
+ <attribute name = "keep-with-previous" type = "fo:keep_integer_Type"/>
+ <attribute name = "overflow" type = "fo:overflow_Type"/>
+ <attribute name = "scaling" type = "fo:scaling_Type"/>
+ <attribute name = "scaling-method" type = "fo:scaling_method_Type"/>
+ <attribute name = "width" type = "fo:height_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ <attribute name = "vertical-align" type = "fo:vertical_align_Type"/>
+ </complexType>
+ </element>
+ <element name = "inline">
+ <complexType mixed = "true">
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "color" type = "fo:color_Type"/>
+ <attribute name = "line-height" type = "fo:line_height_Type"/>
+ <attribute name = "visibility" type = "fo:visibility_Type"/>
+ <attribute name = "wrap-option" type = "fo:wrap_option_Type"/>
+ </documentation>
+ </annotation>
+ <choice minOccurs = "0" maxOccurs = "unbounded">
+ <group ref = "fo:marker_List"/>
+ <group ref = "fo:inline_List"/>
+ <group ref = "fo:block_List"/>
+ <group ref = "fo:neutral_List"/>
+ <group ref = "fo:float_List"/>
+ <group ref = "fo:footnote_List"/>
+ </choice>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List">
+ <annotation>
+ <documentation>
+ <fop_result>Border and background properties not implemented</fop_result>
+ </documentation>
+ </annotation>
+ </attributeGroup>
+ <attributeGroup ref = "fo:Font_Properties_List"/>
+ <attributeGroup ref = "fo:Margin_Properties_Inline_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attribute name = "alignment-adjust" type = "fo:alignment_adjust_Type"/>
+ <attribute name = "alignment-baseline" type = "fo:alignment_baseline_Type"/>
+ <attribute name = "baseline-shift" type = "fo:baseline_shift_Type"/>
+ <attributeGroup ref = "fo:progression_Properties_List"/>
+ <attribute name = "dominant-baseline" type = "fo:dominant_baseline_Type"/>
+ <attribute name = "height" type = "fo:height_Type"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attributeGroup ref = "fo:keep_Properties_List"/>
+ <attribute name = "text-decoration" type = "fo:text_decoration_Type"/>
+ <attribute name = "width" type = "fo:height_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ <attribute name = "vertical-align" type = "fo:vertical_align_Type"/>
+ </complexType>
+ </element>
+ <element name = "inline-container">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "display-align" type = "fo:display_align_Type"/>
+ <attribute name = "line-height" type = "fo:line_height_Type"/>
+ </documentation>
+ </annotation>
+ <choice maxOccurs = "unbounded">
+ <group ref = "fo:marker_List"/>
+ <group ref = "fo:block_List"/>
+ <group ref = "fo:neutral_List"/>
+ <group ref = "fo:float_List"/>
+ <group ref = "fo:footnote_List"/>
+ </choice>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:Margin_Properties_Inline_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attribute name = "alignment-adjust" type = "fo:alignment_adjust_Type"/>
+ <attribute name = "alignment-baseline" type = "fo:alignment_baseline_Type"/>
+ <attribute name = "baseline-shift" type = "fo:baseline_shift_Type"/>
+ <attributeGroup ref = "fo:progression_Properties_List"/>
+ <attributeGroup ref = "fo:clip_Properties_List"/>
+ <attribute name = "dominant-baseline" type = "fo:dominant_baseline_Type"/>
+ <attribute name = "height" type = "fo:height_Type"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attributeGroup ref = "fo:keep_Properties_List"/>
+ <attribute name = "overflow" type = "fo:overflow_Type"/>
+ <attributeGroup ref = "fo:reference_Properties_List"/>
+ <attribute name = "width" type = "fo:height_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ <attribute name = "vertical-align" type = "fo:vertical_align_Type"/>
+ </complexType>
+ </element>
+ <element name = "leader">
+ <complexType mixed = "true">
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "color" type = "fo:color_Type"/>
+ <attribute name = "leader-alignment" type = "fo:leader_alignment_Type"/>
+ <attribute name = "leader-length" type = "fo:leader_length_Type"/>
+ <attribute name = "leader-length.minimum" type = "fo:length_Type"/>
+ <attribute name = "leader-length.optimum" type = "fo:length_Type"/>
+ <attribute name = "leader-length.maximum" type = "fo:length_Type"/>
+ <attribute name = "leader-pattern" type = "fo:leader_pattern_Type"/>
+ <attribute name = "leader-pattern-width" type = "fo:leader_pattern_width_Type"/>
+ <attribute name = "rule-style" type = "fo:rule_style_Type"/>
+ <attribute name = "rule-thickness" type = "fo:length_Type"/>
+ <attribute name = "letter-spacing" type = "fo:letter_spacing_Type"/>
+ <attribute name = "line-height" type = "fo:line_height_Type"/>
+ <attribute name = "visibility" type = "fo:visibility_Type"/>
+ <attribute name = "word-spacing" type = "fo:letter_spacing_Type"/>
+ </documentation>
+ </annotation>
+ <choice minOccurs = "0" maxOccurs = "unbounded">
+ <group ref = "fo:inline_List"/>
+ <group ref = "fo:neutral_List"/>
+ </choice>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:Font_Properties_List"/>
+ <attributeGroup ref = "fo:Margin_Properties_Inline_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attribute name = "alignment-adjust" type = "fo:alignment_adjust_Type"/>
+ <attribute name = "alignment-baseline" type = "fo:alignment_baseline_Type"/>
+ <attribute name = "baseline-shift" type = "fo:baseline_shift_Type"/>
+ <attribute name = "dominant-baseline" type = "fo:dominant_baseline_Type"/>
+ <attributeGroup ref = "fo:text_one_Properties_List"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attribute name = "keep-with-next" type = "fo:keep_integer_Type"/>
+ <attribute name = "keep-with-previous" type = "fo:keep_integer_Type"/>
+ <attribute name = "text-shadow" type = "fo:text_shadow_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ <attribute name = "vertical-align" type = "fo:vertical_align_Type"/>
+ </complexType>
+ </element>
+ <element name = "page-number">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "letter-spacing" type = "fo:letter_spacing_Type"/>
+ <attribute name = "line-height" type = "fo:line_height_Type"/>
+ <attribute name = "score-spaces" type = "fo:score_spaces_Type"/>
+ <attribute name = "text-transform" type = "fo:text_transform_Type"/>
+ <attribute name = "visibility" type = "fo:visibility_Type"/>
+ <attribute name = "word-spacing" type = "fo:letter_spacing_Type"/>
+ <attribute name = "wrap-option" type = "fo:wrap_option_Type"/>
+ </documentation>
+ </annotation>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:Font_Properties_List"/>
+ <attributeGroup ref = "fo:Margin_Properties_Inline_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attribute name = "alignment-adjust" type = "fo:alignment_adjust_Type"/>
+ <attribute name = "alignment-baseline" type = "fo:alignment_baseline_Type"/>
+ <attribute name = "baseline-shift" type = "fo:baseline_shift_Type"/>
+ <attribute name = "dominant-baseline" type = "fo:dominant_baseline_Type"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attribute name = "keep-with-next" type = "fo:keep_integer_Type"/>
+ <attribute name = "keep-with-previous" type = "fo:keep_integer_Type"/>
+ <attributeGroup ref = "fo:text_one_Properties_List"/>
+ <attribute name = "text-decoration" type = "fo:text_decoration_Type"/>
+ <attribute name = "text-shadow" type = "fo:text_shadow_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ <attribute name = "vertical-align" type = "fo:vertical_align_Type"/>
+ </complexType>
+ </element>
+ <element name = "page-number-citation">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "letter-spacing" type = "fo:letter_spacing_Type"/>
+ <attribute name = "line-height" type = "fo:line_height_Type"/>
+ <attribute name = "score-spaces" type = "fo:score_spaces_Type"/>
+ <attribute name = "text-transform" type = "fo:text_transform_Type"/>
+ <attribute name = "visibility" type = "fo:visibility_Type"/>
+ <attribute name = "word-spacing" type = "fo:letter_spacing_Type"/>
+ <attribute name = "wrap-option" type = "fo:wrap_option_Type"/>
+ </documentation>
+ </annotation>
+ <attribute name = "ref-id" type = "xs:string" use = "required"/>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:Font_Properties_List"/>
+ <attributeGroup ref = "fo:Margin_Properties_Inline_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attribute name = "alignment-adjust" type = "fo:alignment_adjust_Type"/>
+ <attribute name = "alignment-baseline" type = "fo:alignment_baseline_Type"/>
+ <attribute name = "baseline-shift" type = "fo:baseline_shift_Type"/>
+ <attribute name = "dominant-baseline" type = "fo:dominant_baseline_Type"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attribute name = "keep-with-next" type = "fo:keep_integer_Type"/>
+ <attribute name = "keep-with-previous" type = "fo:keep_integer_Type"/>
+ <attributeGroup ref = "fo:text_one_Properties_List"/>
+ <attribute name = "text-decoration" type = "fo:text_decoration_Type"/>
+ <attribute name = "text-shadow" type = "fo:text_shadow_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ <attribute name = "vertical-align" type = "fo:vertical_align_Type"/>
+ </complexType>
+ </element>
+ <element name = "table-and-caption">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "caption-side" type = "fo:caption_side_Type"/>
+ <attribute name = "text-align" type = "fo:text_align_Type"/>
+ </documentation>
+ </annotation>
+ <sequence>
+ <element ref = "fo:table-caption" minOccurs = "0"/>
+ <element ref = "fo:table"/>
+ </sequence>
+ <attributeGroup ref = "fo:block_properties"/>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:Margin_Properties_Block_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attributeGroup ref = "fo:break_Properties_List"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attributeGroup ref = "fo:intrusion_displace_Properties_List"/>
+ <attributeGroup ref = "fo:keep_Properties_List"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "table-caption">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "keep-together" type = "fo:keep_compound_Type"/>
+ <attribute name = "keep-together.within-line" type = "fo:keep_integer_Type"/>
+ <attribute name = "keep-together.within-column" type = "fo:keep_integer_Type"/>
+ <attribute name = "keep-together.within-page" type = "fo:keep_integer_Type"/>
+ </documentation>
+ </annotation>
+ <choice maxOccurs = "unbounded">
+ <group ref = "fo:marker_List"/>
+ <group ref = "fo:block_List"/>
+ <group ref = "fo:neutral_List"/>
+ <group ref = "fo:float_List"/>
+ <group ref = "fo:footnote_List"/>
+ </choice>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attributeGroup ref = "fo:progression_Properties_List"/>
+ <attribute name = "height" type = "fo:height_Type"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attributeGroup ref = "fo:intrusion_displace_Properties_List"/>
+ <attribute name = "width" type = "fo:height_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "table">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "border-collapse" type = "fo:border_collapse_Type"/>
+ <attribute name = "border-separation" type = "fo:length_bp_ip_direction_Type"/>
+ <attribute name = "border-spacing" type = "fo:length_Type"/>
+ <attribute name = "writing-mode" type = "fo:writing_mode_Type"/>
+ </documentation>
+ </annotation>
+ <sequence>
+ <element ref = "fo:table-column" minOccurs = "0" maxOccurs = "unbounded"/>
+ <element ref = "fo:table-header" minOccurs = "0"/>
+ <element ref = "fo:table-footer" minOccurs = "0"/>
+ <element ref = "fo:table-body" maxOccurs = "unbounded"/>
+ </sequence>
+ <attributeGroup ref = "fo:block_properties"/>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:Margin_Properties_Block_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attributeGroup ref = "fo:progression_Properties_List"/>
+ <attribute name = "border-after-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "border-before-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "border-end-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "border-start-precedence" type = "fo:precedence_Type"/>
+ <attributeGroup ref = "fo:break_Properties_List"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attributeGroup ref = "fo:intrusion_displace_Properties_List"/>
+ <attribute name = "height" type = "fo:height_Type"/>
+ <attributeGroup ref = "fo:keep_Properties_List"/>
+ <attribute name = "table-layout" type = "fo:table_layout_Type"/>
+ <attribute name = "table-omit-footer-at-break" type = "fo:table_omit_footer_at_break_Type"/>
+ <attribute name = "table-omit-header-at-break" type = "fo:table_omit_header_at_break_Type"/>
+ <attribute name = "width" type = "fo:height_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "table-column">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "visibility" type = "fo:visibility_Type"/>
+ </documentation>
+ </annotation>
+ <attributeGroup ref = "fo:Border_Properties_List"/>
+ <attributeGroup ref = "fo:Background_Properties_List"/>
+ <attribute name = "border-after-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "border-before-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "border-end-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "border-start-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "column-number" type = "fo:integer_Type"/>
+ <attribute name = "column-width" type = "fo:column_width_Type"/>
+ <attribute name = "number-columns-repeated" type = "fo:integer_Type"/>
+ <attribute name = "number-columns-spanned" type = "fo:integer_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "table-header">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable <attribute name = "visibility" type = "fo:visibility_Type"/>
+ </documentation>
+ </annotation>
+ <choice>
+ <element ref = "fo:table-row" maxOccurs = "unbounded"/>
+ <element ref = "fo:table-cell" maxOccurs = "unbounded"/>
+ </choice>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Properties_List"/>
+ <attributeGroup ref = "fo:Background_Properties_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attribute name = "border-after-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "border-before-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "border-end-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "border-start-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "table-footer">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable <attribute name = "visibility" type = "fo:visibility_Type"/>
+ </documentation>
+ </annotation>
+ <choice>
+ <element ref = "fo:table-row" maxOccurs = "unbounded"/>
+ <element ref = "fo:table-cell" maxOccurs = "unbounded"/>
+ </choice>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Properties_List"/>
+ <attributeGroup ref = "fo:Background_Properties_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attribute name = "border-after-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "border-before-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "border-end-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "border-start-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "table-body">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable <attribute name = "visibility" type = "fo:visibility_Type"/>
+ </documentation>
+ </annotation>
+ <choice>
+ <element ref = "fo:table-row" maxOccurs = "unbounded"/>
+ <element ref = "fo:table-cell" maxOccurs = "unbounded"/>
+ </choice>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Properties_List"/>
+ <attributeGroup ref = "fo:Background_Properties_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attribute name = "border-after-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "border-before-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "border-end-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "border-start-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "table-row">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable <attribute name = "visibility" type = "fo:visibility_Type"/>
+ </documentation>
+ </annotation>
+ <sequence>
+ <element ref = "fo:table-cell" maxOccurs = "unbounded"/>
+ </sequence>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Properties_List"/>
+ <attributeGroup ref = "fo:Background_Properties_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attribute name = "block-progression-dimension" type = "fo:margin_width_Type"/>
+ <attribute name = "block-progression-dimension.minimum" type = "fo:length_Type"/>
+ <attribute name = "block-progression-dimension.optimum" type = "fo:block_progression_dimension_optimum_Type"/>
+ <attribute name = "block-progression-dimension.maximum" type = "fo:block_progression_dimension_maximum_Type"/>
+ <attribute name = "border-after-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "border-before-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "border-end-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "border-start-precedence" type = "fo:precedence_Type"/>
+ <attributeGroup ref = "fo:break_Properties_List"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attribute name = "height" type = "fo:height_Type"/>
+ <attributeGroup ref = "fo:keep_Properties_List"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ <attribute name = "page-break-after" type = "fo:page_break_after_Type"/>
+ <attribute name = "page-break-before" type = "fo:page_break_after_Type"/>
+ </complexType>
+ </element>
+ <element name = "table-cell">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "display-align" type = "fo:display_align_Type"/>
+ <attribute name = "relative-align" type = "fo:relative_align_Type"/>
+ <attribute name = "empty-cells" type = "fo:empty_cells_Type"/>
+ </documentation>
+ </annotation>
+ <choice maxOccurs = "unbounded">
+ <group ref = "fo:marker_List"/>
+ <group ref = "fo:block_List"/>
+ <group ref = "fo:neutral_List"/>
+ <group ref = "fo:float_List"/>
+ <group ref = "fo:footnote_List"/>
+ </choice>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attribute name = "border-after-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "border-before-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "border-end-precedence" type = "fo:precedence_Type"/>
+ <attribute name = "border-start-precedence" type = "fo:precedence_Type"/>
+ <attributeGroup ref = "fo:progression_Properties_List"/>
+ <attribute name = "column-number" type = "fo:integer_Type"/>
+ <attribute name = "ends-row" type = "fo:ends_row_Type"/>
+ <attribute name = "height" type = "fo:height_Type"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attribute name = "number-columns-spanned" type = "fo:integer_Type"/>
+ <attribute name = "number-rows-spanned" type = "fo:integer_Type"/>
+ <attribute name = "starts-row" type = "fo:starts_row_Type"/>
+ <attribute name = "width" type = "fo:height_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ <attribute name = "vertical-align" type = "fo:vertical_align_Type"/>
+ </complexType>
+ </element>
+ <element name = "list-block">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "provisional-distance-between-starts" type = "fo:provisional_distance_between_starts_Type"/>
+ <attribute name = "provisional-label-separation" type = "fo:provisional_label_separation_Type"/>
+ </documentation>
+ </annotation>
+ <sequence>
+ <element ref = "fo:list-item" maxOccurs = "unbounded"/>
+ </sequence>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:Margin_Properties_Block_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attributeGroup ref = "fo:break_Properties_List"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attributeGroup ref = "fo:intrusion_displace_Properties_List"/>
+ <attributeGroup ref = "fo:keep_Properties_List"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ <attributeGroup ref = "fo:list_properties"/>
+ </complexType>
+ </element>
+ <element name = "list-item">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable <attribute name = "relative-align" type = "fo:relative_align_Type"/>
+ </documentation>
+ </annotation>
+ <sequence>
+ <element ref = "fo:list-item-label"/>
+ <element ref = "fo:list-item-body"/>
+ </sequence>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:Margin_Properties_Block_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attributeGroup ref = "fo:break_Properties_List"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attributeGroup ref = "fo:intrusion_displace_Properties_List"/>
+ <attributeGroup ref = "fo:keep_Properties_List"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ <attributeGroup ref = "fo:list_properties"/>
+ </complexType>
+ </element>
+ <element name = "list-item-body">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "keep-together" type = "fo:keep_compound_Type"/>
+ <attribute name = "keep-together.within-line" type = "fo:keep_integer_Type"/>
+ <attribute name = "keep-together.within-column" type = "fo:keep_integer_Type"/>
+ <attribute name = "keep-together.within-page" type = "fo:keep_integer_Type"/>
+ </documentation>
+ </annotation>
+ <choice maxOccurs = "unbounded">
+ <group ref = "fo:marker_List"/>
+ <group ref = "fo:block_List"/>
+ <group ref = "fo:neutral_List"/>
+ <group ref = "fo:float_List"/>
+ <group ref = "fo:footnote_List"/>
+ </choice>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ <attributeGroup ref = "fo:list_properties"/>
+ </complexType>
+ </element>
+ <element name = "list-item-label">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable
+ <attribute name = "keep-together" type = "fo:keep_compound_Type"/>
+ <attribute name = "keep-together.within-line" type = "fo:keep_integer_Type"/>
+ <attribute name = "keep-together.within-column" type = "fo:keep_integer_Type"/>
+ <attribute name = "keep-together.within-page" type = "fo:keep_integer_Type"/>
+ </documentation>
+ </annotation>
+ <choice maxOccurs = "unbounded">
+ <group ref = "fo:marker_List"/>
+ <group ref = "fo:block_List"/>
+ <group ref = "fo:neutral_List"/>
+ <group ref = "fo:float_List"/>
+ <group ref = "fo:footnote_List"/>
+ </choice>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ <attributeGroup ref = "fo:list_properties"/>
+ </complexType>
+ </element>
+ <element name = "float">
+ <complexType>
+ <choice maxOccurs = "unbounded">
+ <group ref = "fo:block_List"/>
+ <group ref = "fo:neutral_List"/>
+ <group ref = "fo:float_List"/>
+ <group ref = "fo:footnote_List"/>
+ </choice>
+ <attribute name = "float" type = "fo:float_Type"/>
+ <attribute name = "clear" type = "fo:clear_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "footnote">
+ <complexType>
+ <sequence>
+ <element ref = "fo:inline"/>
+ <element ref = "fo:footnote-body"/>
+ </sequence>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "footnote-body">
+ <complexType>
+ <choice maxOccurs = "unbounded">
+ <group ref = "fo:block_List"/>
+ <group ref = "fo:neutral_List"/>
+ <group ref = "fo:float_List"/>
+ <group ref = "fo:footnote_List"/>
+ </choice>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "basic-link">
+ <complexType mixed = "true">
+ <annotation>
+ <documentation>
+ Inheritable <attribute name = "line-height" type = "fo:line_height_Type"/>
+ </documentation>
+ </annotation>
+ <choice minOccurs = "0" maxOccurs = "unbounded">
+ <group ref = "fo:marker_List"/>
+ <group ref = "fo:inline_List"/>
+ <group ref = "fo:block_List"/>
+ <group ref = "fo:neutral_List"/>
+ <group ref = "fo:float_List"/>
+ <group ref = "fo:footnote_List"/>
+ </choice>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attributeGroup ref = "fo:Aural_Properties_List"/>
+ <attributeGroup ref = "fo:Border_Padding_and_Background_Properties_List"/>
+ <attributeGroup ref = "fo:Margin_Properties_Inline_List"/>
+ <attributeGroup ref = "fo:Relative_Position_Properties_List"/>
+ <attribute name = "alignment-adjust" type = "fo:alignment_adjust_Type"/>
+ <attribute name = "alignment-baseline" type = "fo:alignment_baseline_Type"/>
+ <attribute name = "baseline-shift" type = "fo:baseline_shift_Type"/>
+ <attribute name = "destination-placement-offset" type = "fo:length_Type"/>
+ <attribute name = "dominant-baseline" type = "fo:dominant_baseline_Type"/>
+ <attribute name = "external-destination" type = "xs:string"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attribute name = "indicate-destination" type = "fo:indicate_destination_Type"/>
+ <attribute name = "internal-destination" type = "xs:string"/>
+ <attributeGroup ref = "fo:keep_Properties_List"/>
+ <attribute name = "show-destination" type = "fo:show_destination_Type"/>
+ <attribute name = "target-processing-context" type = "xs:string"/>
+ <attribute name = "target-presentation-context" type = "xs:string"/>
+ <attribute name = "target-stylesheet" type = "xs:string"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ <attribute name = "vertical-align" type = "fo:vertical_align_Type"/>
+ </complexType>
+ </element>
+ <element name = "wrapper">
+ <complexType mixed = "true">
+ <choice minOccurs = "0" maxOccurs = "unbounded">
+ <group ref = "fo:marker_List"/>
+ <group ref = "fo:inline_List"/>
+ <group ref = "fo:block_List"/>
+ <group ref = "fo:neutral_List"/>
+ <group ref = "fo:float_List"/>
+ <group ref = "fo:footnote_List"/>
+ </choice>
+ <attribute name = "id" type = "xs:string"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "marker">
+ <complexType mixed = "true">
+ <choice minOccurs = "0" maxOccurs = "unbounded">
+ <group ref = "fo:inline_List"/>
+ <group ref = "fo:block_List"/>
+ </choice>
+ <attribute name = "marker-class-name" type = "xs:string"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "retrieve-marker">
+ <complexType>
+ <attribute name = "retrieve-class-name" type = "xs:string"/>
+ <attribute name = "retrieve-position" type = "fo:retrieve_position_Type"/>
+ <attribute name = "retrieve-boundary" type = "fo:retrieve_boundary_Type"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "multi-switch">
+ <complexType>
+ <annotation>
+ <documentation>
+ Inheritable <attribute name = "auto-restore" type = "fo:auto_restore_Type"/>
+ </documentation>
+ </annotation>
+ <sequence>
+ <element ref = "fo:multi-case"/>
+ </sequence>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "multi-case">
+ <complexType mixed = "true">
+ <choice minOccurs = "0" maxOccurs = "unbounded">
+ <group ref = "fo:inline_List"/>
+ <group ref = "fo:block_List"/>
+ <group ref = "fo:neutral_List"/>
+ <group ref = "fo:float_List"/>
+ <group ref = "fo:footnote_List"/>
+ </choice>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attribute name = "starting-state" type = "fo:starting_state_Type"/>
+ <attribute name = "case-name" type = "xs:string"/>
+ <attribute name = "case-title" type = "xs:string"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "multi-toggle">
+ <complexType mixed = "true">
+ <choice minOccurs = "0" maxOccurs = "unbounded">
+ <group ref = "fo:inline_List"/>
+ <group ref = "fo:block_List"/>
+ <group ref = "fo:neutral_List"/>
+ <group ref = "fo:float_List"/>
+ <group ref = "fo:footnote_List"/>
+ </choice>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attribute name = "switch-to" type = "xs:string"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ <attribute name = "vertical-align" type = "fo:vertical_align_Type"/>
+ </complexType>
+ </element>
+ <element name = "multi-properties">
+ <complexType>
+ <sequence>
+ <element ref = "fo:multi-property-set" maxOccurs = "unbounded"/>
+ <element ref = "fo:wrapper"/>
+ </sequence>
+ <attributeGroup ref = "fo:Accessibility_Properties_List"/>
+ <attribute name = "id" type = "xs:string"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+ <element name = "multi-property-set">
+ <complexType>
+ <attribute name = "id" type = "xs:string"/>
+ <attribute name = "active-state" type = "fo:active_state_Type" use = "required"/>
+ <attributeGroup ref = "fo:inheritable_properties_List"/>
+ </complexType>
+ </element>
+</schema>
--- /dev/null
+To update the docs:
+
+The documentation is generated using forrest (http://xml.apache.org/forrest/).
+
+The current procedure is:
+
+- checkout xml-forrest module
+- run: build.sh(bat) dist
+- follow instructions to set FORREST_HOME and path
+- go to xml-fop directory
+- run forrest(.bat)
+
+The documents will then be placed in build/site/
+
+NOTE: the compliance.html currently does not work, it can be fixed by
+adding the dtd ref to: build/tmp/context/resources/schema/catalog
+and placing the dtd in: build/tmp/context/resources/schema/dtd/
+
+To update website
+- put the generated docs into the xml-site module targets/fop/
+ this could be done by simlinking the destination to the targets/fop
+- commit the documents
+
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE book PUBLIC "-//APACHE//DTD Cocoon Documentation Book V1.0//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-cocoon2/src/documentation/xdocs/dtd/book-cocoon-v10.dtd">
+
+
+ <book software="FOP"
+ title="FOP"
+ copyright="@year@ The Apache Software Foundation"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+
+ <menu label="About">
+ <menu-item label="Index" href="index.html"/>
+ <menu-item label="News" href="news.html"/>
+ <menu-item label="FAQs" href="faq.html"/>
+ <menu-item label="Download" href="download.html"/>
+ <menu-item label="Release Notes" href="relnotes.html"/>
+ <menu-item label="Getting Help" href="gethelp.html"/>
+ <menu-item label="Examples" href="examples.html"/>
+ </menu>
+
+ <menu label="Project">
+ <menu-item label="Status" href="status.html"/>
+ <menu-item label="Changes" href="changes.html"/>
+ <menu-item label="Todo" href="todo.html"/>
+ </menu>
+
+ <menu label="Using FOP">
+ <menu-item label="Running" href="running.html"/>
+ <menu-item label="Embedding" href="embedding.html"/>
+ <menu-item label="Output Formats" href="output.html"/>
+ <menu-item label="Compliance" href="compliance.html"/>
+ <menu-item label="Implemented" href="implemented.html"/>
+ <menu-item label="Limitations" href="limitations.html"/>
+ </menu>
+
+ <menu label="Extras">
+ <menu-item label="SVG" href="svg.html"/>
+ <menu-item label="Extensions" href="extensions.html"/>
+ <menu-item label="Fonts" href="fonts.html"/>
+ <menu-item label="Configuration" href="configuration.html"/>
+ </menu>
+
+ <menu label="Developing">
+ <menu-item label="Getting Involved" href="involved.html"/>
+ <menu-item label="Compiling" href="compiling.html"/>
+ <menu-item label="Testing" href="testing.html"/>
+ </menu>
+
+ <menu label="Resources">
+ <menu-item label="Bugs" href="bugs.html"/>
+ <menu-item label="Resources" href="resources.html"/>
+ <menu-item label="License" href="license.html"/>
+ <external label="Patch queue" href="http://nagoya.apache.org/bugzilla/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&product=Fop&short_desc=%5BPATCH%5D&short_desc_type=allwordssubstr&long_desc=&long_desc_type=allwordssubstr&bug_file_loc=&bug_file_loc_type=allwordssubstr&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&namedcmd=Fop+all&newqueryname=fop+patch+queue&tofooter=1&order=Reuse+same+sort+as+last+time"/>
+ </menu>
+ </book>
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<document>
+ <header>
+ <title>Bugs</title>
+ </header>
+ <body>
+ <section>
+ <title>Bugs Already Reported</title>
+ <p>A list of unresolved reported bugs can be found at
+<link href="http://nagoya.apache.org/bugzilla/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&product=Fop&short_desc=&short_desc_type=allwordssubstr&long_desc=&long_desc_type=allwordssubstr&bug_file_loc=&bug_file_loc_type=allwordssubstr&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&order=bugs.component">FOP
+Open Bugs (Bugzilla)</link>.</p>
+ </section>
+ <section>
+ <title>Reporting New Bugs</title>
+ <p>User reports of bugs and requests for enhancements are extremely
+important parts of FOP development, and we appreciate the time you take to help
+us track these issues down.
+To help us ensure that the bug database is as useful as it should be, please
+use the following checklist if you are considering reporting a new bug:</p>
+ <ul>
+ <li>Is your issue really a request to comply with some aspect of the
+XSL-FO standard?
+If so, please do not enter a bug report.
+The developers already carefully track which standard requirements have been
+implemented.
+Other enhancement requests are welcome (although they are not technically
+"bugs", they are entered and tracked in the same system -- just be sure to mark
+the issue as an enhancement).</li>
+ <li>Is your issue addressed by an <link
+href="http://xml.apache.org/fop/faq.html">FAQ</link>? If so, please do not
+enter a bug report unless the FAQ did not adequately address your issue.</li>
+ <li>Has this bug already been reported?
+See section above for a list of bugs that have already been reported.
+If the bug has already been reported, please do not open a new bug report.
+Reporting the same bug twice will only slow the development team down.
+However, if you have insight that may help developers track an existing problem,
+please add comments and/or file attachments to the existing bug.</li>
+ <li>Do you know how to write a good bug report?
+Please review the
+<link href="http://nagoya.apache.org/bugzilla/bugwritinghelp.html">Apache Bug
+Writing Guidelines</link> before submitting your report.</li>
+ <li>If, and only if, you have passed all of the above steps, please
+enter a new bug report at
+<link href="http://nagoya.apache.org/bugzilla/enter_bug.cgi?product=Fop">The
+FOP bug database (Bugzilla)</link>.
+You will be asked to login to an existing Bugzilla account or to create a new
+one.
+When entering the bug report, please make your description complete and concise.
+If appropriate, attach a minimal fo file to your report which demonstrates the
+problem.</li>
+ <li>After submission, a copy of your bug report will be automatically
+sent to the FOP developer discussion list.</li>
+ </ul>
+ </section>
+ </body>
+</document>
+
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<document>
+ <header>
+ <title>Compiling FOP</title>
+ </header>
+ <body>
+ <section>
+ <title>Compiling FOP</title>
+ <p>Compilation is started by executing build, either as a batch file on win32 (build.bat) or as a shell script on unix. Before you
+ can start one of these scripts, you have to setup your classpath and the environment variable JAVA_HOME (see below).</p>
+ <p> The compilation uses Ant,
+ a replacement of make (you can find more information about Ant at
+ <link href="http://jakarta.apache.org/ant/">jakarta.apache.org</link>).
+ build.xml is the replacement of makefile. Look there for detailed information on the build
+ process and different targets. </p>
+ <p>A help screen is shown by calling "build usage".</p>
+ <p>If you only want to use Fop, you don't need to build it. A fop.jar comes with the distribution.</p>
+ <section>
+ <title>Setting up your classpath</title>
+ <note>You don't have to setup your classpath; all libraries needed to compile Fop are coming with
+ the distribution and are referenced by the build script, so you only need to care about them,
+ if you build Fop in any other way. See build.bat/build.sh for details. </note>
+ </section>
+ <section>
+ <title>Setting of JAVA_HOME</title>
+ <p>You have to set the enviroment variable JAVA_HOME. It must point to your local JDK
+ root directory. This is true, even if you use JDK 1.2 or above, which normally don't need this
+ setting. It is used by Ant, the compilation software.</p>
+ </section>
+ <section>
+ <title>Problems</title>
+ <p>If you have problems compiling Fop, please try this first: </p>
+ <ul>
+ <li>delete the build directory completely and try a new build from scratch</li>
+ <li>check, whether you have an older version of xerces.jar, xalan.jar, batik.jar somewhere in
+ you classpath.</li>
+ </ul>
+ <p>If you still have problems, please look at the
+ page <link href="bugs.html">bugs</link>, for further help.</p>
+ </section>
+</section>
+</body>
+</document>
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE compliance PUBLIC "-//APACHE//DTD Compliance V1.0//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-fop/src/documentation/resources/schema/dtd/compliance-v10.dtd?rev=1.3">
+
+<compliance>
+ <head>
+ <title>FOP 0.20.4 Standards Compliance</title>
+ </head>
+ <body>
+ <standard name="W3C XSL-FO 1.0 Standard" baseURL="http://www.w3.org/TR/xsl/" compliance-level-1-desc="Basic" compliance-level-2-desc="Extended" compliance-level-3-desc="Complete">
+ <explanatory>
+ <p>FOP's goal is to be compliant with the W3C XSL-FO 1.0 standard. There are three levels of compliance specified in the standard: basic, extended, and complete. In the tables below, blue indicates support at the specified level of compliance, and red indicates a lack of support.</p>
+ </explanatory>
+ <level-1 name="XSL-FO Object Support" citation="§6" extURL="slice6.html#fo-section" compliance-item-desc="Object Name">
+ <explanatory>
+ <p>The following is a summary of FOP's current support for the standard XSL-FO objects.</p>
+ </explanatory>
+ <level-2 name="Declarations and Pagination and Layout Formatting Objects" citation="§6.4" extURL="slice6.html#section-N10029-Declarations-and-Pagination-and-Layout-Formatting-Objects">
+ <level-3 name="root" citation="§6.4.2" extURL="slice6.html#fo_root" compliance-level="1" comply="yes"/>
+ <level-3 name="declarations" citation="§6.4.3" extURL="slice6.html#fo_declarations" compliance-level="1" comply="no"/>
+ <level-3 name="color-profile" citation="§6.4.4" extURL="slice6.html#fo_color-profile" compliance-level="2" comply="no"/>
+ <level-3 name="page-sequence" citation="§6.4.5" extURL="slice6.html#fo_page-sequence" compliance-level="1" comply="yes"/>
+ <level-3 name="layout-master-set" citation="§6.4.6" extURL="slice6.html#fo_layout-master-set" compliance-level="1" comply="yes"/>
+ <level-3 name="page-sequence-master" citation="§6.4.7" extURL="slice6.html#fo_page-sequence-master" compliance-level="1" comply="yes"/>
+ <level-3 name="single-page-master-reference" citation="§6.4.8" extURL="slice6.html#fo_single-page-master-reference" compliance-level="1" comply="yes"/>
+ <level-3 name="repeatable-page-master-reference" citation="§6.4.9" extURL="slice6.html#fo_repeatable-page-master-reference" compliance-level="1" comply="yes"/>
+ <level-3 name="repeatable-page-master-alternatives" citation="§6.4.10" extURL="slice6.html#fo_repeatable-page-master-alternatives" compliance-level="2" comply="yes"/>
+ <level-3 name="conditional-page-master-reference" citation="§6.4.11" extURL="slice6.html#fo_conditional-page-master-reference" compliance-level="2" comply="yes"/>
+ <level-3 name="simple-page-master" citation="§6.4.12" extURL="slice6.html#fo_simple-page-master" compliance-level="1" comply="yes"/>
+ <level-3 name="region-body" citation="§6.4.13" extURL="slice6.html#fo_region-body" compliance-level="1" comply="yes"/>
+ <level-3 name="region-before" citation="§6.4.14" extURL="slice6.html#fo_region-before" compliance-level="2" comply="yes"/>
+ <level-3 name="region-after" citation="§6.4.15" extURL="slice6.html#fo_region-after" compliance-level="2" comply="yes"/>
+ <level-3 name="region-start" citation="§6.4.16" extURL="slice6.html#fo_region-start" compliance-level="2" comply="yes"/>
+ <level-3 name="region-end" citation="§6.4.17" extURL="slice6.html#fo_region-end" compliance-level="2" comply="yes"/>
+ <level-3 name="flow" citation="§6.4.18" extURL="slice6.html#fo_flow" compliance-level="1" comply="yes"/>
+ <level-3 name="static-content" citation="§6.4.19" extURL="slice6.html#fo_static-content" compliance-level="2" comply="yes"/>
+ <level-3 name="title" citation="§6.4.20" extURL="slice6.html#fo_title" compliance-level="2" comply="no"/>
+ </level-2>
+ <level-2 name="Block Formatting Objects" citation="§6.5" extURL="slice6.html#section-N12764-Block-level-Formatting-Objects">
+ <level-3 name="block" citation="§6.5.2" extURL="slice6.html#fo_block" compliance-level="1" comply="yes"/>
+ <level-3 name="block-container" citation="§6.5.3" extURL="slice6.html#fo_block-container" compliance-level="2" comply="partial"/>
+ </level-2>
+ <level-2 name="Inline Formatting Objects" citation="§6.6" extURL="slice6.html#section-N13277-Inline-level-Formatting-Objects">
+ <level-3 name="bidi-override" citation="§6.6.2" extURL="slice6.html#fo_bidi-override" compliance-level="2" comply="no"/>
+ <level-3 name="character" citation="§6.6.3" extURL="slice6.html#fo_character" compliance-level="1" comply="yes"/>
+ <level-3 name="initial-property-set" citation="§6.6.4" extURL="slice6.html#fo_initial-property-set" compliance-level="2" comply="no"/>
+ <level-3 name="external-graphic" citation="§6.6.5" extURL="slice6.html#fo_external-graphic" compliance-level="1" comply="yes"/>
+ <level-3 name="instream-foreign-object" citation="§6.6.6" extURL="slice6.html#fo_instream-foreign-object" compliance-level="2" comply="yes"/>
+ <level-3 name="inline" citation="§6.6.7" extURL="slice6.html#fo_inline" compliance-level="1" comply="yes"/>
+ <level-3 name="inline-container" citation="§6.6.8" extURL="slice6.html#fo_inline-container" compliance-level="2" comply="no"/>
+ <level-3 name="leader" citation="§6.6.9" extURL="slice6.html#fo_leader" compliance-level="1" comply="partial"/>
+ <level-3 name="page-number" citation="§6.6.10" extURL="slice6.html#fo_page-number" compliance-level="1" comply="yes"/>
+ <level-3 name="page-number-citation" citation="§6.6.11" extURL="slice6.html#fo_page-number-citation" compliance-level="2" comply="partial">
+ <comment>Only works for table of contents without any problems. The case
+where the page number doesn't fit on a line isn't handled, and any text on
+the same line and after the page-number might not appear exactly where you
+want it to.</comment>
+ </level-3>
+ </level-2>
+ <level-2 name="Table Formatting Objects" citation="§6.7" extURL="slice6.html#section-N15442-Formatting-Objects-for-Tables">
+ <level-3 name="table-and-caption" citation="§6.7.2" extURL="slice6.html#fo_table-and-caption" compliance-level="1" comply="no"/>
+ <level-3 name="table" citation="§6.7.3" extURL="slice6.html#fo_table" compliance-level="1" comply="yes"/>
+ <level-3 name="table-column" citation="§6.7.4" extURL="slice6.html#fo_table-column" compliance-level="1" comply="yes">
+ <comment>you must explicitly specify column widths</comment>
+ </level-3>
+ <level-3 name="table-caption" citation="§6.7.5" extURL="slice6.html#fo_table-caption" compliance-level="2" comply="no"/>
+ <level-3 name="table-header" citation="§6.7.6" extURL="slice6.html#fo_table-header" compliance-level="1" comply="yes"/>
+ <level-3 name="table-footer" citation="§6.7.7" extURL="slice6.html#fo_table-footer" compliance-level="2" comply="yes"/>
+ <level-3 name="table-body" citation="§6.7.8" extURL="slice6.html#fo_table-body" compliance-level="1" comply="yes"/>
+ <level-3 name="table-row" citation="§6.7.9" extURL="slice6.html#fo_table-row" compliance-level="1" comply="yes"/>
+ <level-3 name="table-cell" citation="§6.7.10" extURL="slice6.html#fo_table-cell" compliance-level="1" comply="yes">
+ <comment>must contain block-level FOs (cannot contain straight character data</comment>
+ </level-3>
+ </level-2>
+ <level-2 name="List Formatting Objects" citation="§6.8" extURL="slice6.html#section-N17076-Formatting-Objects-for-Lists">
+ <level-3 name="list-block" citation="§6.8.2" extURL="slice6.html#fo_list-block" compliance-level="1" comply="yes"/>
+ <level-3 name="list-item" citation="§6.8.3" extURL="slice6.html#fo_list-item" compliance-level="1" comply="yes"/>
+ <level-3 name="list-item-body" citation="§6.8.4" extURL="slice6.html#fo_list-item-body" compliance-level="1" comply="yes"/>
+ <level-3 name="list-item-label" citation="§6.8.5" extURL="slice6.html#fo_list-item-label" compliance-level="2" comply="yes"/>
+ </level-2>
+ <level-2 name="Link and Multi Formatting Objects" citation="§6.9" extURL="slice6.html#section-N17805-Dynamic-Effects:-Link-and-Multi-Formatting-Objects">
+ <level-3 name="basic-link" citation="§6.9.2" extURL="slice6.html#fo_basic-link" compliance-level="2" comply="yes">
+ <comment>both internal and external supported</comment>
+ </level-3>
+ <level-3 name="multi-switch" citation="§6.9.3" extURL="slice6.html#fo_multi-switch" compliance-level="2" comply="no"/>
+ <level-3 name="multi-case" citation="§6.9.4" extURL="slice6.html#fo_multi-case" compliance-level="1" comply="no"/>
+ <level-3 name="multi-toggle" citation="§6.9.5" extURL="slice6.html#fo_multi-toggle" compliance-level="2" comply="no"/>
+ <level-3 name="multi-properties" citation="§6.9.6" extURL="slice6.html#fo_multi-properties" compliance-level="2" comply="no"/>
+ <level-3 name="multi-property-set" citation="§6.9.7" extURL="slice6.html#fo_multi-property-set" compliance-level="2" comply="no"/>
+ </level-2>
+ <level-2 name="Out-of-line Formatting Objects" citation="§6.10" extURL="slice6.html#section-N18509-Out-of-Line-Formatting-Objects">
+ <level-3 name="float" citation="§6.10.2" extURL="slice6.html#fo_float" compliance-level="2" comply="no"/>
+ <level-3 name="footnote" citation="§6.10.3" extURL="slice6.html#fo_footnote" compliance-level="2" comply="yes"/>
+ <level-3 name="footnote-body" citation="§6.10.4" extURL="slice6.html#fo_footnote-body" compliance-level="2" comply="yes"/>
+ </level-2>
+ <level-2 name="Other Formatting Objects" citation="§6.11" extURL="slice6.html#section-N19019-Other-Formatting-Objects">
+ <level-3 name="wrapper" citation="§6.11.2" extURL="slice6.html#fo_wrapper" compliance-level="1" comply="yes"/>
+ <level-3 name="marker" citation="§6.11.3" extURL="slice6.html#fo_marker" compliance-level="2" comply="yes"/>
+ <level-3 name="retrieve-marker" citation="§6.11.4" extURL="slice6.html#fo_retrieve-marker" compliance-level="2" comply="yes"/>
+ </level-2>
+ </level-1>
+ <level-1 name="XSL-FO Property Support" compliance-item-desc="Property Name">
+ <explanatory>
+ <p>The following is a summary of FOP's current support for the standard XSL-FO properties. Please note that a number of properties and categories of properties are not supported because they do not apply to documents in visual formats.</p>
+ </explanatory>
+ <level-2 name="Common Accessibility Properties">
+ <level-3 name="source-document" compliance-level="1" comply="na"/>
+ <level-3 name="role" compliance-level="1" comply="na"/>
+ </level-2>
+ <level-2 name="Common Absolute Position Properties">
+ <level-3 name="absolute-position" compliance-level="3" comply="no"/>
+ <level-3 name="top" compliance-level="2" comply="yes"/>
+ <level-3 name="right" compliance-level="2" comply="yes"/>
+ <level-3 name="bottom" compliance-level="2" comply="yes"/>
+ <level-3 name="left" compliance-level="2" comply="yes"/>
+ </level-2>
+ <level-2 name="Common Aural Properties">
+ <level-3 name="azimuth" compliance-level="1" comply="na"/>
+ <level-3 name="cue-after" compliance-level="1" comply="na"/>
+ <level-3 name="cue-before" compliance-level="1" comply="na"/>
+ <level-3 name="elevation" compliance-level="1" comply="na"/>
+ <level-3 name="pause-after" compliance-level="1" comply="na"/>
+ <level-3 name="pause-before" compliance-level="1" comply="na"/>
+ <level-3 name="pitch" compliance-level="1" comply="na"/>
+ <level-3 name="pitch-range" compliance-level="1" comply="na"/>
+ <level-3 name="play-during" compliance-level="1" comply="na"/>
+ <level-3 name="richness" compliance-level="1" comply="na"/>
+ <level-3 name="speak" compliance-level="1" comply="na"/>
+ <level-3 name="speak-header" compliance-level="1" comply="na"/>
+ <level-3 name="speak-numeral" compliance-level="1" comply="na"/>
+ <level-3 name="speak-punctuation" compliance-level="1" comply="na"/>
+ <level-3 name="speech-rate" compliance-level="1" comply="na"/>
+ <level-3 name="stress" compliance-level="1" comply="na"/>
+ <level-3 name="voice-family" compliance-level="1" comply="na"/>
+ <level-3 name="volume" compliance-level="1" comply="na"/>
+ </level-2>
+ <level-2 name="Common Border, Padding, and Background Properties">
+ <level-3 name="background-attachment" compliance-level="2" comply="no"/>
+ <level-3 name="background-color" compliance-level="1" comply="yes"/>
+ <level-3 name="background-image" compliance-level="2" comply="yes"/>
+ <level-3 name="background-repeat" compliance-level="2" comply="no"/>
+ <level-3 name="background-position-horizontal" compliance-level="2" comply="no"/>
+ <level-3 name="background-position-vertical" compliance-level="2" comply="no"/>
+ <level-3 name="border-before-color" compliance-level="1" comply="yes"/>
+ <level-3 name="border-before-style" compliance-level="1" comply="yes"/>
+ <level-3 name="border-before-width" compliance-level="1" comply="yes"/>
+ <level-3 name="border-after-color" compliance-level="1" comply="yes"/>
+ <level-3 name="border-after-style" compliance-level="1" comply="yes"/>
+ <level-3 name="border-after-width" compliance-level="1" comply="yes"/>
+ <level-3 name="border-start-color" compliance-level="1" comply="yes"/>
+ <level-3 name="border-start-style" compliance-level="1" comply="yes"/>
+ <level-3 name="border-start-width" compliance-level="1" comply="yes"/>
+ <level-3 name="border-end-color" compliance-level="1" comply="yes"/>
+ <level-3 name="border-end-style" compliance-level="1" comply="yes"/>
+ <level-3 name="border-end-width" compliance-level="1" comply="yes"/>
+ <level-3 name="border-top-color" compliance-level="1" comply="yes"/>
+ <level-3 name="border-top-style" compliance-level="1" comply="yes"/>
+ <level-3 name="border-top-width" compliance-level="1" comply="yes"/>
+ <level-3 name="border-bottom-color" compliance-level="1" comply="yes"/>
+ <level-3 name="border-bottom-style" compliance-level="1" comply="yes"/>
+ <level-3 name="border-bottom-width" compliance-level="1" comply="yes"/>
+ <level-3 name="border-left-color" compliance-level="1" comply="yes"/>
+ <level-3 name="border-left-style" compliance-level="1" comply="yes"/>
+ <level-3 name="border-left-width" compliance-level="1" comply="yes"/>
+ <level-3 name="border-right-color" compliance-level="1" comply="yes"/>
+ <level-3 name="border-right-style" compliance-level="1" comply="yes"/>
+ <level-3 name="border-right-width" compliance-level="1" comply="yes"/>
+ <level-3 name="padding-before" compliance-level="1" comply="yes"/>
+ <level-3 name="padding-after" compliance-level="1" comply="yes"/>
+ <level-3 name="padding-start" compliance-level="1" comply="yes"/>
+ <level-3 name="padding-end" compliance-level="1" comply="yes"/>
+ <level-3 name="padding-top" compliance-level="1" comply="yes"/>
+ <level-3 name="padding-bottom" compliance-level="1" comply="yes"/>
+ <level-3 name="padding-left" compliance-level="1" comply="yes"/>
+ <level-3 name="padding-right" compliance-level="1" comply="yes"/>
+ </level-2>
+ <level-2 name="Common Font Properties">
+ <level-3 name="font-family" compliance-level="1" comply="yes"/>
+ <level-3 name="font-selection-strategy" compliance-level="3" comply="no"/>
+ <level-3 name="font-size" compliance-level="1" comply="yes"/>
+ <level-3 name="font-stretch" compliance-level="2" comply="no"/>
+ <level-3 name="font-size-adjust" compliance-level="2" comply="no"/>
+ <level-3 name="font-style" compliance-level="1" comply="yes"/>
+ <level-3 name="font-variant" compliance-level="1" comply="no"/>
+ <level-3 name="font-weight" compliance-level="1" comply="yes"/>
+ </level-2>
+ <level-2 name="Common Hyphenation Properties">
+ <level-3 name="country" compliance-level="2" comply="yes"/>
+ <level-3 name="language" compliance-level="2" comply="yes"/>
+ <level-3 name="script" compliance-level="2" comply="no"/>
+ <level-3 name="hyphenate" compliance-level="2" comply="yes"/>
+ <level-3 name="hyphenation-character" compliance-level="2" comply="yes"/>
+ <level-3 name="hyphenation-push-character-count" compliance-level="2" comply="yes"/>
+ <level-3 name="hyphenation-remain-character-count" compliance-level="2" comply="yes"/>
+ </level-2>
+ <level-2 name="Common Margin Properties - Block">
+ <level-3 name="margin-top" compliance-level="1" comply="partial">
+ <comment>only on pages and regions</comment>
+ </level-3>
+ <level-3 name="margin-bottom" compliance-level="1" comply="partial">
+ <comment>only on pages and regions</comment>
+ </level-3>
+ <level-3 name="margin-left" compliance-level="1" comply="partial">
+ <comment>only on pages and regions</comment>
+ </level-3>
+ <level-3 name="margin-right" compliance-level="1" comply="partial">
+ <comment>only on pages and regions</comment>
+ </level-3>
+ <level-3 name="space-before" compliance-level="1" comply="partial">
+ <comment>space-before.optimum supported</comment>
+ </level-3>
+ <level-3 name="space-after" compliance-level="1" comply="partial">
+ <comment>space-after.optimum supported</comment>
+ </level-3>
+ <level-3 name="start-indent" compliance-level="1" comply="yes"/>
+ <level-3 name="end-indent" compliance-level="1" comply="yes"/>
+ </level-2>
+ <level-2 name="Common Margin Properties - Inline">
+ <level-3 name="space-end" compliance-level="1" comply="no"/>
+ <level-3 name="space-start" compliance-level="1" comply="no"/>
+ </level-2>
+ <level-2 name="Common Relative Position Properties">
+ <level-3 name="relative-position" compliance-level="2" comply="no"/>
+ </level-2>
+ <level-2 name="Area Alignment Properties">
+ <level-3 name="alignment-adjust" compliance-level="1" comply="no"/>
+ <level-3 name="alignment-baseline" compliance-level="1" comply="no"/>
+ <level-3 name="baseline-shift" compliance-level="1" comply="no"/>
+ <level-3 name="display-align" compliance-level="2" comply="no"/>
+ <level-3 name="dominant-baseline" compliance-level="1" comply="no"/>
+ <level-3 name="relative-align" compliance-level="2" comply="no"/>
+ </level-2>
+ <level-2 name="Area Dimension Properties">
+ <level-3 name="block-progression-dimension" compliance-level="1" comply="no"/>
+ <level-3 name="content-height" compliance-level="2" comply="no"/>
+ <level-3 name="content-width" compliance-level="1" comply="no"/>
+ <level-3 name="height" compliance-level="1" comply="yes"/>
+ <level-3 name="inline-progression-dimension" compliance-level="1" comply="no"/>
+ <level-3 name="max-height" compliance-level="3" comply="no"/>
+ <level-3 name="max-width" compliance-level="3" comply="no"/>
+ <level-3 name="min-height" compliance-level="3" comply="no"/>
+ <level-3 name="min-width" compliance-level="3" comply="no"/>
+ <level-3 name="scaling" compliance-level="2" comply="no"/>
+ <level-3 name="scaling-method" compliance-level="2" comply="no"/>
+ <level-3 name="width" compliance-level="1" comply="yes"/>
+ </level-2>
+ <level-2 name="Block and Line-related Properties">
+ <level-3 name="hyphenation-keep" compliance-level="2" comply="no"/>
+ <level-3 name="hyphenation-ladder-count" compliance-level="2" comply="no"/>
+ <level-3 name="last-line-end-indent" compliance-level="2" comply="no"/>
+ <level-3 name="line-height" compliance-level="1" comply="yes"/>
+ <level-3 name="line-height-shift-adjustment" compliance-level="2" comply="no"/>
+ <level-3 name="line-stacking-strategy" compliance-level="1" comply="no"/>
+ <level-3 name="linefeed-treatment" compliance-level="2" comply="no"/>
+ <level-3 name="text-align" compliance-level="1" comply="yes"/>
+ <level-3 name="text-align-last" compliance-level="2" comply="yes"/>
+ <level-3 name="text-indent" compliance-level="1" comply="yes"/>
+ <level-3 name="white-space-collapse" compliance-level="2" comply="yes"/>
+ <level-3 name="white-space-treatment" compliance-level="2" comply="no"/>
+ <level-3 name="wrap-option" compliance-level="1" comply="yes"/>
+ </level-2>
+ <level-2 name="Character Properties">
+ <level-3 name="character" compliance-level="1" comply="yes"/>
+ <level-3 name="letter-spacing" compliance-level="2" comply="yes"/>
+ <level-3 name="suppress-at-line-break" compliance-level="2" comply="no"/>
+ <level-3 name="text-decoration" compliance-level="2" comply="yes"/>
+ <level-3 name="text-shadow" compliance-level="2" comply="no"/>
+ <level-3 name="text-transform" compliance-level="2" comply="no"/>
+ <level-3 name="treat-as-word-space" compliance-level="2" comply="no"/>
+ <level-3 name="word-spacing" compliance-level="2" comply="no"/>
+ </level-2>
+ <level-2 name="Color-related Properties">
+ <level-3 name="color" compliance-level="1" comply="yes"/>
+ <level-3 name="color-profile-name" compliance-level="2" comply="no"/>
+ <level-3 name="rendering-intent" compliance-level="2" comply="no"/>
+ </level-2>
+ <level-2 name="Float-related Properties">
+ <level-3 name="clear" compliance-level="2" comply="no"/>
+ <level-3 name="float" compliance-level="2" comply="no"/>
+ <level-3 name="intrusion-displace" compliance-level="2" comply="no"/>
+ </level-2>
+ <level-2 name="Keeps and Breaks Properties">
+ <level-3 name="break-after" compliance-level="1" comply="yes"/>
+ <level-3 name="break-before" compliance-level="1" comply="yes"/>
+ <level-3 name="keep-together" compliance-level="2" comply="partial">
+ <comment>works only in table rows</comment>
+ </level-3>
+ <level-3 name="keep-with-next" compliance-level="1" comply="partial">
+ <comment>works only in table rows</comment>
+ </level-3>
+ <level-3 name="keep-with-previous" compliance-level="1" comply="partial">
+ <comment>works only in table rows</comment>
+ </level-3>
+ <level-3 name="orphans" compliance-level="1" comply="no"/>
+ <level-3 name="widows" compliance-level="1" comply="no"/>
+ </level-2>
+ <level-2 name="Layout-related Properties">
+ <level-3 name="clip" compliance-level="2" comply="no"/>
+ <level-3 name="overflow" compliance-level="1" comply="no"/>
+ <level-3 name="reference-orientation" compliance-level="2" comply="no"/>
+ <level-3 name="span" compliance-level="2" comply="yes"/>
+ </level-2>
+ <level-2 name="Leader and Rule Properties">
+ <level-3 name="leader-alignment" compliance-level="2" comply="yes">
+ <comment>not value "page"</comment>
+ </level-3>
+ <level-3 name="leader-pattern" compliance-level="1" comply="yes">
+ <comment>not value "use-content"</comment>
+ </level-3>
+ <level-3 name="leader-pattern-width" compliance-level="2" comply="yes"/>
+ <level-3 name="leader-length" compliance-level="1" comply="yes">
+ <comment>leader-length.minimum is not used at all</comment>
+ </level-3>
+ <level-3 name="rule-style" compliance-level="1" comply="yes"/>
+ <level-3 name="rule-thickness" compliance-level="1" comply="yes"/>
+ </level-2>
+ <level-2 name="Properties for Dynamic Effects Formatting Objects">
+ <level-3 name="active-state" compliance-level="2" comply="no"/>
+ <level-3 name="auto-restore" compliance-level="2" comply="no"/>
+ <level-3 name="case-name" compliance-level="2" comply="no"/>
+ <level-3 name="case-title" compliance-level="2" comply="no"/>
+ <level-3 name="destination-placement-offset" compliance-level="2" comply="no"/>
+ <level-3 name="external-destination" compliance-level="2" comply="yes"/>
+ <level-3 name="indicate-destination" compliance-level="2" comply="no"/>
+ <level-3 name="internal-destination" compliance-level="2" comply="yes"/>
+ <level-3 name="show-destination" compliance-level="2" comply="no"/>
+ <level-3 name="starting-state" compliance-level="2" comply="no"/>
+ <level-3 name="target-presentation-context" compliance-level="2" comply="no"/>
+ <level-3 name="target-processing-context" compliance-level="2" comply="no"/>
+ <level-3 name="target-stylesheet" compliance-level="2" comply="no"/>
+ </level-2>
+ <level-2 name="Properties for Markers">
+ <level-3 name="marker-class-name" compliance-level="2" comply="no"/>
+ <level-3 name="retrieve-class-name" compliance-level="2" comply="no"/>
+ <level-3 name="retrieve-position" compliance-level="2" comply="no"/>
+ <level-3 name="retrieve-boundary" compliance-level="2" comply="no"/>
+ </level-2>
+ <level-2 name="Properties for Number to String Conversion">
+ <level-3 name="format" compliance-level="1" comply="no"/>
+ <level-3 name="grouping-separator" compliance-level="2" comply="no"/>
+ <level-3 name="grouping-size" compliance-level="2" comply="no"/>
+ <level-3 name="letter-value" compliance-level="1" comply="no"/>
+ </level-2>
+ <level-2 name="Pagination and Layout Properties">
+ <level-3 name="blank-or-not-blank" compliance-level="2" comply="yes"/>
+ <level-3 name="column-count" compliance-level="2" comply="yes"/>
+ <level-3 name="column-gap" compliance-level="2" comply="yes"/>
+ <level-3 name="extent" compliance-level="2" comply="yes"/>
+ <level-3 name="flow-name" compliance-level="1" comply="yes"/>
+ <level-3 name="force-page-count" compliance-level="2" comply="no"/>
+ <level-3 name="initial-page-number" compliance-level="1" comply="yes"/>
+ <level-3 name="master-name" compliance-level="1" comply="yes"/>
+ <level-3 name="master-reference" compliance-level="1" comply="yes"/>
+ <level-3 name="maximum-repeats" compliance-level="2" comply="yes"/>
+ <level-3 name="media-usage" compliance-level="2" comply="no"/>
+ <level-3 name="odd-or-even" compliance-level="2" comply="yes"/>
+ <level-3 name="page-height" compliance-level="1" comply="yes"/>
+ <level-3 name="page-position" compliance-level="2" comply="yes"/>
+ <level-3 name="page-width" compliance-level="1" comply="yes"/>
+ <level-3 name="precedence" compliance-level="2" comply="no"/>
+ <level-3 name="region-name" compliance-level="1" comply="yes"/>
+ </level-2>
+ <level-2 name="Table Properties">
+ <level-3 name="border-after-precedence" compliance-level="1" comply="no"/>
+ <level-3 name="border-before-precedence" compliance-level="1" comply="no"/>
+ <level-3 name="border-collapse" compliance-level="2" comply="no"/>
+ <level-3 name="border-end-precedence" compliance-level="1" comply="no"/>
+ <level-3 name="border-separation" compliance-level="2" comply="no"/>
+ <level-3 name="border-start-precedence" compliance-level="1" comply="no"/>
+ <level-3 name="caption-side" compliance-level="3" comply="no"/>
+ <level-3 name="column-number" compliance-level="1" comply="no"/>
+ <level-3 name="column-width" compliance-level="1" comply="yes"/>
+ <level-3 name="empty-cells" compliance-level="2" comply="no"/>
+ <level-3 name="ends-row" compliance-level="2" comply="no"/>
+ <level-3 name="number-columns-repeated" compliance-level="1" comply="no"/>
+ <level-3 name="number-columns-spanned" compliance-level="1" comply="yes"/>
+ <level-3 name="starts-row" compliance-level="2" comply="no"/>
+ <level-3 name="table-layout" compliance-level="2" comply="no"/>
+ <level-3 name="table-omit-footer-at-break" compliance-level="2" comply="yes"/>
+ <level-3 name="table-omit-header-at-break" compliance-level="2" comply="yes"/>
+ </level-2>
+ <level-2 name="Writing-mode-related Properties">
+ <level-3 name="direction" compliance-level="1" comply="no"/>
+ <level-3 name="glyph-orientation-horizontal" compliance-level="2" comply="no"/>
+ <level-3 name="glyph-orientation-vertical" compliance-level="2" comply="no"/>
+ <level-3 name="text-altitude" compliance-level="2" comply="no"/>
+ <level-3 name="text-depth" compliance-level="2" comply="no"/>
+ <level-3 name="unicode-bidi" compliance-level="2" comply="no"/>
+ <level-3 name="writing-mode" compliance-level="1" comply="no"/>
+ </level-2>
+ <level-2 name="Miscellaneous Properties">
+ <level-3 name="content-type" compliance-level="2" comply="no"/>
+ <level-3 name="id" compliance-level="1" comply="yes"/>
+ <level-3 name="provisional-label-separation" compliance-level="1" comply="yes"/>
+ <level-3 name="provisional-distance-between-starts" compliance-level="1" comply="yes"/>
+ <level-3 name="ref-id" compliance-level="2" comply="yes"/>
+ <level-3 name="score-spaces" compliance-level="2" comply="no"/>
+ <level-3 name="src" compliance-level="1" comply="yes"/>
+ <level-3 name="visibility" compliance-level="2" comply="no"/>
+ <level-3 name="z-index" compliance-level="2" comply="no"/>
+ </level-2>
+ <level-2 name="Shorthand Properties">
+ <level-3 name="background" compliance-level="3" comply="no"/>
+ <level-3 name="background-position" compliance-level="3" comply="no"/>
+ <level-3 name="border" compliance-level="3" comply="no"/>
+ <level-3 name="border-bottom" compliance-level="3" comply="yes"/>
+ <level-3 name="border-color" compliance-level="3" comply="yes">
+ <comment>only one value allowed</comment>
+ </level-3>
+ <level-3 name="border-left" compliance-level="3" comply="yes"/>
+ <level-3 name="border-right" compliance-level="3" comply="yes"/>
+ <level-3 name="border-style" compliance-level="3" comply="yes"/>
+ <level-3 name="border-spacing" compliance-level="3" comply="no"/>
+ <level-3 name="border-top" compliance-level="3" comply="yes"/>
+ <level-3 name="border-width" compliance-level="3" comply="yes"/>
+ <level-3 name="cue" compliance-level="3" comply="no"/>
+ <level-3 name="font" compliance-level="3" comply="no"/>
+ <level-3 name="margin" compliance-level="3" comply="partial">
+ <comment>only on pages and regions</comment>
+ </level-3>
+ <level-3 name="padding" compliance-level="3" comply="partial">
+ <comment>only one value allowed</comment>
+ <comment>only implemented for blocks</comment>
+ <comment>can't be used to make extra space (use indents + spaces instead)</comment>
+ <comment>can be used to control how much the background-color extends beyond the content rectangle</comment>
+ </level-3>
+ <level-3 name="page-break-after" compliance-level="3" comply="no"/>
+ <level-3 name="page-break-before" compliance-level="3" comply="no"/>
+ <level-3 name="page-break-inside" compliance-level="3" comply="no"/>
+ <level-3 name="pause" compliance-level="3" comply="no"/>
+ <level-3 name="position" compliance-level="3" comply="partial">
+ <comment>"inherit" not handled</comment>
+ </level-3>
+ <level-3 name="size" compliance-level="3" comply="no"/>
+ <level-3 name="vertical-align" compliance-level="3" comply="no"/>
+ <level-3 name="white-space" compliance-level="3" comply="no"/>
+ <level-3 name="xml:lang" compliance-level="3" comply="no"/>
+ </level-2>
+ </level-1>
+ </standard>
+ </body>
+</compliance>
+
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<document>
+ <header>
+ <title>Configuration</title>
+ </header>
+
+ <body>
+<section>
+ <title>Configuration</title>
+ <section>
+ <title>How to configure Fop</title>
+ <p>In the directory xml-fop/conf you will find two configuration files. One of them,
+ config.xml, is only intended for Fop developers, who want to add new default values
+ to some Fop feature. Don't change this file. For user configuration there is a file called
+ userconfig.xml. It contains templates for all settings a user can change. Most of them are
+ commented out. Uncomment the entry you want to set and change the value according to
+ your wishes. Please regard any comments which specify the value range. And, well, the
+ configuration files are xml files, so keep them at least well-formed ;-)
+ </p>
+ <p>The file userconfig.xml is not read automatically, but the user must specify its use on
+ the command line. See <link href="running.html">Running Fop</link>
+ or <link href="embedding.html">Embedding Fop</link> for details.
+ </p>
+ </section>
+ <section>
+ <title>setting up hyphenation</title>
+ <p>Fop comes already with some hyphenation pattern. If you need a hyphenation pattern
+ which isn't included in the distribution, do the following:
+ </p>
+ <p>1. get the TeX hyphenation pattern file and turn it into an xml file which conforms
+ to the hyphenation.dtd in the sub directory /hyph
+ </p>
+ <p>2. name this new file following this schema: languageCode_countryCode.xml. If you don't need
+ a country code, leave it out, e.g the file name for an American english hyphenation pattern
+ would look like this: en_US.xml. For an Italian file: it.xml. Language and country codes must be
+ the same as in xsl:fo, that is follow
+ <link href="http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt">ISO 639</link>
+ and <link href="http://www.ics.uci.edu/pub/ietf/http/related/iso3166.txt">ISO 3166</link>
+ respectively. NOTE: The ISO 639/ISO 3166 convention is that language names are
+ written in lower case, while country codes are written in upper case.
+ </p>
+ <p>3. If you have build your new hyphenation pattern file successfully there are
+ two ways to make it accessible to Fop.
+ </p>
+ <p> a) Put this new file into the directory /hyph and rebuild Fop. The file will
+ be picked up and added to the fop.jar.
+ </p>
+ <p> b) Put the file into a directory of your choice and specify this directory
+ in the userconfig.xml in the entry <hyphenation-dir>.
+ </p>
+ </section>
+</section>
+ </body>
+</document>
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<document>
+ <header>
+ <title>FO Examples</title>
+ </header>
+ <body>
+ <section>
+ <title>Example Documents Using FOP</title>
+ <p>
+ These examples have been rendered using FOP.
+ </p>
+ </section>
+ <section>
+ <title>Images Examples</title>
+ <p>
+Embedding images in FO:
+ </p>
+ <table>
+ <caption>Images in FO</caption>
+ <tr>
+ <th>description</th>
+ <th>fo file</th>
+ <th>pdf result</th>
+ </tr>
+ <tr>
+ <td>align in larger viewport</td>
+ <td><link href="../fo/align.fo">align.fo</link></td>
+ <td><link href="../fo/align.fo.pdf">align.fo.pdf</link></td>
+ </tr>
+ <tr>
+ <td>align in smaller viewport</td>
+ <td><link href="../fo/align2.fo">align2.fo</link></td>
+ <td><link href="../fo/align2.fo.pdf">align2.fo.pdf</link></td>
+ </tr>
+ <tr>
+ <td>scaling image</td>
+ <td><link href="../fo/size.fo">size.fo</link></td>
+ <td><link href="../fo/size.fo.pdf">size.fo.pdf</link></td>
+ </tr>
+ </table>
+ </section>
+ <section>
+ <title>Instream Foreign Object Examples</title>
+ <p>
+Instream Foreign Object images in FO, there are more on the
+<link href="svg.html">SVG Page</link>:
+ </p>
+ <table>
+ <caption>Embedding instream-foreign-object</caption>
+ <tr>
+ <th>description</th>
+ <th>fo file</th>
+ <th>pdf result</th>
+ </tr>
+ <tr>
+ <td>embedding svg in viewport</td>
+ <td><link href="../fo/embed.fo">embed.fo</link></td>
+ <td><link href="../fo/embed.fo.pdf">embed.fo.pdf</link></td>
+ </tr>
+ </table>
+ </section>
+ </body>
+</document>
+
--- /dev/null
+<?xml version="1.0" encoding="iso-8859-1"?>
+<svg width="400" height="400" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+
+<g>
+
+<text x="20" y="20" style="font-size:18">Images in SVG</text>
+
+<text x="20" y="35" style="font-size:12">Jpeg</text>
+<image x="30" y="55" width="100" height="80" xlink:href="logo.jpg"/>
+</g>
+
+<text x="20" y="160" style="font-size:12">Effect or Bitmap</text>
+<g>
+<defs>
+ <filter id="Turb1" filterUnits="objectBoundingBox"
+ x="0%" y="0%" width="100%" height="100%">
+ <feTurbulence type="fractalNoise" baseFrequency="0.1" numOctaves="1"/>
+ </filter>
+ <filter id="Turb2" filterUnits="objectBoundingBox"
+ x="0%" y="0%" width="100%" height="100%">
+ <feTurbulence type="fractalNoise" baseFrequency="0.15" numOctaves="1"/>
+ </filter>
+</defs>
+ <rect x="25" y="165" width="100" height="75" style="filter:url(#Turb1)" />
+
+
+<text x="20" y="255" style="font-size:12">Transparency</text>
+ <rect x="20" y="260" width="40" height="35" style="fill:blue" />
+<text x="60" y="305" style="font-size:20;font-weight:bold">SEE</text>
+ <rect x="25" y="265" width="100" height="75" style="filter:url(#Turb2)" />
+
+
+<text x="200" y="35" style="font-size:12">Scaled</text>
+<g transform="scale(4)">
+ <rect x="55" y="15" width="25" height="18.75" style="filter:url(#Turb1)" />
+</g>
+
+</g>
+
+</svg>
+
--- /dev/null
+<?xml version="1.0" encoding="iso-8859-1"?>
+<svg width="400" height="400" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+
+<g>
+
+<a xlink:href="#svgView(viewBox(110,110,80,80))">
+<rect x="10" y="10" width="80" height="80" style="fill:darkred;stroke:black;stroke-width:3"/>
+<text x="15" y="60" style="font-size:18;fill:green">GREEN</text>
+</a>
+
+<a xlink:href="http://xml.apache.org/fop/">
+<rect x="110" y="10" width="80" height="80" style="fill:lightblue;stroke:black;stroke-width:3"/>
+<text x="130" y="60" style="font-size:18;fill:blue">FOP</text>
+</a>
+
+<a xlink:href="images.svg#svgView(viewBox(0,0,200,200))">
+<rect x="10" y="110" width="80" height="80" style="fill:yellow;stroke:black;stroke-width:3"/>
+<text x="20" y="150" style="font-size:14;fill:purple">Another</text>
+<text x="35" y="165" style="font-size:14;fill:purple">file</text>
+</a>
+
+<a xlink:href="#svgView(viewBox(10,10,80,80))">
+<rect x="110" y="110" width="80" height="80" style="fill:darkgreen;stroke:black;stroke-width:3"/>
+<text x="130" y="160" style="font-size:18;fill:red">RED</text>
+</a>
+
+</g>
+
+</svg>
+
--- /dev/null
+<?xml version="1.0" encoding="iso-8859-1"?>
+<svg width="400" height="400" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+
+<g>
+
+<text x="20" y="20" style="font-size:18">Paints - Patterns & Gradients</text>
+
+<text x="10" y="35" style="font-size:12">Gradient</text>
+
+<defs>
+ <linearGradient id="grad1" x1="0" y1="0" x2="1" y2="0">
+ <stop offset="0" style="stop-color:crimson" />
+ <stop offset="1" style="stop-color:gold" />
+ </linearGradient>
+ <linearGradient id="grad2" x1="0" y1="0" x2="0" y2="1">
+ <stop offset="0" style="stop-color:crimson" />
+ <stop offset="0.4" style="stop-color:purple" />
+ <stop offset="1" style="stop-color:gold" />
+ </linearGradient>
+ <linearGradient id="grad3" x1="0" y1="0" x2="1" y2="1">
+ <stop offset="0" style="stop-color:crimson" />
+ <stop offset="0.7" style="stop-color:blue" />
+ <stop offset="1" style="stop-color:gold" />
+ </linearGradient>
+ <radialGradient id="rad"
+ fx="20%" fy="30%" rx="10%" ry="30%" r="40%">
+ <stop offset="0" stop-color="gold" />
+ <stop offset="1" stop-color="green" stop-opacity="0.4"/>
+ </radialGradient>
+</defs>
+ <rect x="15" y="40" width="100" height="75" style="fill:url(#grad1)" />
+ <rect x="15" y="117.5" width="100" height="75" style="fill:url(#grad2)" />
+ <rect x="15" y="195" width="100" height="75" style="fill:url(#grad3)" />
+ <rect x="15" y="275" width="100" height="75" style="fill:url(#rad)" />
+
+<text x="120" y="35" style="font-size:12">Pattern</text>
+
+<defs>
+ <pattern id="pat1" x="0" y="0" width=".75" height="50%">
+ <circle cx="10" cy="10" r="10" style="fill:red" />
+ <rect x="10" y="10" width="15" height="15" style="fill:green"/>
+ </pattern>
+ <pattern id="pat2" x="0" y="0" width=".2" height="50%">
+ <circle cx="10" cy="10" r="10" style="fill:red" />
+ <rect x="10" y="10" width="15" height="15" style="fill:green"/>
+ </pattern>
+ <pattern id="pat3" x="0" y="0" width=".3" height="50%" patternTransform="matrix(1, 0.3, -0.5, 1, 5, 10)">
+ <circle cx="10" cy="10" r="10" style="fill:red" />
+ <rect x="10" y="10" width="15" height="15" style="fill:green"/>
+ <text x="5" y="10" style="font-size:10">Patt</text>
+ </pattern>
+ <pattern id="see" x="0" y="0" width="25" height="25" patternUnits="userSpaceOnUse">
+ <circle cx="10" cy="10" r="10" style="fill:red" />
+ <rect x="10" y="10" width="15" height="15" style="fill:green;fill-opacity:0.5"/>
+ </pattern>
+</defs>
+ <rect x="125" y="40" width="100" height="75" style="fill:url(#pat1)" />
+ <rect x="125" y="117.5" width="100" height="75" style="fill:url(#pat2)" />
+ <rect x="125" y="195" width="100" height="75" style="fill:url(#pat3)" />
+ <rect x="125" y="275" width="100" height="75" style="fill:url(#see)" />
+
+<defs>
+ <pattern id="patgrad1" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse">
+ <circle cx="10" cy="10" r="10" style="fill:url(#grad1)" />
+ </pattern>
+ <pattern id="patpat2" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse">
+ <circle cx="10" cy="10" r="10" style="fill:url(#pat2)" />
+ </pattern>
+ <pattern id="patimage3" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse">
+ <image x="0" y="0" width="10" height="10" xlink:href="logo.jpg"/>
+ </pattern>
+</defs>
+
+<text x="230" y="35" style="font-size:12">Pattern in Pattern</text>
+
+ <rect x="235" y="40" width="100" height="75" style="fill:url(#patgrad1)" />
+ <rect x="235" y="117.5" width="100" height="75" style="fill:url(#patpat2)" />
+ <rect x="235" y="195" width="100" height="75" style="fill:url(#patimage3)" />
+
+</g>
+
+</svg>
+
--- /dev/null
+<?xml version="1.0" encoding="iso-8859-1"?>
+<svg width="400" height="400" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+
+<g>
+
+<text x="15" y="20" style="font-size:18">Various Text Elements</text>
+
+<text x="15" y="40" style="font-size:12;font-family:Helvetica">Normal Text in Helvetica,</text>
+<text x="152" y="40" style="font-size:12;font-family:Symbol">Symbol,</text>
+<text x="199" y="40" style="font-size:12;font-family:blah">Unknown,</text>
+<text x="257" y="40" style="font-size:12;font-family:Courier">Courier,</text>
+<text x="318" y="40" style="font-size:12;font-family:Arial">Arial</text>
+
+<g transform="translate(15,55) scale(0.25)">
+<text x="0" y="0" style="font-size:40">Large Text (scaled)</text>
+</g>
+<text x="120" y="55" style="font-size:10">Normal Text (unscaled)</text>
+
+<text x="15" y="70" style="font-size:12.5">fractional Text</text>
+
+<text x="15" y="85" style="font-size:12;fill:red">Coloured Text</text>
+<text x="15" y="100" style="font-size:12;fill:none;stroke:red;stroke-width:0.4">Stroked Text</text>
+<text x="15" y="115" style="font-size:12;fill:blue;stroke:red;stroke-width:0.4">Stroked/Filled Text</text>
+<text x="15" y="130" style="font-size:12" text-decoration="overline">Overline Text</text>
+<text x="15" y="145" style="font-size:12" text-decoration="underline">Underline Text</text>
+<text x="15" y="160" style="font-size:12" text-decoration="line-through">Strikethrough Text</text>
+
+<text x="15" y="185" style="font-size:12">Text <tspan fill="blue" dy="-10">with</tspan> <tspan fill="green" dy="20">tspan</tspan></text>
+
+ <defs>
+ <path id="Path2" style="fill:none; stroke:blue;" transform="scale(0.15,0.15)"
+ d="M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 100 900 100"/>
+ <path id="Path1" style="fill:none; stroke:blue;" transform="scale(0.30,0.50)"
+ d="M 100 100 C100 0 400 00 400 100"/>
+
+</defs>
+
+<text transform="translate(20, 220)" font-size="15">
+<textPath xlink:href="#Path2"><tspan baseline-shift="super" fill="green">super</tspan> and <tspan baseline-shift="sub" fill="red">sub</tspan>scripts</textPath>
+</text>
+
+<g transform="translate(150, 200)" style="font-weight:bold" id="fopdiamond">
+ <text transform="matrix(-0.34202 -0.93969 0.93969 -0.34202 47 45)">FOP</text>
+ <text transform="matrix(0.34202 0.93969 -0.93969 0.34202 44 7)">FOP</text>
+ <text transform="matrix(-0.34202 0.93969 -0.93969 -0.34202 52 23)">FOP</text>
+ <text transform="matrix(0.34202 -0.93969 0.93969 0.34202 38 28)">FOP</text>
+</g>
+
+<g>
+ <filter id="blur" filterUnits="objectBoundingBox" primitiveUnits="objectBoundingBox" x="-20%" y="-20%" width="120%" height="120%" >
+ <feGaussianBlur stdDeviation="2 2" x="-10%" y="-10%" width="120%" height="120%" />
+ </filter>
+
+<text x="15" y="290" style="font-size:16;filter:url(#blur)">Filtered Text</text>
+</g>
+
+<g>
+ <font horiz-adv-x="150" id="Batik">
+ <font-face
+ font-family="FOPFont"
+ units-per-em="240"
+ ascent="190"
+ descent="50"
+ alphabetic="0"/>
+
+ <missing-glyph horiz-adv-x="150" d="M20 0 V240 H100 V0 z"/>
+
+ <glyph unicode=" " glyph-name=" " horiz-adv-x="100"/>
+
+ <glyph unicode="F" glyph-name="F" horiz-adv-x="190">
+<g transform="scale(1.5, -1.5) translate(0, -130)">
+<g style="stroke:black;stroke-width:8">
+<line x1="5" y1="20" x2="125" y2="20"/>
+<line x1="5" y1="40" x2="40" y2="40"/>
+<line x1="5" y1="60" x2="100" y2="60"/>
+<line x1="5" y1="85" x2="40" y2="85"/>
+<line x1="5" y1="110" x2="40" y2="110"/>
+</g>
+</g>
+ </glyph>
+
+ <glyph unicode="O" glyph-name="o" horiz-adv-x="185">
+<g transform="scale(1.5, -1.5) translate(0, -130)">
+<g style="stroke:black;stroke-width:8">
+<line x1="50" y1="30" x2="80" y2="30"/>
+<line x1="30" y1="45" x2="100" y2="45"/>
+<line x1="20" y1="60" x2="110" y2="60"/>
+<line x1="30" y1="80" x2="100" y2="80"/>
+<line x1="50" y1="100" x2="80" y2="100"/>
+</g>
+</g>
+ </glyph>
+
+ <glyph unicode="P" glyph-name="p" horiz-adv-x="210">
+<g transform="scale(1.5, -1.5) translate(0, -130)">
+<g style="stroke:black;stroke-width:8">
+<line x1="5" y1="20" x2="110" y2="20"/>
+<line x1="5" y1="40" x2="40" y2="40"/>
+<line x1="90" y1="40" x2="120" y2="40"/>
+<line x1="5" y1="60" x2="105" y2="60"/>
+<line x1="5" y1="85" x2="40" y2="85"/>
+<line x1="5" y1="110" x2="40" y2="110"/>
+</g>
+</g>
+ </glyph>
+
+ <hkern g1="F" g2="O" k="5"/>
+ <hkern g1="O" g2="P" k="4"/>
+ </font>
+
+ <text x="15" y="310" font-family="FOPFont" font-size="12">FOP in FOPfont</text>
+</g>
+
+ <text x="130" y="80" writing-mode="tb" font-size="12">vertical</text>
+ <text x="140" y="80" writing-mode="tb" glyph-orientation-vertical="0deg" font-size="12">vertical</text>
+ <text x="150" y="80" glyph-orientation-horizontal="90deg" font-size="12">orientated text</text>
+
+ <text x="150" y="95" font-stretch="narrower" font-size="12">stretched font</text>
+
+ <text x="150" y="110" letter-spacing="5" font-size="12">spaced letters</text>
+
+ <text x="150" y="125" word-spacing="3pt" font-size="12">spaced words</text>
+
+
+
+ <!-- empty element -->
+ <text/>
+</g>
+
+</svg>
+
--- /dev/null
+<?xml version="1.0" encoding="iso-8859-1"?>
+<svg width="400" height="400" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+
+<g>
+
+<text x="20" y="20" style="font-size:18">Transparency in SVG (to PDF)</text>
+
+<text x="20" y="35" style="font-size:12">Shapes</text>
+<rect x="30" y="55" width="100" height="80" style="fill:green;stroke:blue;stroke-width:3;fill-opacity:0.5;stroke-opacity:0.6"/>
+<rect x="80" y="95" width="100" height="80" style="fill:red;stroke:yellow;stroke-width:3;fill-opacity:0.5"/>
+
+
+</g>
+
+<g>
+<defs>
+ <filter id="Turb" filterUnits="objectBoundingBox"
+ x="0%" y="0%" width="100%" height="100%">
+ <feTurbulence type="fractalNoise" baseFrequency="0.1" numOctaves="1"/>
+ </filter>
+</defs>
+
+<text x="20" y="205" style="font-size:12">Image</text>
+ <rect x="20" y="210" width="40" height="35" style="fill:blue" />
+<text x="60" y="255" style="font-size:20;font-weight:bold">SEE</text>
+ <rect x="25" y="215" width="100" height="75" style="filter:url(#Turb)" />
+
+
+</g>
+
+<text x="220" y="35" style="font-size:12">Text</text>
+<rect x="240" y="55" width="130" height="50" style="fill:blue"/>
+<text x="280" y="75" style="font-size:20;font-weight:bold;fill-opacity:0.6;fill:green">SEE</text>
+<text x="250" y="95" style="font-size:20;font-weight:bold;fill-opacity:0.4;fill:orange;stroke:red">THROUGH</text>
+
+<text x="220" y="205" style="font-size:12">Uniform Image Transparency</text>
+<defs>
+ <filter id="matrixGreen" filterUnits="objectBoundingBox"
+ x="0%" y="0%" width="100%" height="100%">
+ <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2" stitchTiles="noStitch" seed="0" result="turb"/>
+ <feColorMatrix type="matrix" values="0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1" />
+ </filter>
+</defs>
+<rect x="240" y="225" width="100" height="75" style="opacity:0.4;filter:url(#matrixGreen)" />
+
+
+</svg>
+
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<document>
+ <header>
+ <title>Download</title>
+ </header>
+
+ <body>
+<section>
+ <title>Downloading FOP</title>
+ <p>You can download the latest release version from the <link
+ href="http://xml.apache.org/dist/fop/">distribution directory</link>. </p>
+ <p>The file contains also the documentation (including some example fo files) and the source. </p>
+ <p>If you want to work with the latest and nicest code, you can use the cvs version. See the section
+ on AnonCVS in the <link href="http://xml.apache.org/cvs.html">xml.apache.org documentation</link> for details.
+ Sometimes people have difficulties to access the cvs server; in this case you can download
+ a snapshot from the cvs files <link href="http://xml.apache.org/from-cvs/xml-fop/">here</link>.
+ In both cases you have to build Fop yourself - see <link href="compiling.html">Compiling Fop</link> for details.
+ </p>
+ <note>
+ Important: Currently, releases of FOP are coming out of the
+ "fop-0_20_2-maintain" branch. The "MAIN" branch is currently
+ under development. See <link href="dev/index.html">Development Docs</link>
+ for more information.
+ </note>
+ <p>To run FOP from the command line, see <link href="running.html">Running FOP</link>.</p>
+ <p>If you are interested in embedding FOP in a Java application of your own, see
+ <link href="embedding.html">Embedding FOP</link>.
+ </p>
+</section>
+ </body>
+</document>
+
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+
+<!-- Embedding FOP -->
+<document>
+ <header>
+ <title>Embedding FOP</title>
+ <subtitle>Notes about embedding FOP in your Java application</subtitle>
+ </header>
+
+ <body>
+<section>
+ <title>Embedding FOP</title>
+ <section>
+ <title>Overview</title>
+ <p>Instantiate org.apache.fop.apps.Driver. Once this class is
+ instantiated, methods are called to set the
+ Renderer to use
+ and the OutputStream to use to output the results of the
+ rendering (where applicable). In the case of the Renderer and
+ ElementMapping(s), the Driver may be supplied either with the
+ object itself, or the name of the class, in which case Driver will
+ instantiate the class itself. The advantage of the latter is it
+ enables runtime determination of Renderer and ElementMapping(s).
+ </p>
+ </section>
+ <section>
+ <title>Examples</title>
+ <p>The simplest way to use Driver is to instantiate it with the
+ InputSource and OutputStream, then set the renderer desired and
+ call the run method.
+ </p>
+ <p>Here is an example use of Driver which outputs PDF:
+ </p>
+ <source><![CDATA[
+ Driver driver = new Driver(new InputSource (args[0]),
+ new FileOutputStream(args[1]));
+ driver.setRenderer(Driver.RENDER_PDF);
+ driver.run();]]></source>
+
+ <p>You also need to set up logging. Global logging for all FOP
+ processes is managed by MessageHandler. Per-instance logging
+ is handled by Driver. You want to set both using an implementation
+ of org.apache.avalon.framework.logger.Logger. See
+ <link href="http://jakarta.apache.org/avalon/framework/">Jakarta
+ Avalon Framework</link> for more information.
+ </p>
+ <source><![CDATA[
+ Logger logger = new ConsoleLogger(ConsoleLogger.LEVEL_INFO);
+ MessageHandler.setScreenLogger(logger);
+ driver.setLogger(logger);]]></source>
+
+ <p>To setup the user config file you can do the following
+ </p>
+ <source><![CDATA[
+ userConfigFile = new File(userConfig);
+ options = new Options(userConfigFile);]]></source>
+ <note>
+ This is all you need to do, it sets up a static configuration class.
+ </note>
+
+ <p>Once the Driver is set up, the render method
+ is called. Depending on whether DOM or SAX is being used, the
+ invocation of the method is either render(Document) or
+ render(Parser, InputSource) respectively.
+ </p>
+ <p>
+ <strong>Another possibility may be used to build the FO Tree. You can
+ call getContentHandler() and fire the SAX events yourself.
+ </strong>
+ </p>
+ <p>Once the FO Tree is built, the format() and render() methods may be
+ called in that order.
+ </p>
+ <p>Here is an example use of Driver:</p>
+ <source><![CDATA[
+ Driver driver = new Driver();
+ driver.setRenderer(Driver.RENDER_PDF);
+ driver.setInputSource(new FileInputSource(args[0]));
+ driver.setOutputStream(new FileOutputStream(args[1]));
+ driver.run();]]></source>
+ <p>You can also specify an xml and xsl file for the input.
+ </p>
+ <p>Here is an example use of Driver with the XSLTInputHandler:</p>
+ <source><![CDATA[
+ Driver driver = new Driver();
+ driver.setRenderer(Driver.RENDER_PDF);
+ InputHandler inputHandler = new XSLTInputHandler(xmlFile, xslFile);
+ XMLReader parser = inputHandler.getParser();
+ driver.setOutputStream(new FileOutputStream(outFile));
+ driver.render(parser, inputHandler.getInputSource());]]></source>
+ <p>Have a look at the classes CommandLineStarter or FopServlet for complete examples.</p>
+
+<note>If your FO files contain SVG then batik will be used. When batik is
+initialised it uses certain classes in <code>java.awt</code> that
+intialises the java AWT classes. This means that a daemon thread
+is created by the jvm and on unix it will need to connect to a
+DISPLAY.
+The thread means that the java application will not automatically quit
+when finished, you will need to call <code>System.exit</code>. These
+issues should be fixed in the upcoming JDK1.4</note>
+
+ </section>
+ <section>
+ <title>Controlling logging</title>
+ <p>FOP uses Jakarta Avalon's
+ <link href="http://jakarta.apache.org/avalon/api/org/apache/avalon/framework/logger/Logger.html">Logger</link>
+ interface to do logging. See the <link href="http://jakarta.apache.org/avalon/">Jakarta Avalon project</link> for more information.</p>
+ <p>Per default FOP uses the ConsoleLogger which logs to System.out. If you want to do logging using a
+ logging framework (such as LogKit, Log4J or JDK 1.4 Logging) you can set a
+ different Logger implementation on the Driver object. Here's an example how you would use LogKit:</p>
+ <source><![CDATA[
+ Hierarchy hierarchy = Hierarchy.getDefaultHierarchy();
+ PatternFormatter formatter = new PatternFormatter(
+ "[%{priority}]: %{message}\n%{throwable}" );
+
+ LogTarget target = null;
+ target = new StreamTarget(System.out, formatter);
+
+ hierarchy.setDefaultLogTarget(target);
+ log = hierarchy.getLoggerFor("fop");
+ log.setPriority(Priority.INFO);
+
+ driver.setLogger(new org.apache.avalon.framework.logger.LogKitLogger(log));]]></source>
+ <p>The LogKitLogger class implements the Logger interface so all logging calls are being redirected to LogKit.
+ More information on Jakarta LogKit can be found <link href="http://jakarta.apache.org/avalon/logkit/index.html">here</link>.</p>
+ <p>Similar implementations exist for Log4J (org.apache.avalon.framework.logger.Log4JLogger) and
+ JDK 1.4 logging (org.apache.avalon.framework.logger.Jdk14Logger).</p>
+ <p>If you want FOP to be totally silent you can also set an org.apache.avalon.framework.logger.NullLogger instance.</p>
+ <p>If you want to use yet another logging facility you simply have to create a class that implements org.apache.avalon.framework.logging.Logger
+ and set it on the Driver object. See the existing implementations in Avalon Framework for examples.</p>
+
+ </section>
+ <section>
+ <title>Hints</title>
+ <section>
+ <title>XML/XSL/DOM Inputs</title>
+ <p>
+You may want to supply you input to FOP from different data sources.
+For example you may have a DOM and XSL stylesheet or you may want to
+set variables in the stylesheet. The page here:
+<link href="http://xml.apache.org/xalan-j/usagepatterns.html">
+http://xml.apache.org/xalan-j/usagepatterns.html</link> describes
+how you can do these things.
+ </p>
+ <p>
+You can use the content handler from the driver to create a SAXResult.
+The transformer then can fire SAX events on the content handler which
+will in turn create the rendered output.
+ </p>
+ </section>
+ <section>
+ <title>Object reuse</title>
+ <p>
+If FOP is going to be used multiple times within your application
+it may be useful to reuse certain objects to save time.
+ </p>
+ <p>
+The renderers and the driver can both be reused. A renderer is reusable
+once the previous render has been completed. The driver is reuseable
+after the rendering is complete and the reset method is called.
+You will need to setup the driver again with a new OutputStream,
+IntputStream and renderer.
+ </p>
+ </section>
+ <section>
+ <title>Getting information on the rendering process</title>
+ <p>
+ To get the number of pages that were rendered by FOP you can call Driver.getResults(). This returns a
+ FormattingResults object where you can lookup the number of pages produced. It also gives you the
+ page-sequences that were produced along with their id attribute and their number of pages. This is particularly useful if you
+ render multiple documents (each enclosed by a page-sequence) and have to know the number of pages
+ of each document.
+ </p>
+ </section>
+ </section>
+ <section>
+ <title>Using Fop in a servlet</title>
+ <p>
+In the directory xml-fop/docs/examples/embedding you can find a working
+example how to use Fop in a servlet. You can drop the fop.war into the
+webapps directory of Tomcat, then go to a URL like this:
+ </p>
+ <p>http://localhost:8080/fop/fop?fo=/home/path/to/fofile.fo</p>
+ <p>http://localhost:8080/fop/fop?xml=/home/path/to/xmlfile.xml&xsl=/home/path/to/xslfile.xsl</p>
+ <p>You can also find the source code there in the file FopServlet.java</p>
+ <p>
+ To compile this code you will need servlet_2_2.jar (or compatible), fop.jar and the sax api in your classpath.
+ </p>
+ <note>
+ Some browsers have problems handling the PDF result sent back to
+ the browser. IE is particularly bad and different versions behave
+ differently. Having a ".pdf" on the end of the url may help.
+ </note>
+ </section>
+</section>
+ </body>
+</document>
+
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<document>
+ <header>
+ <title>Examples</title>
+ </header>
+<body>
+<section>
+ <title>Examples</title>
+ <p>Examples for the use of xsl:fo can be found in the Fop distribution in
+ the subdirectory xml-fop/docs/examples/fo. You can start transformation of all fo files into pdf
+ files by starting xml-fop/docs/examples/runtests (only source distribution). The resulting test
+ files can be found in xml-fop/docs/examples/tests
+ </p>
+ <p>At the moment the following files are part of the distribution:</p>
+ <ul>
+ <li>simple.fo - a very simple file which gives use a first impression of the structure of an fo file
+ </li>
+ <li>normal.fo - a simple file showing the use of a 2 level of headings, normal text and a header.
+ </li>
+ <li>table.fo - some table examples
+ </li>
+ <li>list.fo - a short tutorial how to use list fo's and properties
+ </li>
+ <li>images.fo - shows how to embed gif and jpg images into the xsl:fo file using external-graphic.
+ </li>
+ <li>border.fo - a not so simple example how to use borders in tables
+ </li>
+ <li>extensive.fo - a longer test file containing a lot of different flow objects and properties.
+ A good candidate to test your bugfix or new Fop code.
+ </li>
+ <li>leader.fo - shows different uses of fo:leader, p.e. as rule or in a table of content
+ </li>
+ <li>normalex.fo - shows the use of computed property values
+ </li>
+ <li>inhprop.fo - shows the use of inherited property values
+ </li>
+ <li>instream.fo - shows the use of fo:instream-foreign-object together with svg
+ </li>
+ <li>textdeko.fo - shows the use of the property textdecoration
+ </li>
+ <li>readme.fo - uses an old version of Fop documentation for a longer example
+ </li>
+
+ <li>Look also into the directory examples/svg. There you find some very extensive svg examples.
+ Just start makedoc.
+ </li>
+ <li>In the directory examples/pagination you find a suite of examples showing the use
+ of xsl:fo pagination.
+ </li>
+ </ul>
+ <p>Developers will find the first steps to a test suite for all implemented formatting objects and
+ properties in xml-fop/test/xml/.</p>
+
+</section>
+</body>
+</document>
+
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<document>
+ <header>
+ <title>FOP</title>
+ </header>
+ <body>
+<section>
+ <title>Extensions to FOP</title>
+ <p>Sometimes it is desirable to have extensions to xsl:fo in order to support some feature of the
+ output format which isn't covered by the xsl:fo specification.
+ </p>
+ <section>
+ <title>Default Extensions</title>
+<p>
+These extension are available by default. They are automatically loaded
+and you only need to provide the correct namespace for your embedded
+xml markup.
+</p>
+ <section>
+ <title>SVG</title>
+<p>
+Please see the <link href="svg.html">SVG page</link> for more details.
+</p>
+ </section>
+ <section>
+ <title>Bookmarks</title>
+ <p>To use this standard Fop extension, you need to add a namespace entry for
+ http://xml.apache.org/fop/extensions on the root element. </p>
+
+ <p>You can provide outlines inside the root object (but outside
+ any page-sequences or
+ other formatting objects). Here's an example of an outline entry:</p>
+ <source>
+<![CDATA[<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:fox="http://xml.apache.org/fop/extensions">
+ <fox:outline internal-destination="sec3">
+ <fox:label>Running FOP</fox:label>
+
+ <fox:outline internal-destination="sec3-1">
+ <fox:label>Prerequisites</fox:label>
+ </fox:outline>
+ <fox:outline>
+</fo:root>]]></source>
+ <p>It works similarly to a basic-link. There is also an external-destination
+ property, but it isn't supported currently. See the pdfoutline.fo file in
+ docs/examples/fo for a more complete example.</p>
+ </section>
+ </section>
+ <section>
+ <title>Adding Your Own</title>
+<p>
+To add your own extension you need to do the following things.
+</p>
+<p>
+Write code that implements your extension functionality.
+The easiest place to start is by looking at the code in org.apache.fop.extension.
+</p>
+<p>
+Create a jar file with your classes, it must also include the following file "/META-INF/services/org.apache.fop.fo.ElementMapping". In this file you need to put the fully qualified classname of your element mappings class. This class must implement the "org.apache.fop.fo.ElementMapping" interface.
+</p>
+<p>
+Create your fo file with the extra xml data embedded in the file with the correct name space. The examples for svg and pdfoutline.fo show how this can be done.
+</p>
+<p>
+Put your jar file in the classpath and then run fop over the fo file.
+</p>
+
+ </section>
+</section>
+</body>
+</document>
+
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE faqs PUBLIC "-//APACHE//DTD FAQ V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/faq-v11.dtd">
+
+<faqs title="FOP FAQ">
+ <part>
+ <title>General questions</title>
+ <faq>
+ <question>What is FOP?</question>
+ <answer>
+ <p>
+ FOP is a print formatter for <jump href="#XSLFO">XSL formatting
+ objects</jump>.
+ </p>
+ <p>
+ It can be used to render an XML file containing XSL formatting objects
+ into a page layout. The main target is PDF but other rendering targets
+ are supported, such as AWT, PCL, text and direct printing.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>What can I do with FOP?</question>
+ <answer>
+ <p>
+ FOP provides both an application and a library that converts an XSL FO
+ document into paginated output.
+ </p>
+ <p>
+ The FOP command line application can be directly used to transform XML
+ into PDF, PostScript, PCL and other formats, there is also an AWT
+ based viewer integrated.
+ </p>
+ <p>
+ The library can be used in servlets and other Java applications.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>What does "FOP" stand for?</question>
+ <answer>
+ <p>
+ It's an acronym for <strong>F</strong>ormatting
+ <strong>O</strong>bject <strong>P</strong>rocessor
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>How does FOP interact with other Apache Projects?</question>
+ <answer>
+ <p>
+ FOP is distributed with <link
+ href="http://xml.apache.org/cocoon">Cocoon</link> as a PDF serializer
+ for XSL (FO) documents.
+ </p>
+ <p>
+ <link href="http://xml.apache.org/batik">Batik</link> can be used with
+ FOP to <link
+ href="http://xml.apache.org/batik/svgrasterizer.html">transcode an SVG
+ image</link> into a PDF document.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>What is XSL?</question>
+ <answer>
+ <p>
+ XSL is a W3C standard concerned with publishing XML documents. It
+ consists of two parts: <jump href="#XSLT">XSLT</jump> and <jump
+ href="#XSLFO">XSLFO</jump>. The acronym expands to
+ e<strong>X</strong>tensible <strong>S</strong>tylesheet
+ <strong>L</strong>anguage.
+ </p>
+ </answer>
+ </faq>
+ <faq id="XSLFO">
+ <question>What is XSLFO?</question>
+ <answer>
+ <p>
+ XSLFO is an XML vocabulary that is used to specify a pagination and
+ other styling for page layout output. The acronym “FO” stands for
+ <strong>F</strong>ormatting <strong>O</strong>bjects. XSLFO can be
+ used in conjunction with <jump href="#XSLT">XSLT</jump> to convert
+ from any XML format into a paginated layout ready for printing or
+ displaying.
+ </p>
+ <p>
+ XSLFO defines a set of elements in XML that describes the way pages
+ are set up. The contents of the pages are filled from flows. There can
+ be static flows that appear on every page (for headers and footers)
+ and the main flow which fills the body of the page.
+ </p>
+ <p>
+ Synonyms: XSL FO, XSL (FO), XSL:FO, XSL-FO, Formatting Objects
+ </p>
+ </answer>
+ </faq>
+ <faq id="XSLT">
+ <question>What is XSLT?</question>
+ <answer>
+ <p>
+ XSLT describes the transformation of arbitrary XML input into other
+ XML (like XSLFO), HTML or plain text. The “T” comes from
+ <strong>T</strong>ransformation. For historical reasons, a
+ transformation is often also called a “style sheet”.
+ </p>
+ <p>
+ Synonyms: XSL transformation, XSL:T, XSL style sheet.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>How can I contribute?</question>
+ <answer>
+ <p>
+ There is always plenty of things to do. See <link>limitations</link>
+ and <link>bugzilla</link>.
+ </p>
+ </answer>
+ </faq>
+ </part>
+ <part>
+ <title>Common stumbling blocks</title>
+ <faq>
+ <question>I get the error: [ERROR]: 'master-reference' for
+ 'fo:page-sequence'matches no 'simple-page-master' or
+ 'page-sequence-master'</question>
+ <answer>
+ <p>
+ FOP was changed to be in accordance with the latest standard
+ (see <link href="resources.html#w3-xsl">XSL
+ standard</link>).The page master for a fo:page-sequence is
+ now refereced by the master-reference attribute. Replace the
+ master-name attributes of your fo:page-sequence elements by
+ master-reference attributes. You have to do this also for
+ fo:single-page-master-reference,
+ fo:repeatable-page-master-reference and
+ fo:conditional-page-master-reference elements in you page
+ master definitions.
+ </p>
+ <p>
+ See also <link>release notes</link>.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>My PNG images don't work.</question>
+ <answer>
+ <p>
+ The Jimi image library, which is used for processing images in PNG and
+ other formats, was removed from the distribution for licensing
+ reasons. You have to <fork href="http://java.sun.com">download</fork>
+ and <link>install</link> it by yourself.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>I get a NoClassDefFound exception.</question>
+ <answer>
+ <p>This is typically a problem with your <link>classpath</link>.</p>
+ <p>If you are running FOP from the command line:</p>
+ <ul>
+ <li>
+ Use the fop.bat or fop.sh command file from the FOP distribution.
+ Ensure the directory where FOP and these files have been installed
+ is the current working directory.
+ </li>
+ <li>
+ If this doesn't help, check whether still all the jar files
+ mentioned in the classpath in the fop.bat file are in their
+ respective places.
+ </li>
+ </ul>
+ <p>
+ If you run FOP embedded in your servlet, web application or other Java
+ application, check the classpath of the application.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>I get a NoSuchMethodException or a NoSuchFieldException
+ exception.</question>
+ <answer>
+ <p>
+ This is usually caused by an older version of one of the FOP jars or
+ old XML tools in the classpath. Check in particular for parser.jar,
+ jaxp.jar, xml4j.jar or lotusxsl.jar.
+ </p>
+ <p>
+ Incompatible versions of Batik may also cause this problem. Use
+ the version of Batik that comes with FOP.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>I get an OutOfMemoryException.</question>
+ <answer>
+ <p>
+ FOP can consume quite a bit of memory, even though this has been
+ continually improved. The memory consumption is partially inherent to
+ the formatting process and partially caused by implementation
+ choices. For certain layouts, all FO processors currently on the
+ market have memory problems.
+ </p>
+ <p>
+ Some hints regarding your document structure:
+ </p>
+ <ul>
+ <li>
+ Avoid forward <link>references</link>. Forward references cause all
+ pages from the page with the reference on to be held in memory until
+ the page with the referenced element is encountered. Common forward
+ references are table of contents at the beginning of the document
+ and the <link>"page N of TOTAL"</link> in footers. Forward
+ references may be required by the task, however, if you are getting
+ a memory overflow you should at least check whether this is really
+ as necessary as claimed. A TOC, for example, could often be placed
+ at the end of the document without dimishing it's value too much,
+ the paper can be reshuffled after printing, and you can use
+ bookmarks in PDF.
+ </li>
+ <li>
+ Avoid large images, especially if they are scaled down. Scale them
+ outside of FOP and use the already scaled images for the FOP
+ run. For many image formats it is mainly the size of the image file
+ which matters, not width*height, so you can try other means like
+ using a higher compression rate.
+ </li>
+ <li>
+ Use multiple page sequences. FOP starts rendering after the end of a
+ page sequence is encountered. While the actual rendering is done
+ page by page, some memory allocated for other purposes could
+ possibly be freed after the page sequence has been rendered.
+ </li>
+ <li>
+ Increase <link>memory settings of the JVM</link>. Be aware that it
+ is usually unwise to increase the memory allocated to the JVM beyond
+ the amount of physical RAM, it will significantly slow down. YMMV.
+ </li>
+ </ul>
+ <p>
+ There are also some bugs which cause FOP to go into an nonterminating
+ loop, which also often results in a memory overflow. A characteristic
+ symptom are continuous <jump href="#boxoverflow">box
+ overflows</jump>. Most of them are triggered by elements not fitting
+ in the available space, like big images and improperly specified width
+ of nested block elements. Look for such stuff and correct it.
+ </p>
+ <p>
+ Reducing memory consumption in general and squishing bugs is an
+ ongoing effort, partially addressed in the <link>redesign</link>.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>I get a MalformedURLException.</question>
+ <answer>
+ <p>
+ What you probably think of as "file names" are usually URLs, in
+ particular the src attribute of fo:external-graphic.
+ </p>
+ <p>
+ Because usage of URLs is growing, you should make yourself familiar
+ with it. The relevant specification is <link
+ href="http://www.rfc-editor.org/rfc/rfc2396.txt">RFC 2396</link>.
+ </p>
+ <p>
+ In a nutshell, the correct syntax for an absolute file URL is
+ <code>file:///some/path/file.ext</code> on Unix and
+ <code>file:///z:/some/path/file.ext</code> on Windows systems. Note
+ the triple slash, and also that only forward slashes are used, even on
+ windows.
+ </p>
+ <p>
+ A relative file URL starts with anything but a slash, and doesn't have
+ the <code>file:</code> prefix, for example <code>file.ext</code>,
+ <code>path/file.ext</code> or <code>../file.ext</code>. The string
+ <code>file:path/file.ext</code> is <em>not</em> a relative URL,
+ in fact, it isn't a valid URL at all. A relative URL is subject to a
+ <link>resolving process</link>, which transforms it into an absolute
+ URL.
+ </p>
+ <p>
+ See <link>Understanding URIs and URLs</link> and <link>Understanding
+ URL resolving</link>.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>I get an "[ERROR]: null", or a NullPointerException.</question>
+ <answer>
+ <p>
+ Most often, you supplied an invalid FO document to FOP. Currently only
+ very common errors are intercepted and produce a comprehensible error
+ message. If you forgot container elements like fo:page-sequence or
+ fo:flow and put blocks and inline elements directly as children of
+ fo:root or fo:page-sequence, you'll only get a
+ NullPointerException. Check whether your FO file has a proper
+ structure. In some cases there are mandatory properties, like the
+ master-reference in fo:conditional-page-master-reference, check also
+ whether you got them right.
+ </p>
+ <p>
+ You can use the <link>FOP DTD</link> or <link>FOP Schema</link> to
+ validate your soure. This will catch most, but still not all problems.
+ </p>
+ <p>
+ If you use XSLT, problems in your style sheet and in your source XML
+ also often produce a NullPointerException. Run the transformation
+ separately to check for this, usually you'll get a detailed error
+ message from the XSLT processor.
+ </p>
+ <p>
+ If you turn on debugging with the "-d" option you may be able to
+ see more detailed information.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>FOP hangs. FOP does not exit.</question>
+ <answer>
+ <p>
+ The most likely reason is a known problem with the Java run time
+ environment which is triggered by rendering SVGs. Suns JDK 1.4 does
+ not have this problem. See also <jump href="#svghangs">FOP does not
+ exit if a SVG is included</jump>.
+ </p>
+ <p>
+ Another possibility is that FOP went into a non terminating
+ loop. Usually this is indicated by lots of log messages of the form
+ "[INFO]: [NNNN]" which indicate a new page has been started or <jump
+ href="#boxoverflow">box overflows</jump>. After some time, FOP will
+ crash with an OutOfMemoryException.
+ </p>
+ <p>
+ If you called the FOP command line application from some other
+ programm, for example from Java using Runtime.exec(), it may hang
+ while trying to write log entries to the output pipe. You have to read
+ the FOP output regularly to empty the pipe buffer. It is best to avoid
+ exec'ing FOP, use the library interface.
+ </p>
+ </answer>
+ </faq>
+ <faq id="boxoverflow">
+ <question>FOP runs forever, writing lots of ">" to the log.</question>
+ <answer>
+ <p>
+ There is something too large to fit into the intended place, usually a
+ large image, a table whose rows are kept together or a block with a
+ space-before or space-after larger than the page size. Catch the first
+ page showing this phenomenon and check it. If it is not obvious which
+ element causes the trouble, remove stuff until the problem goes
+ away. Decrease the dimensions of the offending element or property, or
+ increase the dimension of the enclosing element or container, or
+ remove keep-with-* properties.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>FOP cannot find a file for fo:external-graphics.</question>
+ <answer>
+ <p>
+ The src attribute of the fo:external-graphics element takes an URI,
+ not a file name.
+ </p>
+ <p>
+ Relative URLs are resolved against the baseDir property of FOP. For
+ the command line FOP application, the baseDir is the directory of the
+ input file, either the FO file or the XML source. If FOP is used
+ embedded in a servlet, <link>baseDir can be set explicitely</link>. If
+ it's not set, it is usually the current working directory of the
+ process which runs FOP.
+ </p>
+ <p>
+ See <link>Understanding URIs and URLs</link> and <link>Understanding
+ URL resolving</link>.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>FOP does not find my fonts.</question>
+ <answer>
+ <p>
+ Did you get: «Failed to read font metrics file C:\foo\arial.xml
+ : File "C:\foo\arial.xml" not found»? The value for the
+ metrics-file attribute in the user config file is actually an URL, not
+ a file name. Use "file:///C:/foo/arial.xml" instead.
+ </p>
+ <p>
+ If you used a relative URL, make sure your application has the working
+ directory you expect. Currently FOP does not use the baseDir for
+ resolving relative URLs pointing to font metric files.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>Keep-with-next, keep-with-previous, keep-together
+ don't work.</question>
+ <answer>
+ <p>
+ These properties are not implemented, except for keep-with-next and
+ keep-with-previous on table rows. In order to take advantage of them,
+ you have to nest stuff to be kept together in a table.
+ </p>
+ <p>
+ The concept is called “blind table”. The table is used for
+ pure layout reasons and not obvious in the output.
+ </p>
+ <p>
+ An example of an image and the image caption to be kept together:
+ </p>
+ <source><![CDATA[<fo:table table-layout="fixed" width="100%">
+ <fo:table-column column-width="proportional-column-width(1)"/>
+ <fo:table-body>
+ <fo:table-row keep-with-next="always">
+ <fo:table-cell>
+ <fo:block>
+ <fo:external-graphic src="foo.jpg"/>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ <fo:table-row>
+ <fo:table-cell>
+ <fo:block>Image Caption</fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>]]></source>
+ </answer>
+ </faq>
+ <faq>
+ <question>My tables are missing, or missing their content.</question>
+ <answer>
+ <p>
+ Check for fo:table-body around the rows. FOP doesn't raise an error if
+ it is omitted, it just drops the content.
+ </p>
+ <p>
+ Also, the fo:table-with-caption element is not implemented, tables
+ within such an element are dropped too. The DocBook style sheets
+ generate fo:table-with-caption elements, so watch out.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>Text overflowing table cells and the like is not clipped. Long text
+ flows into adjacent cells/block, obscuring stuff there.</question>
+ <answer>
+ <p>
+ Clipping as specified by the <code>overflow="hidden"</code> is not yet
+ implemented. If you have long words overflowing table cells, try to
+ get them hyphenated. Artificial names like product identifications or
+ long numbers usually aren't hyphenated. You can try special processing
+ at XSLT level, like
+ </p>
+ <ul>
+ <li>
+ clip long text,
+ </li>
+ <li>
+ explicit wrapping+clipping,
+ </li>
+ <li>
+ insert zero width spaces (U+200B or &#x200B;) to allow FOP to
+ wrap.
+ </li>
+ </ul>
+ <p>
+ Check the <link href="http://dpawson.co.uk/xsl">XSL FAQ</link> and the
+ <link href="http://www.mulberrytech.com/xsl/xsl-list/">XSL list
+ archive</link> for how to perform these tasks.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>Page numbers are not properly right aligned.</question>
+ <answer>
+ <p>
+ This happens for fo:page-number-citation elements if the citation
+ occurs before FOP formatted the requested page, usually in TOC or
+ index pages.
+ </p>
+ <p>
+ It is caused by the problem that FOP has to guess how much space the
+ yet unknown page number will occupy, and usually the guesses are
+ somewhat off. You can try to use a non-proportional font like Courier
+ to remedy this. However, this is likely to look ugly, and wont fix the
+ problem completely.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>A graphic is not displayed.</question>
+ <answer>
+ <p>
+ Several possibilities:
+ </p>
+ <ul>
+ <li>
+ The graphic is too large to fit into the intended space.
+ </li>
+ <li>
+ Some image format subclasses can't be handled, try to convert the
+ graphic to a format subclass known to work. (Sorry, no list of
+ formats known to work)
+ </li>
+ <li>
+ Something else obscures the graphic, for example stuff from a static
+ content (very rare, but has happened).
+ </li>
+ </ul>
+ <p>
+ See also <link>supported image formats</link>.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>Hyphenation does not work.</question>
+ <answer>
+ <p>
+ Set the language attribute somewhere. Check whether you use a language
+ for which hyphenation is supported. Supported languages can be deduced
+ from the files in the hyph directory of the FOP source distribution.
+ </p>
+ </answer>
+ </faq>
+ </part>
+ <part>
+ <title>Embedding FOP. Using FOP in a servlet</title>
+ <faq>
+ <question>How do I use FOP in a servlet?</question>
+ <answer>
+ <p>Look at the <link>servlet example</link>.</p>
+ <p>
+ A rather minimal code snippet to demonstrate the basics:
+ </p>
+ <source>response.setContentType("application/pdf");
+Driver driver=new Driver( new InputSource("foo.fo"),
+ response.getOutputStream());
+driver.setRenderer(Driver.RENDER_PDF);
+driver.run();</source>
+ <p>
+ Caveat: Internet Explorer will not automatically show the PDF. Thats a
+ well known IEx problem, not with the servlet. You can download the PDF
+ with IEx and view it later. There are other problems with this code.
+ </p>
+ <p>
+ Please look into <link>Howto embed FOP in a servlet</link> for all
+ kinds of details.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>How do I use FOP in a servlet with an XSLT transformation?</question>
+ <answer>
+ <p>
+ Use the TraxInputHandler if both the source XML and XSL are read from
+ files.
+ </p>
+ <p>
+ A demonstration:
+ </p>
+ <source>response.setContentType("application/pdf");
+XSLTInputHandler input
+ =new XSLTInputHandler(new File("foo.xml"), new File("foo.xsl"));
+Driver driver=new Driver();
+driver.setOutputStream(response.getOutputStream());
+driver.setRenderer(Driver.RENDER_PDF);
+driver.render(input.getParser(), input.getInputSource());</source>
+ <p>
+ This minimal code snippet has the same problems as the one from the
+ question above. Please inform yourself about the details.
+ </p>
+ <p>
+ If your source XML is generated on the fly, for example from a
+ database, a web service, or another servlet, you have to create a
+ transformer object explicitely and use a SAX event stream to feed the
+ transformation result into FOP.
+ </p>
+ <p>
+ A demonstration:
+ </p>
+ <source>response.setContentType("application/pdf");
+Driver driver =new Driver();
+driver.setOutputStream(response.getOutputStream());
+driver.setRenderer(Driver.RENDER_PDF);
+Transformer transformer=TransformerFactory.newInstance()
+ .newTransformer(new StreamSource("foo.xsl"));
+transformer.transform(xmlsource, new SAXResult(driver.getContentHandler()));</source>
+ <p>
+ You don't have to call run() or render() on the driver object.
+ </p>
+ <p>
+ The <code>xmlsource</code> is a placeholder for your actual XML
+ source. You can supply a <code>new StreamSource( new
+ StringReader(xmlstring))</code> if you have to read the XML from a
+ string. Constructing an XML string and reparse it is not always a good
+ iea, consider to use a SAXSource if you generate your XML. You can, of
+ course, supply a DOMSource or whatever you like. You can also use
+ dynamically generated XSL if you want to.
+ </p>
+ <p>
+ Because you have an explicit transformer object, you can set
+ parameters for the transformation run too.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>How do I pass parameters to the XSLT transformation?</question>
+ <answer>
+ <p>
+ See the end of the answer for the question above.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>How do I use my own fonts when running FOP from a servlet?</question>
+ <answer>
+ <p>
+ Declare the fonts in the <code>userconfig.xml</code> file as
+ usual. See <jump href="#usercfg">loading the user configuration
+ file</jump> for further steps.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>How do I set the baseDir property in a servlet environment?</question>
+ <answer>
+ <p>
+ Use:
+ </p>
+ <source>org.apache.fop.configuration.Configuration.put("baseDir","/my/base/dir");</source>
+ <p>
+ or
+ </p>
+ <source>org.apache.fop.configuration.Configuration.put("baseDir","C:\my\base\dir");</source>
+ <p>
+ See <jump href="#usercfg">using a user configuration file</jump>
+ for caveats.
+ </p>
+ </answer>
+ </faq>
+ <faq id="usercfg">
+ <question>How do I use a user configuration file from a servlet?</question>
+ <answer>
+ <p>
+ Use:
+ </p>
+ <source>org.apache.fop.apps.Options options = new Options(new File("userconfig.xml"));</source>
+ <p>
+ No further reference to the <code>options</code> variable is
+ necessary. It is recommended to load the user configuration file only
+ once, preferably in the <code>init()</code> method of the servlet. If
+ you have multiple servlets running FOP, or if you have to change the
+ configuration often, it is best to place the configuration changing
+ code and the FOP driver call into a synchronized method, or perhaps a
+ singleton class, in order to avoid problems in multithreaded
+ environments.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>I keep getting NoClassDefFound and other exceptions. How do I
+ get FOP working for various servlet engines?</question>
+ <answer>
+ <p>
+ There are various classpath issues, and possible conflicts with
+ existing XML/XSLT libraries. Because servlet containers often use
+ their own classloaders for loading webapps, bugs and security problems
+ can be bothersome as well.
+ </p>
+ <p>
+ Tomcat comes with detailed instructions for installing FOP and Cocoon,
+ check the documentation. There are known bugs to be circumvented, in
+ particular in Tomcat 4.0.3.
+ </p>
+ <p>
+ Websphere 3.5: See next question.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>FOP in IBM Websphere 3.5</question>
+ <answer>
+ <p>
+ Put a copy of a working parser in some directory where WebSphere can
+ access it, for example, if /usr/webapps/yourapp/servlets is the
+ classpath for your servlets, copy the Xerces jar into it (any other
+ directory would also be fine). Do not add the jar to the servlet
+ classpath, but add it to the classpath of the application server which
+ contains your web application. In the WebSphere administration
+ console, click on the "environment" button in the "general" tab. Fill
+ CLASSPATH in the "variable name" box and
+ /usr/webapps/yourapp/servlets/Xerces.jar (or whatever your complete
+ path is) in the value box, press "OK", then apply the change and
+ restart the application server.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>FOP and multithreading</question>
+ <answer>
+ <p>
+ FOP is not completely thread safe. At the very least you'll have to
+ create a Driver object for every thread unless you prefer your threads
+ being blocked.
+ </p>
+ <p>
+ Even though the relevant methods of the Driver object are
+ synchronized, there are still problems because FOP uses static
+ variables for configuration data and loading images. Be sure not
+ to change the configuration data while there is a Driver object
+ rendering. It is recommended to setup the configuration only
+ once while initialising the servlet. If you have to change the
+ configuration data more often, or if you have several servlets
+ within the same webapp using FOP, consider implementing a
+ singleton class encapsulating both the configuration settings
+ and running FOP in synchronized methods.
+ </p>
+ </answer>
+ </faq>
+ </part>
+ <part>
+ <title>Batik/SVG specific questions</title>
+ <faq>
+ <question>SVG text rendered in bad quality. How do I put SVG text as text
+ into PDF?</question>
+ <answer>
+ <p>
+ The svg text is rendered as shapes, the Acrobat viewer displays it
+ with bad quality unless you turn on smooth line art in the Acrobat
+ preferences. The printout is always ok, it's only the screen view
+ which is of bad quality by default.
+ </p>
+ <p>
+ You can force Batik not to render SVG text by setting the
+ strokeSVGText property to false. You can do this in the user
+ configuration file:
+ </p>
+ <source><![CDATA[<entry>
+ <key>strokeSVGText</key>
+ <value>false</value>
+</entry>]]></source>
+ <p>
+ In a servlet environment, you can set it directly:
+ </p>
+ <source>org.apache.fop.configuration.Configuration.put("strokeSVGText", Boolean.FALSE);</source>
+ <p>
+ See also <jump href="#usercfg">using a user configuration file</jump>
+ in a servlet.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>How do I use FOP with SVG on headless servers?</question>
+ <answer>
+ <p>
+ Batik uses AWT classes for rendering SVG, which in turn needs an X
+ server on Unixish systems. If you run a server without X, or if you
+ can't connect to the X server due to security restrictions or
+ policies, SVG rendering will fail.
+ </p>
+ <p>
+ There are still several options:
+ </p>
+ <ul>
+ <li>
+ If you are using JDK 1.4, start it with the -Djava.awt.headless=true
+ command line option.
+ </li>
+ <li>
+ Install a X server which provides an im-memory framebuffer without
+ actually using a screen device or any display hardware, like Xvfb.
+ </li>
+ <li>
+ Use a toolkit which emulates AWT without the need of an underlying X
+ server, like <link
+ href="http://www.eteks.com/pja/en">PJA</link>. The PJA toolkit is
+ free and comes with detailed installation instructions.
+ </li>
+ </ul>
+ </answer>
+ </faq>
+ <faq id="svghangs">
+ <question>FOP does not exit if a SVG is included.</question>
+ <answer>
+ <p>
+ Applies to older FOP versions and JDK 1.3 and older. That's because
+ there is an AWT thread hanging around. The solution is to put a
+ System.exit(0) somewhere.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>Problems with SVG referring to gradients etc. using
+ "uri(#stuff)" (MalformedURLException or stuff not found)</question>
+ <answer>
+ <p>
+ This is really a "resolving relative URI" problem with some
+ twists. The problem is that the <code>#stuff</code> URL fragment
+ identifier is resolved within the current SVG document. So the
+ reference must be valid within the XML subset and it cannot
+ reference other SVG documents in the same XML file. Some options
+ to try:
+ </p>
+ <ul>
+ <li>
+ Put the SVG into a separate file and use it with
+ fo:external-graphics.
+ </li>
+ <li>
+ Use a separate SVG file which contains only the gradient (and
+ perhaps other SVG stuff you want to reference) and point an absolute
+ URL to it:
+ <code>fill="url(file:///c:/refstuff/grad.svg#PurpleToWhite)"</code>.
+ </li>
+ <li>
+ Same as above but use a relative URL:
+ <code>fill="url(grad.svg#PurpleToWhite)"</code>. This may be easier
+ to deploy.
+ </li>
+ <li>
+ Make sure that the reference is valid in the current SVG document.
+ </li>
+ <li>
+ **DOES THIS WORK**
+ Let the URL refer to some location where the gradient could be
+ retrieved, for example if the SVG code is embedded in your XSL,
+ try <code>fill="url(my.xsl#PurpleToWhite)"</code>.
+ </li>
+ </ul>
+ <p>
+ In any case, the referenced stuff has to be pointed to by an URL. It
+ doesn't necessarily have to be a file URL, HTTP should also
+ work. Also, expect a performance hit in all cases, because another XML
+ file has to be retrieved and parsed.
+ </p>
+ <p>
+ Ultimately, both FOP and especially Batik should be fixed to make
+ your code work as expected, but this will not only take some time
+ but also some effort by a standard committee in order to make the
+ semantics of this kind of references in embedded SVG clearer.
+ </p>
+ <p>See also <link>MalformedURLException</link></p>
+ </answer>
+ </faq>
+ </part>
+ <part>
+ <title>PDF specific (includes Acrobat peculiarities)</title>
+ <faq>
+ <question>How do I embed fonts in PDF?</question>
+ <answer>
+ <p>
+ Provide$$$
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>Characters not displayed, or displayed incorrectly, or displayed
+ as "#"</question>
+ <answer>
+ <p> Answers are that fonts must be available on the target platform, and
+ the selected font must contain glyphs for the desired character.
+</p>
+ <p> For example, for most symbols, the symbol font has to be selected
+ explicitely (actually: is this a feature or a bug?):
+</p>
+<p> <fo:inline font-family="Symbol">&#x2205;</fo:inline></p>
+<p> gives EMPTY SET while the same characters in the default font results
+ in AE LIGATURE (which happens to occupy the same place in the default
+ font as the EMPTY SET in the Symbol font). The "#" shows up if the
+ selected font does not define a glyph for the translated index.</p>
+ <p>(Still applicable in 0.20.3?)</p>
+ </answer>
+ </faq>
+ <faq>
+ <question>PDF encryption, PDF protection (read-only)</question>
+ <answer>
+ <p>use some other tool to postprocess the PDF (itext, or something?)</p>
+ </answer>
+ </faq>
+ <faq>
+ <question>Watermarks</question>
+ <answer>
+ <p> Answer: see 3.3, or use a a region overlapping the flowing text and put
+ an image there:
+</p>
+ <p> > From: Trevor_Campbell@kaz.com.au
+ Use the region-before. Make it large enough to contain your image and then
+ include a block (and if required an absolutely positioned block-container)
+ with your image in the static-content for the region-before.
+ Could use some code here...
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>PDF prints contorted</question>
+ <answer>
+ <p>Check paper size in Acrobat settings and "fit to page" (or something)</p>
+ </answer>
+ </faq>
+ <faq>
+ <question>Controlling Acrobat bookmark display</question>
+ <answer>
+ <p> Not possible with FOP. Postprocess the PDF.</p>
+ </answer>
+ </faq>
+ <faq>
+ <question>PDF (more precise: Acrobat Reader) and IEx</question>
+ <answer>
+ <p>see #later</p>
+ </answer>
+ </faq>
+ </part>
+ <part>
+ <title>IEx specific stuff</title>
+ <faq>
+ <question>The FOP servlet is called multiple times.</question>
+ <answer>
+ <p>
+ This is a problem of Internet Explorer requesting the content several
+ times. Some suggestions:
+ </p>
+ <ul>
+ <li>
+ Use a URL ending in <code>.pdf</code>, like
+ <code>http://myserver/servlet/stuff.pdf</code>. Yes, the servlet can
+ be configured to handle this. If the URL has to contain parameters,
+ try to have both the base URL as well as the last parameter end in
+ <code>.pdf</code>, if necessary append a dummy parameter, like
+ <code>http://myserver/servlet/stuff.pdf?par1=a&par2=b&d=.pdf</code>. The
+ effect may depend on IEx version.
+ </li>
+ <li>
+ Give IEx the opportunity to cache. In particular, ensure the server
+ does not set any headers causing IEx not to cache the content. This
+ may be a real problem if the document is sent over HTTPS. Consult
+ your server manual.
+ </li>
+ <li>
+ Cache in the server. Including a parameter in the URL which has a
+ timestamp as the value may help you to decide whether a request is
+ repeated. IEx is reported to retrieve a document up to three times,
+ but never more often.
+ </li>
+ </ul>
+ </answer>
+ </faq>
+ <faq>
+ <question>How do I print PDF directly from the browser?</question>
+ <answer>
+ <p>
+ It depends whether you mean "printing to a printer under control of the
+ server" or "printing on the client's printer".
+ </p>
+ <p>
+ For the first problem, look at the print servlet in the FOP
+ examples. You'll have to gather any printer settings in an HTML form
+ and send it to the server.
+ </p>
+ <p>
+ For the second task, you can use some client side script to start
+ Acrobat Reader in print mode, or use a Java applet based on the FOP
+ print servlet. This depends heavily on the client installation and
+ should not relied on except in tightly controlled environments.
+ </p>
+ <p>
+ See also http://marc.theaimsgroup.com/?l=fop-dev&m=101065988325115&w=2
+ </p>
+ </answer>
+ </faq>
+ </part>
+ <part>
+ <title>More general questions regarding XSLT and XSLFO and basic XML</title>
+ <faq>
+ <question>(FO) How do I vertically center an image or a table (or
+ whatever)?</question>
+ <answer>
+ <p>
+ Use display-align="center". FOP implements this for block containers
+ and table cell. A small self-contained document centering an image on
+ a page:
+ </p>
+ <source><![CDATA[<?xml version="1.0"?>
+<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name="content"
+ page-width="210mm" page-height="297mm">
+ <fo:region-body/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+ <fo:page-sequence master-reference="content">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:table table-layout="fixed" width="100%">
+ <fo:table-column column-width="proportional-column-width(1)"/>
+ <fo:table-body>
+ <fo:table-row height="297mm">
+ <fo:table-cell display-align="center">
+ <fo:block text-align="center">
+ <fo:external-graphic src="fop.jpg"/>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:flow>
+ </fo:page-sequence>
+</fo:root>]]></source>
+ </answer>
+ </faq>
+ <faq>
+ <question>(FO) How to get page numbers printed on the "outer side" of the
+ page (for books, obviously)?</question>
+ <answer>
+ <p>
+ That's about different static content on <jump
+ href="#oddeven">odd/even pages</jump>.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>(FO) How do I get a special header on the first page?</question>
+ <answer>
+ <p>
+ You can insert it into the flow instead of the static content.
+ Alternatively, use a page master referring to different page masters
+ for the first page and the rest. It is quite similar to the odd/even
+ page mechanism. A code sample:
+ </p>
+ <source><![CDATA[<?xml version="1.0"?>
+<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name="first"
+ page-height="297mm" page-width="210mm"
+ margin-top="20mm" margin-bottom="20mm"
+ margin-left="25mm" margin-right="25mm">
+ <fo:region-body margin-bottom="20mm"/>
+ <fo:region-after region-name="footer-first" extent="20mm"/>
+ </fo:simple-page-master>
+ <fo:simple-page-master master-name="rest"
+ page-height="297mm" page-width="210mm"
+ margin-top="20mm" margin-bottom="20mm"
+ margin-left="25mm" margin-right="25mm">
+ <fo:region-body margin-bottom="20mm"/>
+ <fo:region-after region-name="footer-rest" extent="20mm"/>
+ </fo:simple-page-master>
+ <fo:page-sequence-master master-name="document">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference page-position="first"
+ master-reference="first"/>
+ <fo:conditional-page-master-reference page-position="rest"
+ master-reference="rest"/>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ </fo:layout-master-set>
+ <fo:page-sequence master-reference="document">
+ <fo:static-content flow-name="footer-first">
+ <fo:block text-align="center">First page.</fo:block>
+ </fo:static-content>
+ <fo:static-content flow-name="footer-rest">
+ <fo:block text-align-last="center">Other page.</fo:block>
+ </fo:static-content>
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block/>
+ <fo:block break-before="page"/>
+ <fo:block break-before="page"/>
+ </fo:flow>
+ </fo:page-sequence>
+</fo:root>]]></source>
+ </answer>
+ </faq>
+ <faq id="oddeven">
+ <question>(FO) Different static content for odd/even pages</question>
+ <answer>
+ <p>
+ There are examples in the FO distribution and in the XSL FAQ FO
+ section http://www.dpawson.co.uk/xsl/sect3/index.html
+ </p>
+ <p>
+ Define a page master with alternating pages masters for odd and even
+ pages, specify appropriate regions in these page masters, and be sure
+ to give them different names. You use these names to put different
+ static content in these regions. A self contained document
+ demonstrating this:
+ </p>
+ <source><![CDATA[<?xml version="1.0"?>
+<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name="even"
+ page-height="297mm" page-width="210mm"
+ margin-top="20mm" margin-bottom="20mm"
+ margin-left="25mm" margin-right="25mm">
+ <fo:region-body margin-bottom="20mm"/>
+ <fo:region-after region-name="footer-even" extent="20mm"/>
+ </fo:simple-page-master>
+ <fo:simple-page-master master-name="odd"
+ page-height="297mm" page-width="210mm"
+ margin-top="20mm" margin-bottom="20mm"
+ margin-left="25mm" margin-right="25mm">
+ <fo:region-body margin-bottom="20mm"/>
+ <fo:region-after region-name="footer-odd" extent="20mm"/>
+ </fo:simple-page-master>
+ <fo:page-sequence-master master-name="document">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference odd-or-even="even"
+ master-reference="even"/>
+ <fo:conditional-page-master-reference odd-or-even="odd"
+ master-reference="odd"/>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ </fo:layout-master-set>
+ <fo:page-sequence master-reference="document">
+ <fo:static-content flow-name="footer-even">
+ <fo:block text-align="start"><fo:page-number/></fo:block>
+ </fo:static-content>
+ <fo:static-content flow-name="footer-odd">
+ <fo:block text-align-last="end"><fo:page-number/></fo:block>
+ </fo:static-content>
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block/>
+ <fo:block break-before="page"/>
+ </fo:flow>
+ </fo:page-sequence>
+</fo:root>]]></source>
+ </answer>
+ </faq>
+ <faq>
+ <question>(FO) How do I omit my headers on a blank page? How do I write
+ "This page is left blank" on an intentionally blank page?</question>
+ <answer>
+ <p>
+ A blank page can be forced by a <code>break-before="page-even"</code>
+ or similar properties, or by a force-page-count="end-on-odd" on a page
+ sequence, which ensures a new chapter or something starts on the
+ preferred page.
+ </p>
+ <p>
+ You can define a conditional page master with a page master specific
+ for blank pages. This allows you to specify static content for blank
+ pages (by definition, a page is blank if no content from a flow is
+ rendered on the page). You can omit your normal headers and footers,
+ and use for example an extended header to print the "..left blank"
+ statement.
+ </p>
+ <source><![CDATA[<?xml version="1.0"?>
+<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name="normal"
+ page-height="297mm" page-width="210mm"
+ margin-top="20mm" margin-bottom="20mm"
+ margin-left="25mm" margin-right="25mm">
+ <fo:region-body margin-bottom="20mm"/>
+ <fo:region-after region-name="footer-normal" extent="20mm"/>
+ </fo:simple-page-master>
+ <fo:simple-page-master master-name="blank"
+ page-height="297mm" page-width="210mm"
+ margin-top="20mm" margin-bottom="20mm"
+ margin-left="25mm" margin-right="25mm">
+ <fo:region-body/>
+ <fo:region-before region-name="header-blank" extent="297mm"/>
+ </fo:simple-page-master>
+ <fo:page-sequence-master master-name="document">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference blank-or-not-blank="not-blank"
+ master-reference="normal"/>
+ <fo:conditional-page-master-reference blank-or-not-blank="blank"
+ master-reference="blank"/>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ </fo:layout-master-set>
+ <fo:page-sequence master-reference="document" force-page-count="end-on-even">
+ <fo:static-content flow-name="footer-normal">
+ <fo:block text-align="center">Normal footer</fo:block>
+ </fo:static-content>
+ <fo:static-content flow-name="header-blank">
+ <fo:block space-before="100mm" text-align-last="center">
+ Intentionally left blank.</fo:block>
+ </fo:static-content>
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block/>
+ </fo:flow>
+ </fo:page-sequence>
+</fo:root>]]></source>
+ </answer>
+ </faq>
+ <faq>
+ <question>(FO) How to get Euro sign/checkbox/some other stuff</question>
+ <answer>
+ <p>
+ Try to look it up in the Unicode reference at the <link
+ href="http://www.unicode.org">Unicode Consortium</link>, in
+ particular search the <link
+ href="http://www.unicode.org/charts/charindex.html">reference by
+ name</link>. Use <link
+ href="http://www.w3.org/TR/2000/REC-xml-20001006#sec-references">XML
+ character references</link> to put the character into your source
+ XML, XSLT or FO.
+ </p>
+ <p>
+ Watch out for font traps, see #, change font temporarily using
+ fo:inline if necessary.
+ </p>
+ <p>
+ Alternative: Use an embedded graphic: GIF, PNG, SVG, whatever.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>(FO) How do I keep linebreaks/hard spaces? How do I get
+ preformatted text displayed as expected.</question>
+ <answer>
+ <p>
+ The specification provides some properties for this: <link
+ href="http://www.w3.org/TR/xsl/slice7.html#white-space-collapse">white
+ space collapsing</link> and <link
+ href="http://www.w3.org/TR/xsl/slice7.html#linefeed-treatment">line
+ feed treatment</link>. In FOP, use white-space-collapse="false" on an
+ enclosing block. This will also preserve line breaks (which is
+ actually a bug, expect this to be changed).
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>(FO) How do I print the total number of pages, like in "page 1
+ of 12"</question>
+ <answer>
+ <p>
+ (XSL FAQ)
+ </p>
+ <p>
+ Put an empty block with an id at the end of the flow:
+ </p>
+ <source><![CDATA[<fo:flow ...>
+ ...
+ <fo:block id="last-page"/>
+ </fo:flow>]]></source>
+ <p>
+ Get the number of the last page as follows:
+ </p>
+ <source><![CDATA[ <fo:page-nuber-citation ref-id="last-page"/>]]></source>
+ <p>
+ This does not work for all problems, for example if you have multiple
+ page sequences, an initial page number different from 1, or if you
+ force a certain page count, thereby producing blank pages at the end.
+ </p>
+ <p>
+ There is no reliable way to get the real total page count with FO
+ mechanisms, you can only get <em>page numbers</em>.
+ </p>
+ <p>
+ The FOP library provides a method to get the total page count after a
+ FO document has been rendered. You can implement your own wrapper to
+ do a dummy rendering, inquire the total page count and the perform the
+ real rendering, passing the total page count to the XSLT processor to
+ splice it into the generated FO. A sample code:
+ </p>
+ <source><![CDATA[import org.apache.fop.apps.*;
+import org.xml.sax.*;
+import java.io.*;
+import javax.xml.transform.*;
+import javax.xml.transform.sax.*;
+import javax.xml.transform.stream.*;
+
+class rendtest {
+
+ public static void main(String args[]) {
+ try {
+ Driver driver=new Driver();
+ driver.setOutputStream(new FileOutputStream(args[2]));
+ driver.setRenderer(Driver.RENDER_PDF);
+ Transformer transformer=TransformerFactory.newInstance()
+ .newTransformer(new StreamSource(new File(args[1])));
+ transformer.setParameter("page-count","#");
+ transformer.transform(new StreamSource(new File(args[0])),
+ new SAXResult(driver.getContentHandler()));
+ String pageCount=Integer.toString(driver.getResults().getPageCount());
+ driver=new Driver();
+ driver.setOutputStream(new FileOutputStream(args[2]));
+ driver.setRenderer(Driver.RENDER_PDF);
+ transformer=TransformerFactory.newInstance()
+ .newTransformer(new StreamSource(new File(args[1])));
+ transformer.setParameter("page-count",pageCount);
+ transformer.transform(new StreamSource(new File(args[0])),
+ new SAXResult(driver.getContentHandler()));
+ }
+ catch( Exception e) {
+ e.printStackTrace();
+ }
+ }
+}]]></source>
+ <p>
+ Declare and use the parameter "page-count" in your XSLT. Be aware you
+ may run into convergence problems: replacing the "#" placeholder from
+ the first run by the actual page count may change it.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>(FO) The header overlaps body content. The body extends into
+ footer.</question>
+ <answer>
+ <p>
+ Contrary to popular opinion, the regions on a page may overlap.
+ Defining a certain body region does not automatically constrain other
+ regions, this has to be done explicitely.
+ </p>
+ <p>
+ If you have a header region with an extent of 20mm, you should define
+ a margin for the body region of at least 20mm too, otherwise the
+ header content may overwrite some stuff in the body region. This
+ applies similarly to the extent of the after region and the bottom
+ margin of the body region.
+ </p>
+ <p>
+ The overlap effect can be used creatively for some purposes.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>(FO) How do I get lines in the document, as separators, side
+ bars or folding marks?</question>
+ <answer>
+ <p>
+ Several possibilities:
+ </p>
+ <ul>
+ <li>
+ Use fo:leader (look up the details in the <link
+ href="http://www.w3.org/TR/xsl/slice6.html#fo_leader">XSLFO
+ specification</link>, or use a book). For horizontal lines only.
+ </li>
+ <li>
+ Use a solid border on a suitable fo:block. Horizontal and vertical
+ lines only.
+ </li>
+ <li>
+ Insert a graphic. GIF, PNG SVG, whatever.
+ </li>
+ </ul>
+ </answer>
+ </faq>
+ <faq>
+ <question>(XML) Complaints about &nbsp;. How do I get a non-breaking
+ space in FO?</question>
+ <answer>
+ <p>
+ Use &#160; everywhere. In your own XML, you could also use a DTD
+ which declares the entity.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>(XML) There are complaints about undefined entities, for example
+ complaints about &uuml; which used to work in HTML. How do I enter
+ special characters like in HTML?</question>
+ <answer>
+ <p>
+ Don't use names as in HTML, use numbers (unless you have a DTD which
+ declares the entities). For predefined HTML entities and their Unicode
+ codepoints see <link
+ href="http://www.w3.org/TR/html4/sgml/entities.html">Character entity
+ references in HTML 4</link>
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>(XML) There are complaints about illegal characters and entities
+ in the input.</question>
+ <answer>
+ <p>
+ Make sure ampersands in text and attributes are written as &amp;,
+ "<" is written as &lt; and ">" as &gt;. It's not necessary
+ everywhere but do it just to be sure.
+ </p>
+ <p>
+ The XML parser should give the proper line and possibly column for
+ offending characters.
+ </p>
+ <p>
+ Refer to the <link>XML specification</link> or to a good tutorial for
+ details of the XML file format.
+ </p>
+ </answer>
+ </faq>
+ <faq>
+ <question>(XML) There are complaints about illegal bytes or characters in
+ the input. There are odd characters in the result.</question>
+ <answer>
+ <p>
+ Usually, this is a character encoding problem. See <link
+ href="http://www.dpawson.co.uk/xsl">XSL FAQ</link>. Many software
+ packages producing XML, in particular most XSLT processors, produce by
+ default UTF-8 encoded files. If you view them with something not aware
+ of the encoding, like Notepad for Win95/98/ME/NT, funny characters are
+ displayed. A Å is a giveaway.
+ </p>
+ </answer>
+ </faq>
+ </part>
+ <part>
+ <title>General suggestions. How to solve problems</title>
+ <faq>
+ <question>Where to post bugs</question>
+ <answer>
+ <p>
+ See docs. See also <jump href="#postquestions">"where to post
+ questions"</jump>.
+ </p>
+ </answer>
+ </faq>
+ <faq id="postquestions">
+ <question>Where to post questions.</question>
+ <answer>
+ <p>
+ Decide where to post:
+ </p>
+ <ul>
+ <li>
+ You get exceptions. First, check the FAQ whether the exception is
+ mentioned. ClassNotFoundException, NoSuchMethodException and
+ NoSuchFieldException problems are almost always a problem with the
+ local environment. Check <link
+ href="http://nagoya.apache.org">bugzilla</link>. If still not found,
+ post to fop-dev.
+ </li>
+ <li>
+ Something doesn't work with FOP but works with another formatter
+ (AntennaHouse, PassiveTex). Check whether this is already mentioned
+ in the release notes, the FOP limitations document or the FAQ. Post
+ to fop-dev or open a bug on <link
+ href="http://nagoya.apache.org">bugzilla</link>.
+ </li>
+ <li>
+ Question about how to use FOP, how to perform certain tasks with FOP
+ or how to integrate FOP into another application should be posted to
+ fop-user.
+ </li>
+ <li>
+ XSLT specific stuff sould go to the <link
+ href="http://www.mulberrytech.com/xsl/xsl-list/">XSL
+ list</link>. This includes problems with the language and XSLT
+ How-Tos.
+ </li>
+ <li>
+ Problems specific to a certain XSLT processor, like Xalan, Saxon or
+ MSXML, should be handled by processor specific lists. This includes
+ problems with deployment, processor specific extensions, suspected
+ bugs and processor specific APIs.
+ </li>
+ <li>
+ Problems with servlet containers should be asked on the vendor
+ specific lists for these software packets.
+ </li>
+ <li>
+ More general questions regarding Java, including deployment, Java
+ APIs, classpath issues and property definitions should be redirected
+ to some Java specific list.
+ </li>
+ </ul>
+ </answer>
+ </faq>
+ </part>
+</faqs>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<fo:root font-family="Times Roman" font-size="12pt" text-align="center" xmlns:fo="http://www.w3.org/1999/XSL/Format">
+
+<fo:layout-master-set>
+ <fo:simple-page-master
+ margin-right="1.5cm"
+ margin-left="1.5cm"
+ margin-bottom="2cm"
+ margin-top="1cm"
+ page-width="21cm"
+ page-height="29.7cm"
+ master-name="left">
+ <fo:region-before extent="1cm"/>
+ <fo:region-body margin-top="1cm"/>
+ <fo:region-after extent="1.5cm"/>
+ </fo:simple-page-master>
+
+</fo:layout-master-set>
+
+<fo:page-sequence id="N2528" master-reference="left">
+
+<fo:static-content flow-name="xsl-region-after">
+ <fo:block text-align-last="center" font-size="10pt">
+ <fo:page-number/>
+ </fo:block>
+</fo:static-content>
+
+<fo:flow flow-name="xsl-region-body">
+<fo:block font-size="18pt" font-weight="bold">1. FOP test for images</fo:block>
+<fo:block>
+ <fo:block font-size="16pt" font-weight="bold" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em">Align in Larger Viewport</fo:block>
+ <fo:block>
+Default align:
+(<fo:external-graphic width="100pt" height="100pt" content-width="50pt" content-height="50pt" src="images/fop.jpg"/>), start
+(<fo:external-graphic width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="start" src="images/fop.jpg"/>), end
+(<fo:external-graphic width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="end" src="images/fop.jpg"/>), center
+(<fo:external-graphic width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="center" src="images/fop.jpg"/>), before
+(<fo:external-graphic width="100pt" height="100pt" content-width="50pt" content-height="50pt" display-align="before" src="images/fop.jpg"/>), after
+(<fo:external-graphic width="100pt" height="100pt" content-width="50pt" content-height="50pt" display-align="after" src="images/fop.jpg"/>), center
+(<fo:external-graphic width="100pt" height="100pt" content-width="50pt" content-height="50pt" display-align="center" src="images/fop.jpg"/>).
+ </fo:block>
+ <fo:block>
+Default align:
+(<fo:external-graphic width="100pt" height="100pt" content-width="50pt" content-height="50pt" src="images/fop.jpg"/>), start-before
+(<fo:external-graphic width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="start" display-align="before" src="images/fop.jpg"/>), start-after
+(<fo:external-graphic width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="start" display-align="after" src="images/fop.jpg"/>), start-center
+(<fo:external-graphic width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="start" display-align="center" src="images/fop.jpg"/>), center-before
+(<fo:external-graphic width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="center" display-align="before" src="images/fop.jpg"/>), center-center
+(<fo:external-graphic width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="center" display-align="center" src="images/fop.jpg"/>), center-after
+(<fo:external-graphic width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="center" display-align="after" src="images/fop.jpg"/>).
+ </fo:block>
+
+ <fo:block>
+end-before
+(<fo:external-graphic width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="end" display-align="before" src="images/fop.jpg"/>), end-center
+(<fo:external-graphic width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="end" display-align="center" src="images/fop.jpg"/>), end-after
+(<fo:external-graphic width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="end" display-align="after" src="images/fop.jpg"/>).
+ </fo:block>
+
+ <fo:block font-size="16pt" font-weight="bold" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em"/>
+ This section is only required to show that the layout still works.
+</fo:block>
+</fo:flow>
+</fo:page-sequence>
+
+</fo:root>
+
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<fo:root font-family="Times Roman" font-size="12pt" text-align="center" xmlns:fo="http://www.w3.org/1999/XSL/Format">
+
+<fo:layout-master-set>
+ <fo:simple-page-master
+ margin-right="1.5cm"
+ margin-left="1.5cm"
+ margin-bottom="2cm"
+ margin-top="1cm"
+ page-width="21cm"
+ page-height="29.7cm"
+ master-name="left">
+ <fo:region-before extent="1cm"/>
+ <fo:region-body margin-top="1cm"/>
+ <fo:region-after extent="1.5cm"/>
+ </fo:simple-page-master>
+
+</fo:layout-master-set>
+
+<fo:page-sequence id="N2528" master-reference="left">
+
+<fo:static-content flow-name="xsl-region-after">
+ <fo:block text-align-last="center" font-size="10pt">
+ <fo:page-number/>
+ </fo:block>
+</fo:static-content>
+
+<fo:flow flow-name="xsl-region-body">
+<fo:block font-size="18pt" font-weight="bold">1. FOP test for images</fo:block>
+<fo:block>
+ <fo:block font-size="16pt" font-weight="bold" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em">Align in Smaller Viewport</fo:block>
+ <fo:block>
+Default align:
+(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" src="images/fop.jpg"/>), start
+(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="start" src="images/fop.jpg"/>), center
+(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="center" src="images/fop.jpg"/>), end
+(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="end" src="images/fop.jpg"/>), before
+(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" display-align="before" src="images/fop.jpg"/>), after
+(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" display-align="after" src="images/fop.jpg"/>), center
+(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" display-align="center" src="images/fop.jpg"/>).
+ </fo:block>
+ <fo:block>
+Default align:
+(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" src="images/fop.jpg"/>), start-before
+(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="start" display-align="start" src="images/fop.jpg"/>), start-center
+(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="start" display-align="center" src="images/fop.jpg"/>), start-after
+(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="start" display-align="after" src="images/fop.jpg"/>), center-before
+(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="center" display-align="before" src="images/fop.jpg"/>), center-after
+(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="center" display-align="after" src="images/fop.jpg"/>), center-center
+(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="center" display-align="center" src="images/fop.jpg"/>).
+ </fo:block>
+
+ <fo:block>
+end-before
+(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="end" display-align="before" src="images/fop.jpg"/>), end-after
+(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="end" display-align="after" src="images/fop.jpg"/>), end-center
+(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="end" display-align="center" src="images/fop.jpg"/>).
+ </fo:block>
+
+ <fo:block font-size="16pt" font-weight="bold" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em"/>
+ This section is only required to show that the layout still works.
+</fo:block>
+</fo:flow>
+</fo:page-sequence>
+
+</fo:root>
+
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">
+
+<rect x="0" y="0" width="25" height="25" style="fill:red"/>
+<rect x="25" y="0" width="25" height="25" style="fill:black"/>
+<rect x="50" y="0" width="25" height="25" style="fill:orange"/>
+<rect x="75" y="0" width="25" height="25" style="fill:black"/>
+<rect x="0" y="25" width="25" height="25" style="fill:black"/>
+<rect x="25" y="25" width="25" height="25" style="fill:green"/>
+<rect x="50" y="25" width="25" height="25" style="fill:black"/>
+<rect x="75" y="25" width="25" height="25" style="fill:blue"/>
+<rect x="0" y="50" width="25" height="25" style="fill:yellow"/>
+<rect x="25" y="50" width="25" height="25" style="fill:black"/>
+<rect x="50" y="50" width="25" height="25" style="fill:purple"/>
+<rect x="75" y="50" width="25" height="25" style="fill:black"/>
+<rect x="0" y="75" width="25" height="25" style="fill:black"/>
+<rect x="25" y="75" width="25" height="25" style="fill:violet"/>
+<rect x="50" y="75" width="25" height="25" style="fill:black"/>
+<rect x="75" y="75" width="25" height="25" style="fill:cyan"/>
+
+</svg>
+
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE root [
+<!ENTITY svgimage SYSTEM "blocks.ent">
+]>
+
+<fo:root font-family="Times Roman" font-size="12pt" xmlns:fo="http://www.w3.org/1999/XSL/Format">
+
+<fo:layout-master-set>
+ <fo:simple-page-master
+ margin-right="1.5cm"
+ margin-left="1.5cm"
+ margin-bottom="2cm"
+ margin-top="1cm"
+ page-width="21cm"
+ page-height="29.7cm"
+ master-name="left">
+ <fo:region-before extent="1cm"/>
+ <fo:region-body margin-top="1cm"/>
+ <fo:region-after extent="1.5cm"/>
+ </fo:simple-page-master>
+
+</fo:layout-master-set>
+
+<fo:page-sequence id="N2528" master-reference="left">
+
+<fo:static-content flow-name="xsl-region-after">
+ <fo:block text-align-last="center" font-size="10pt">
+ <fo:page-number/>
+ </fo:block>
+</fo:static-content>
+
+<fo:flow flow-name="xsl-region-body">
+<fo:block font-size="18pt" font-weight="bold" text-align="center">Embedding SVG in Viewport</fo:block>
+<fo:block>
+ <fo:block font-size="16pt" font-weight="bold" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em">Align in Larger Viewport</fo:block>
+
+ <fo:block>
+Default align:
+(<fo:instream-foreign-object width="100pt" height="100pt" content-width="50pt" content-height="50pt">&svgimage;</fo:instream-foreign-object>), start
+(<fo:instream-foreign-object width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="start">&svgimage;</fo:instream-foreign-object>), center
+(<fo:instream-foreign-object width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="center">&svgimage;</fo:instream-foreign-object>), end
+(<fo:instream-foreign-object width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="end">&svgimage;</fo:instream-foreign-object>), before
+(<fo:instream-foreign-object width="100pt" height="100pt" content-width="50pt" content-height="50pt" display-align="before">&svgimage;</fo:instream-foreign-object>), center
+(<fo:instream-foreign-object width="100pt" height="100pt" content-width="50pt" content-height="50pt" display-align="center">&svgimage;</fo:instream-foreign-object>), after
+(<fo:instream-foreign-object width="100pt" height="100pt" content-width="50pt" content-height="50pt" display-align="after">&svgimage;</fo:instream-foreign-object>), start-before
+(<fo:instream-foreign-object width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="start" display-align="before">&svgimage;</fo:instream-foreign-object>), start-center
+(<fo:instream-foreign-object width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="start" display-align="center">&svgimage;</fo:instream-foreign-object>), start-after
+(<fo:instream-foreign-object width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="start" display-align="after">&svgimage;</fo:instream-foreign-object>), center-before
+(<fo:instream-foreign-object width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="center" display-align="before">&svgimage;</fo:instream-foreign-object>), center-center
+(<fo:instream-foreign-object width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="center" display-align="center">&svgimage;</fo:instream-foreign-object>), center-after
+(<fo:instream-foreign-object width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="center" display-align="after">&svgimage;</fo:instream-foreign-object>), end-before
+(<fo:instream-foreign-object width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="end" display-align="before">&svgimage;</fo:instream-foreign-object>), end-center
+(<fo:instream-foreign-object width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="end" display-align="center">&svgimage;</fo:instream-foreign-object>), end-after
+(<fo:instream-foreign-object width="100pt" height="100pt" content-width="50pt" content-height="50pt" text-align="end" display-align="after">&svgimage;</fo:instream-foreign-object>).
+ </fo:block>
+
+ <fo:block font-size="16pt" font-weight="bold" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em">Align in Smaller Viewport</fo:block>
+ <fo:block>
+Default align:
+(<fo:instream-foreign-object width="50pt" height="50pt" overflow="hidden">&svgimage;</fo:instream-foreign-object>), start
+(<fo:instream-foreign-object width="50pt" height="50pt" overflow="hidden" text-align="start">&svgimage;</fo:instream-foreign-object>), center
+(<fo:instream-foreign-object width="50pt" height="50pt" overflow="hidden" text-align="center">&svgimage;</fo:instream-foreign-object>), end
+(<fo:instream-foreign-object width="50pt" height="50pt" overflow="hidden" text-align="end">&svgimage;</fo:instream-foreign-object>), before
+(<fo:instream-foreign-object width="50pt" height="50pt" overflow="hidden" display-align="before">&svgimage;</fo:instream-foreign-object>), center
+(<fo:instream-foreign-object width="50pt" height="50pt" overflow="hidden" display-align="center">&svgimage;</fo:instream-foreign-object>), after
+(<fo:instream-foreign-object width="50pt" height="50pt" overflow="hidden" display-align="after">&svgimage;</fo:instream-foreign-object>), start-before
+(<fo:instream-foreign-object width="50pt" height="50pt" overflow="hidden" text-align="start" display-align="before">&svgimage;</fo:instream-foreign-object>), start-center
+(<fo:instream-foreign-object width="50pt" height="50pt" overflow="hidden" text-align="start" display-align="center">&svgimage;</fo:instream-foreign-object>), start-after
+(<fo:instream-foreign-object width="50pt" height="50pt" overflow="hidden" text-align="start" display-align="after">&svgimage;</fo:instream-foreign-object>), center-before
+(<fo:instream-foreign-object width="50pt" height="50pt" overflow="hidden" text-align="center" display-align="before">&svgimage;</fo:instream-foreign-object>), center-center
+(<fo:instream-foreign-object width="50pt" height="50pt" overflow="hidden" text-align="center" display-align="center">&svgimage;</fo:instream-foreign-object>), center-after
+(<fo:instream-foreign-object width="50pt" height="50pt" overflow="hidden" text-align="center" display-align="after">&svgimage;</fo:instream-foreign-object>), end-before
+(<fo:instream-foreign-object width="50pt" height="50pt" overflow="hidden" text-align="end" display-align="before">&svgimage;</fo:instream-foreign-object>), end-center
+(<fo:instream-foreign-object width="50pt" height="50pt" overflow="hidden" text-align="end" display-align="center">&svgimage;</fo:instream-foreign-object>), end-after
+(<fo:instream-foreign-object width="50pt" height="50pt" overflow="hidden" text-align="end" display-align="after">&svgimage;</fo:instream-foreign-object>).
+ </fo:block>
+
+ <fo:block font-size="16pt" font-weight="bold" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em">Scaling</fo:block>
+ <fo:block>
+Non-uniform
+(<fo:instream-foreign-object content-width="100pt" content-height="50pt" scaling="non-uniform" overflow="hidden" text-align="start">&svgimage;</fo:instream-foreign-object>), non-uniform
+(<fo:instream-foreign-object content-width="50pt" content-height="100pt" scaling="non-uniform" overflow="hidden" text-align="start">&svgimage;</fo:instream-foreign-object>), uniform
+(<fo:instream-foreign-object content-width="100pt" content-height="75pt" scaling="uniform" overflow="hidden" text-align="start">&svgimage;</fo:instream-foreign-object>), uniform
+(<fo:instream-foreign-object content-width="75pt" content-height="100pt" scaling="uniform" overflow="hidden" text-align="start">&svgimage;</fo:instream-foreign-object>).
+ </fo:block>
+
+ <fo:block font-size="16pt" font-weight="bold" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em"/>
+ This section is only required to show that the layout still works.
+</fo:block>
+</fo:flow>
+</fo:page-sequence>
+
+</fo:root>
+
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<document>
+ <header>
+ <title>Fonts</title>
+ <authors>
+ <person name="Jeremias Märki" email=""/>
+ <person name="Tore Engvig" email=""/>
+ </authors>
+ </header>
+<body>
+ <section>
+ <title>Status</title>
+ <p>FOP (building PDF files) normally supports only the base 14 font package defined in the Adobe PDF specification.
+ That includes the following fonts: Helvetica, Times, Courier, Symbol and ZapfDingbats.
+ </p>
+ <p>Font support in FOP can be extended by the addition of font metric files (written in XML) created from Adobe
+ Type 1 fonts and TrueType fonts. No other font types (Type 3, etc.) are supported at this time.
+ </p>
+ <note>
+ The font is simply embedded into the PDF file, it is not converted.
+ </note>
+ </section>
+ <section>
+ <title>Adding additional Type 1 fonts</title>
+ <p>As mentioned above you need an XML file containing font metrics to be able to use an additional font. FOP
+ contains a tool that can generate such a font metrics file from a PFM file, which normally comes with the font file.
+ </p>
+ <section>
+ <title>Generating a font metrics file</title>
+ <p> Run the class org.apache.fop.fonts.apps.PFMReader to generate the XML file.
+ </p>
+ <p>Windows:</p>
+<source>
+
+ java -cp build\fop.jar;lib\avalon-framework.jar;lib\xml-apis.jar;lib\xercesImpl.jar;lib\xalan.jar org.apache.fop.fonts.apps.PFMReader pfm-file xml-file
+
+</source>
+ <p>Unix:</p>
+<source>
+
+ java -cp build/fop.jar:lib/avalon-framework.jar:lib/xml-apis.jar:lib/xercesImpl.jar:lib/xalan.jar org.apache.fop.fonts.apps.PFMReader pfm-file xml-file
+
+</source>
+ <note>
+ The classpath in the above example has been simplified for readibity.
+ You will have to adjust the classpath to the names of the actual JAR files in the lib directory.
+ avalon-framework.jar is necessary only for versions 0.20.5 or later.
+ xml-apis.jar, xercesImpl.jar and xalan.jar are not necessary for JDK version 1.4 or later.
+ </note>
+ <note>The tool will construct some values (FontBBox, StemV and ItalicAngle) based on assumptions and
+ calculations which are only an approximation to the real values. FontBBox and Italic Angle can be found in
+ the human-readable part of the PFB file or in the AFM file. The PFMReader tool does not yet interpret PFB or AFM files, so if you want
+ to be correct, you may have to adjust the values in the XML file manually. The constructed values however
+ appear to have no visible influence.
+ </note>
+ </section>
+ <section>
+ <title>Register the fonts within FOP</title>
+ <p>
+ Edit conf/userconfig.xml and add entries for the font
+ if the fonts section,
+ ie:
+ </p>
+<source>
+<![CDATA[
+ <font metrics-file="FTL_____.xml" kerning="yes" embed-file="C:\myfonts\FTL_____.pfb">
+ <font-triplet name="FrutigerLight" style="normal" weight="normal">
+ </font>]]>
+
+</source>
+ <note>
+ Starting from FOP version 0.20.5 you can use URLs for the paths to the font files. Relative URLs are resolved
+ relative to the fontBaseDir property (or baseDir) if available.
+ </note>
+ <note>
+ Make sure you specify the PFB file in the embed-file attribute
+ and not the PFM you used to generate the XML font metrics file.
+ </note>
+ <note>
+ If you do not want the font embedded in the PDF then remove the
+ "embed-file" attribute. The PDF will then contain text using
+ the font with the font metrics and to view it properly the
+ font will need to be installed where it is being viewed.
+ </note>
+ <note>
+ Cocoon users will need to setup the config, see FOPSerializer
+ for more information.
+ </note>
+ </section>
+ </section>
+ <section>
+ <title>Adding additional TrueType</title>
+ <p>Adding TrueType fonts is almost identical to the process of
+ adding Type 1 fonts. The main difference is in the first
+ step.</p>
+
+ <section>
+ <title>Generating a font metrics file</title>
+ <p>As mentioned above you need an XML file containing font
+ metrics to be able to use an additional font. FOP contains
+ a tool that can generate such a font metrics file from
+ your TrueType font file.
+ </p>
+ <p>
+ Create metrics for the fontfile (we assume the file has
+ the name cmr10.ttf and exists in c:\myfonts\):
+ </p>
+<source>
+
+ java -cp build\fop.jar;lib\avalon-framework.jar;lib\xml-apis.jar;lib\xercesImpl.jar;lib\xalan.jar org.apache.fop.fonts.apps.TTFReader C:\myfonts\cmr10.ttf C:\myfonts\cmr10.ttf ttfcm.xml
+
+</source>
+ </section>
+ <section>
+ <title>TrueType collections</title>
+ <p>
+ TrueType collections (.ttc files) contains more than one
+ font. To create metrics for a ttc file you must specify
+ the font in the collection with the -ttcname option to
+ TTFReader.
+ </p>
+ <p>
+ To get a list of the fonts in a collection, just start the
+ TTFReader as if it were a normal TrueType file (without
+ the -ttcname option). It will then display all the font
+ names and exit with an Exception...
+ </p>
+ <p>
+ Example on generating metrics for a .ttc file:
+ </p>
+<source>
+
+ java -cp build\fop.jar;lib\avalon-framework.jar;lib\xml-apis.jar;lib\xercesImpl.jar;lib\xalan.jar org.apache.fop.fonts.apps.TTFReader -ttcname "MS Mincho" msmincho.ttc msminch.xml
+
+</source>
+ </section>
+
+ <section>
+ <title>Register the fonts within FOP</title>
+ <p>
+ Similiar to Type 1 fonts.
+ </p>
+<source>
+<![CDATA[
+ <font metrics-file="cyberbit.xml" kerning="yes" embed-file="C:\WINNT\Fonts\Cyberbit.ttf">
+ <font-triplet name="Cyberbit" style="normal" weight="normal">
+ </font>]]>
+
+</source>
+ </section>
+
+ </section>
+ <section>
+ <title>Embedding fonts</title>
+ <p>
+ Font embedding is enabled in the userconfig.xml file and controlled over the embed-file attribute.
+ If you don't specify the embed-file attribute the fonts doesn't get embedded but only referenced.
+ </p>
+ <note>
+ Remember to start fop with -c conf/userconfig.xml on the command line.
+ </note>
+ </section>
+</body>
+</document>
+
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+
+<!-- How to get Help -->
+<document>
+ <header>
+ <title>How to Get Help</title>
+ <subtitle>Solving problems</subtitle>
+ </header>
+
+ <body>
+<section>
+ <title>How to get Help</title>
+ <ol>
+ <li>
+ Have a look at the documentation pages on this site. You can find information on how to run FOP,
+ how to embed it, how to add custom fonts etc.
+ </li>
+ <li>
+ Consult the <link href="faq.html">FAQ</link> to see if your question has already been answered before.
+ </li>
+ <li>
+ If you have a question concerning XSL:FO that is not related to FOP directly, please consult the various
+ resources on the net. See <link href="resources.html">Resources</link> for some interesting links.
+ </li>
+ <li>
+ Before you post your questions to one of the mailing lists, please search the mailing list archives, since it's
+ possible that your question has already been answered but it may not have found its way into the FAQ. You'll
+ find links to the mailing list archive in the <link href="resources.html">Resources</link>.
+ </li>
+ <li>
+ If you still can't solve your problem subscribe to FOP's user mailing list and post your question there. Please
+ don't forget to supply the version you're using, detailed error messages etc. This makes it easier to help you.
+ The instructions on how to subscribe can be found in the <link href="resources.html">Resources</link>
+ </li>
+ <li>
+You should probably read ESR's
+<link href="http://www.tuxedo.org/~esr/faqs/smart-questions.html">"How to Ask Questions the Smart Way"</link>
+ </li>
+ </ol>
+ <note>
+ Please don't use Bugzilla to post questions and please ask on the user mailing list first, if you think you've
+ found a bug.
+ </note>
+</section>
+ </body>
+</document>
+
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<document>
+<header>
+<title>Implemented</title>
+</header>
+<body>
+<section>
+ <title>Features</title>
+ <section>
+ <title>What's Implemented?</title>
+ <p>The following formatting objects and properties of the XSL-FO 1.0
+ W3C Recommandation are implemented. Please have also a look at the
+ section on <jump href="limitations.html">limitations</jump>.
+ </p>
+ </section>
+ <section>
+ <title>1) Formatting Objects</title>
+ <p>This section follows the table "B Formatting Object Summary" in the xsl:fo specification. At the
+ end of each sub-section you find listed what is not implemented.</p>
+
+ <section>
+ <title>B.1 Declaration and Pagination and Layout Formatting Objects</title>
+ <ul>
+ <li>root</li>
+ <li>page-sequence</li>
+ <li>page-sequence-master</li>
+ <li>single-page-master-reference</li>
+ <li>repeatable-page-master-reference</li>
+ <li>repeatable-page-master-alternatives</li>
+ <li>conditional-page-master-reference</li>
+ <li>layout-master-set</li>
+ <li>simple-page-master</li>
+ <li>region-body</li>
+ <li>region-before</li>
+ <li>region-after</li>
+ <li>region-start</li>
+ <li>region-end</li>
+ <li>flow</li>
+ <li>static-content</li>
+ </ul>
+ <p>Not implemented: declarations, color-profile, title</p>
+ </section>
+
+ <section>
+ <title>B.2 Block Formatting Objects</title>
+ <ul>
+ <li>block</li>
+ <li>block-container (limited)</li>
+ </ul>
+ </section>
+
+ <section>
+ <title>B.3 Inline Formatting Objects</title>
+ <ul>
+ <li>character</li>
+ <li>external-graphic</li>
+ <li>inline</li>
+ <li>instream-foreign-object</li>
+ <li>leader</li>
+ <li>page-number </li>
+ <li>page-number-citation, see <jump href="limitations.html">limitations</jump></li>
+ </ul>
+ <p>Not implemented: bidi-override, initial-property-set, inline-container</p>
+ </section>
+
+ <section>
+ <title>B.4 Table Formatting Objects</title>
+ <ul>
+ <li>table</li>
+ <li>table-body</li>
+ <li>table-cell</li>
+ <li>table-column</li>
+ <li>table-footer</li>
+ <li>table-header</li>
+ <li>table-row</li>
+ </ul>
+ <p>Not implemented: table-and-caption, table-caption </p>
+ </section>
+
+ <section>
+ <title>B.5 List Formatting Objects</title>
+ <ul>
+ <li>list-block </li>
+ <li>list-item </li>
+ <li>list-item-body </li>
+ <li>list-item-label </li>
+ </ul>
+ </section>
+
+ <section>
+ <title>B.6 Link and Multi Formatting Objects</title>
+ <ul>
+ <li>basic-link (internal and external)</li>
+ </ul>
+ <p>Not implemented: multi-switch, multi-case, multi-toggle,
+ multi-properties, multi-property-set</p>
+ </section>
+
+ <section>
+ <title>B.7 Out-of-line Formatting Objects</title>
+ <ul>
+ <li>footnote</li>
+ <li>footnote-body</li>
+ </ul>
+ <p>Not implemented: float</p>
+ </section>
+
+ <section>
+ <title>B.8 Other Formatting Objects</title>
+ <ul>
+ <li>wrapper</li>
+ <li>marker, retrieve marker</li>
+ </ul>
+ </section>
+ </section>
+
+ <section>
+ <title>2) Properties</title>
+ <p>Property values can be computed. Compound properties are also understood by Fop.</p>
+ <ul>
+ <li>background-color </li>
+ <li>background-image </li>
+ <li>blank-or-not-blank</li>
+ <li>border-after-color</li>
+ <li>border-after-style</li>
+ <li>border-after-width</li>
+ <li>border-before-color</li>
+ <li>border-before-style</li>
+ <li>border-before-width</li>
+ <li>border-bottom</li>
+ <li>border-bottom-color</li>
+ <li>border-bottom-style</li>
+ <li>border-bottom-width</li>
+ <li>border-color (only one value allowed) </li>
+ <li>border-end-color</li>
+ <li>border-end-style</li>
+ <li>border-end-width</li>
+ <li>border-left</li>
+ <li>border-left-color</li>
+ <li>border-left-style</li>
+ <li>border-left-width</li>
+ <li>border-right</li>
+ <li>border-right-color</li>
+ <li>border-right-style</li>
+ <li>border-right-width</li>
+ <li>border-start-color</li>
+ <li>border-start-style</li>
+ <li>border-start-width</li>
+ <li>border-style</li>
+ <li>border-top</li>
+ <li>border-top-color</li>
+ <li>border-top-style</li>
+ <li>border-top-width</li>
+ <li>border-width</li>
+ <li>bottom</li>
+ <li>break-after </li>
+ <li>break-before </li>
+ <li>character</li>
+ <li>color </li>
+ <li>column-count</li>
+ <li>column-gap</li>
+ <li>column-width </li>
+ <li>country</li>
+ <li>end-indent </li>
+ <li>extent </li>
+ <li>external-destination</li>
+ <li>flow-name </li>
+ <li>font-family </li>
+ <li>font-size </li>
+ <li>font-style </li>
+ <li>font-weight </li>
+ <li>height</li>
+ <li>hyphenate</li>
+ <li>hyphenation-character</li>
+ <li>hyphenation-push-character-count</li>
+ <li>hyphenation-remain-character-count</li>
+ <li>id</li>
+ <li>initial-page-number</li>
+ <li>internal-destination</li>
+ <li>keep-with-next (broken)</li>
+ <li>language</li>
+ <li>leader-alignment (not value "page")</li>
+ <li>leader-length (see limitations)</li>
+ <li>leader-pattern (not value "use-content")</li>
+ <li>leader-pattern-width</li>
+ <li>left</li>
+ <li>letter-spacing</li>
+ <li>line-height </li>
+ <li>margin (only on pages and regions) </li>
+ <li>margin-bottom (only on pages and regions) </li>
+ <li>margin-left (only on pages and regions) </li>
+ <li>margin-right (only on pages and regions) </li>
+ <li>margin-top (only on pages and regions) </li>
+ <li>master-name </li>
+ <li>master-reference </li>
+ <li>maximum-repeats</li>
+ <li>number-columns-spanned</li>
+ <li>odd-or-even</li>
+ <li>padding (only one value allowed) </li>
+ <li>padding-after</li>
+ <li>padding-before</li>
+ <li>padding-bottom </li>
+ <li>padding-end</li>
+ <li>padding-left </li>
+ <li>padding-right </li>
+ <li>padding-start</li>
+ <li>padding-top </li>
+ <li>page-height </li>
+ <li>page-position</li>
+ <li>page-width </li>
+ <li>position (allowed values: "static" (default),"relative", "absolute", fixed ) </li>
+ <li>provisional-distance-between-starts </li>
+ <li>provisional-label-separation </li>
+ <li>ref-id </li>
+ <li>region-name</li>
+ <li>right</li>
+ <li>rule-style</li>
+ <li>rule-thickness </li>
+ <li>space-after.optimum </li>
+ <li>space-before.optimum </li>
+ <li>span</li>
+ <li>src </li>
+ <li>start-indent </li>
+ <li>table-omit-footer-at-break</li>
+ <li>table-omit-header-at-break</li>
+ <li>text-align </li>
+ <li>text-align-last </li>
+ <li>text-decoration</li>
+ <li>text-indent </li>
+ <li>top</li>
+ <li>white-space-collapse</li>
+ <li>width</li>
+ <li>wrap-option</li>
+ </ul>
+ <p>All other properties are not implemented.</p>
+ </section>
+
+ <section>
+ <title>3)SVG Support</title>
+<p>
+FOP uses <jump href="http://xml.apache.org/batik/">Batik</jump> directly for its SVG support. Therefore FOP supports the same
+elements and properties as are supported by Batik. As FOP is designed for
+rendering to a static medium then only static SVG is rendered.
+</p>
+<p>
+Due to some limitations in PDF some SVG images, particularly ones with effects
+or transparency, may not come out correctly. The images should still be renderedcorrectly for the AWT and Print renderers.
+</p>
+ </section>
+</section>
+</body>
+</document>
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<document>
+ <header>
+ <title>FOP</title>
+ </header>
+ <body>
+ <section>
+ <title>Introduction</title>
+ <p>FOP (Formatting Objects Processor) is the world's first print formatter driven by XSL formatting
+ objects and the world's first output independent formatter. It is a
+ Java application that reads a formatting object tree and then
+ renders the resulting pages to a specified output. <link href="output.html">Output formats</link>
+ currently supported are PDF, PCL, PS, SVG, XML (area tree representation),
+ Print, AWT, MIF and TXT.
+ The primary output target is PDF.
+ </p>
+ <note>
+ The PDF files on this site are created using current CVS.
+ </note>
+ <figure width="480" height="260" src="images/document.jpg" alt="Render Diagram" />
+ <p>The latest version of Fop is 0.20.4 and it supports the
+ <link href="http://www.w3.org/TR/2001/REC-xsl-20011015/">XSL-FO Version 1.0
+ W3C Recommendation</link>.
+ You can <link href="download.html">download</link>
+ Fop including a precompiled version, the source code and many example files to
+ get you started. Pointers to introductions into xsl:fo can be found in the
+ <link href="resources.html">resources</link> section. Please be aware, that
+ Fop is at the moment not a full implementation of the basic conformance level
+ of the xsl:fo standard. You can find a list of supported flow objects and properties
+ in the section <link href="implemented.html">Features</link> and in section
+ <link href="limitations.html">Limitations</link> in what way this support is
+ limited.
+ </p>
+ <p>FOP is part of Apache's XML project. The homepage of FOP is
+ <link href="http://xml.apache.org/fop">http://xml.apache.org/fop</link>.
+ Here you can find information about using and developing with FOP.
+ </p>
+ <p>Users can subscribe to fop-user@xml.apache.org by sending an email
+ to <link href="mailto:fop-user-subscribe@xml.apache.org">fop-user-subscribe@xml.apache.org</link>
+ this is where user specific topics are discussed.
+ </p>
+ </section>
+
+ <section>
+ <title>Formatting</title>
+ <figure width="480" height="260" src="images/layout.jpg" alt="Formatting Diagram" />
+<p>
+This image is a demonstration of a two page document. The xml data on the left
+is formatted into the two pages on the right. The document contains static areasthat appear on every page, an external graphic in this case an svg document.
+There is a footnote on the first page and a table that goes across both pages.
+</p>
+<p>
+The advantage of XSL is the ability to take an XML document and to format
+the information into a page layout. The XML document can be generated
+in any way, the most common would be to use XSLT. FOP takes the XML
+and formats the data into pages. The pages are then rendered to the
+requested output.
+</p>
+<p>
+This is a real document. The image was created by rendering the document
+to the svg renderer then putting the rendered pages into an svg document
+along with the xml.
+</p>
+ </section>
+ <section>
+ <title>FOP Objectives</title>
+ <p>The goals of the Apache XML FOP Project are to deliver an XSL FO->PDF formatter that is compliant to at least the Basic
+ conformance level described in the W3C Recommendation from 15 October 2001, and that complies with the 11 March 1999 Portable Document
+ Format Specification (Version 1.3) from Adobe Systems.
+ </p>
+
+ <p>Conformance to the XML 1.0 Recommendation, XSLT 1.0 Recommendation and the XML Namespaces Recommendation is
+ understood. Other relevant documents, such as the XPath and XLink Working Drafts, are referenced as necessary. The FOP
+ Project will attempt to use the latest version of evolving specifications.
+ </p>
+
+ <p>To reach this aim currently the layout system is being redesigned to
+better handle the formatting of all different types of formatting objects.
+ </p>
+ </section>
+ </body>
+</document>
+
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<document>
+ <header>
+ <title>Getting Involved</title>
+ <subtitle>How to Get Involved in FOP</subtitle>
+ </header>
+
+ <body>
+<section>
+ <title>Getting involved</title>
+ <p>
+There are many different levels where people can get involved. The
+development of FOP and the related plans and tasks are discussed on
+the dev mailing list. Users can help or get issues resolved by
+contributing information and examples to the developers.
+</p>
+
+ <section>
+ <title>Get familiar with the Fop related standards</title>
+ <p>
+At the moment Fop is mainly a tool to render XSL:FO files to pdf.
+Therefore if you want to contribute to Fop you should become
+familiar with these standards. You can find links under
+<link href="resources.html">Resources</link>.
+</p>
+ </section>
+ <section>
+ <title>Fop's Design</title>
+ <p>
+The design for FOP is specified under the
+<link href="design/index.html">Design</link> section.
+ </p>
+ <p>
+This is where the information on how FOP is developed and designed
+internally will be kept.
+ </p>
+ </section>
+
+ <section>
+ <title>Subscribe to the fop developers list</title>
+ <p>You can subscribe to fop-dev@xml.apache.org by sending an email
+ to <link href="mailto:fop-dev-subscribe@xml.apache.org">fop-dev-subscribe@xml.apache.org</link></p>
+ <p>Sending bug reports and feature requests to the list is a welcome and important contribution to
+ developing Fop. </p>
+ <p>Read also the <link href="http://marc.theaimsgroup.com/?l=fop-dev&r=1&w=2">archive</link>
+ of the discussion list fop-dev to get an idea of the issues being discussed. </p>
+ </section>
+ <section>
+ <title>Look at the developer's code using cvs</title>
+ <p>Between releases the newest code can be accessed via cvs. To do this you need to install a cvs
+ client on your computer, if it is not already there. An explanation how to connect to the
+ Fop source repository can be found at <link href="http://xml.apache.org/cvs.html">http://xml.apache.org/cvs.html</link>.
+ An introduction into cvs and the cvs manual can be found in the
+ <link href="http://xml.apache.org/library.html">reference library</link>.</p>
+ <p>All changes to the code repository are sent to a special mailing list. After a cvs commit the diffs are automatically sent to this list. You can subscribe
+ to fop-cvs@xml.apache.org by sending an email to <link href="mailto:fop-cvs-subscribe@xml.apache.org">
+ fop-cvs-subscribe@xml.apache.org</link>. If you want to contribute to the development of Fop you should subscribe,
+ because it is important that you follow changes being made. </p>
+ </section>
+ <section>
+ <title>Contributing code, tests and documentation</title>
+ <p>If you want to contribute code (p.e. a bugfix), a test or documentation (p.e. an additional example), please do the following: </p>
+ <p>1) Make sure your code doesn't break the existing one and that Fop still compiles.</p>
+ <p>2) Create a file which shows the differences to the existing code.</p>
+ <p>3) Send this file as an <strong>Attachment</strong> to <link href="mailto:fop-dev@xml.apache.org">fop-dev@xml.apache.org.</link></p>
+ <p>One of the committers will test your code and commit it to the code repository.</p>
+ <p>If you have a test or useful bug test you should <link href="testing.html">read this page</link>.</p>
+ <p>BTW: The Apache project knows different roles for contributors, namely 'users', 'developers', 'committers' and the 'Project
+ Management Committee' (An explanation of these roles can be found <link href="http://xml.apache.org/roles.html">here</link>).</p>
+ </section>
+
+ <section>
+ <title>Coding Conventions</title>
+ <p>As mentioned in <link href="http://xml.apache.org/source.html">Apache XML Project Guidelines</link>,
+ <strong>all Java Language source code in the repository must be written in conformance to the</strong>
+ <link href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html">Code Conventions
+ for the Java Programming Language</link> as published by Sun. Additionally we agreed on 4
+ spaces (no tabs) for indenting.</p>
+ <p>If you don't like those conventions, just use your own standards while developing and reformat the source before
+ committing with a tool like <link href="http://astyle.sourceforge.net/">astyle</link> (Artistic Style).
+ </p>
+ </section>
+
+</section>
+ </body>
+</document>
+
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<document>
+<header>
+ <title>FOP License</title>
+</header>
+<body>
+<section>
+ <title>License</title>
+ <section>
+ <title>The Apache Software License, Version 1.1</title>
+ <p> Copyright (C) 1999-2001 The Apache Software Foundation. All rights reserved.</p>
+ <p> Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:</p>
+ <p>1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ </p>
+
+ <p>2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ </p>
+
+ <p>3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+ </p>
+
+ <p>4. The names "FOP" and "Apache Software Foundation" must not be used to endorse or promote products derived from this software without prior
+ written permission. For written permission, please contact
+ apache@apache.org.
+ </p>
+
+ <p>5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+ </p>
+ <p>THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ </p>
+
+ <p>
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ James Tauber <jtauber@jtauber.com>. For more information on the Apache
+ Software Foundation, please see <link href="http://www.apache.org/">http://www.apache.org/</link>.
+ </p>
+ </section>
+</section>
+</body>
+</document>
+
--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<document>
+ <header>
+ <title>Limitations</title>
+ </header>
+
+ <body>
+<section>
+ <title>Limitations</title>
+ <p>FOP implements the fo objects and properties listed
+ in <jump href="implemented.html">features</jump>, sometimes it does so only in a limited way.
+ </p>
+
+ <section>
+ <title>fo:leader</title>
+ <p>leader-length.minimum is not used at all</p>
+ </section>
+
+ <section>
+ <title>page-number-citation</title>
+ <p>Only works for table of contents without any problems. The case where the page number doesn't
+ fit on a line isn't handled, and any text on the same line and after the page-number might not
+ appear exactly where you want it to.
+ </p>
+ </section>
+
+ <section>
+ <title>Padding</title>
+ <p>Padding works in conjunction with indents and spaces. It is only implemented
+ for blocks. At the moment padding can't be used to make extra space (indents+spaces
+ must be used), but only to control how much the background-color extends beyond
+ the content rectangle.
+ </p>
+ </section>
+ <section>
+ <title>Tables</title>
+ <p>There two limitations for tables: 1) FOP needs you to explicitly specify column widths
+ 2) Cells have to contain block-level FOs. They can't contain straight character data.
+ </p>
+ <p>A working basic example of a table looks like this: </p>
+ <source><![CDATA[
+<fo:table>
+ <fo:table-column column-width="150pt"/>
+ <fo:table-column column-width="150pt"/>
+ <fo:table-body font-size="10pt" font-family="sans-serif">
+ <fo:table-row>
+ <fo:table-cell>
+ <fo:block>text</fo:block>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block>text</fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ <fo:table-row>
+ <fo:table-cell>
+ <fo:block>text</fo:block>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block>text</fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ <fo:table-row>
+ <fo:table-cell>
+ <fo:block>text</fo:block>
+ </fo:table-cell>
+ <fo:table-cell>
+ <fo:block>text</fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+</fo:table>]]></source>
+ </section>
+</section>
+</body>
+</document>
+
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<document>
+ <header>
+ <title>News</title>
+ </header>
+ <body>
+ <section>
+ <title>9 November 2002 - New Committer</title>
+ <p>Welcome Oleg Tkachenko!</p>
+ </section>
+ <section>
+ <title>7 Jul 2002 FOP 0.20.4 released</title>
+ <p>
+ Changes since 0.20.3 include:
+ </p>
+ <ul>
+ <li>Support for background-image</li>
+ <li>
+ FOP should now work with any JAXP1.1 compliant
+ parser/transformer
+ </li>
+ <li>
+ The following JARs have been updated: Xerces to version
+ 2.0.1, Xalan to version 2.3.1 and Batik to version 1.5beta2.
+ </li>
+ <li>Fop has been compiled with Jimi support</li>
+ <li>
+ Logging has been changed from LogKit to Avalon's Logger
+ Interface
+ </li>
+ <li>New hyphenation patterns: turkish, portuguese and czech</li>
+ <li>FOP should now work on a EBCDIC machine</li>
+ <li>
+ Support for comma-separated values for the font-family
+ property
+ </li>
+ <li>Russian and Czech messages for AWTViewer</li>
+ </ul>
+ <p>For details see CHANGES file:<br/><link href=
+ "http://cvs.apache.org/viewcvs.cgi/xml-fop/CHANGES?rev=1.10.2.21"
+ >http://cvs.apache.org/viewcvs.cgi/xml-fop/CHANGES?rev=1.10.2.21</link>
+ </p>
+ <p>
+ See also the full text of the <link href=
+ "http://marc.theaimsgroup.com/?l=fop-dev&m=102607087326357&w=4"
+ >announcement</link>.
+ </p>
+ </section>
+ <section>
+ <title>13 Jun 2002 FOP 0.20.4 Release Candidate available</title>
+ <p>
+ See the full text of the <link href=
+ "http://marc.theaimsgroup.com/?l=fop-dev&m=102398470424177&w=4"
+ >announcement</link>.
+ </p>
+ </section>
+ <section>
+ <title>19 April 2002 - New Committers</title>
+ <p>Welcome Jeremias Maerki, Joerg Pietschmann and Peter B. West!</p>
+ </section>
+<section>
+ <title>11 March 2002 - Fop 0.20.3 released</title>
+ <p>This is a maintenance release, the first version which supports the XSL-FO
+ Recommendation syntax. See the
+ <link href="http://marc.theaimsgroup.com/?l=xml-apache-announce&m=101588818821794">
+ announcement</link> for more information.</p>
+ </section>
+
+ </body>
+</document>
+
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<!-- Output Formats: Renderers -->
+<document>
+ <header>
+ <title>Output</title>
+ <subtitle>Notes about Output Formats: Renderers</subtitle>
+ <authors>
+ <person name="Keiron Liddle" email="keiron@aftexsw.com"/>
+ <person name="Art Welch" email=""/>
+ </authors>
+ </header>
+
+ <body>
+<section>
+ <title>Output Formats</title>
+ <p>
+FOP supports a number of different output formats. This is achieved by
+using different renderers that create the output.
+ </p>
+ <p>
+Here we will explain some information for uses to be able to understand
+what the renderers are doing and what difference there may be between
+different renderers.
+ </p>
+<section>
+ <title>Common Information</title>
+ <p>
+Each renderer is given an area tree to render to its output format.
+The area tree is simply a representation of the pages and the placement
+of text and graphical objects on those pages.
+ </p>
+ <p>
+The renderer will be given each page as it is ready and an output stream
+to write the data out. The renderer is responsible for managing the
+output format and associated data and flow.
+ </p>
+ <p>
+Fonts and Layout - some formats (eg. PDF and AWT) rely on different
+font information. The fonts for these outputs have different sizes
+for the same point size. This means that the layout can be quite
+different for the same fo document.
+ </p>
+ <p>
+DPI - This is an important issue when creating output for printing.
+The dpi is used to convert measurements into points. For example 1in
+= 2.54cm = 72 points. It is also used when determining the size of
+images and the rendering of certain graphics in the output. Currently
+FOP uses a value of 72dpi.
+ </p>
+ <p>
+You may want to send your output directly to a printer. The Print
+renderer uses the java api to print the document or you might be
+able to send the output stream directly to a printer. If your printer
+supports postscript you could send the postscript to the printer. If
+you have a printer that supports PCL you could stream the PCL document
+to your printer.
+On Windows:
+ </p>
+<source><![CDATA[fop ... -ps \\computername\printer or fop ... -pcl \\computername\printer]]></source>
+ <p>
+On UNIX:
+ </p>
+<source><![CDATA[proc = Runtime.getRuntime().exec("lp -d" + print_queue + " -o -dp -");
+out = proc.getOutputStream();]]></source>
+ <p>
+And give the OutputStream (out) to the PCLRenderer and it happily sends the
+PCL to the AIX print queue.
+ </p>
+</section>
+<section>
+ <title>PDF</title>
+ <p>
+PDF is the best supported output format. It is also the most accurate
+with text and layout. This creates a PDF document that is streamed out
+as each page is rendered. This means that the internal page index
+information is stored near the end of the document.
+The PDF version supported is 1.3 which is currently the most popular
+version for Acrobat Reader (4.0), PDF versions are forwards/backwards
+compatible.
+ </p>
+</section>
+<section>
+ <title>PCL</title>
+ <p>
+This format is for the Hewlett-Packard PCL printers.
+It should produce output as close to identical as possible to the
+printed output of the PDFRenderer within the limitations of the
+renderer, and output device.
+ </p>
+ <p>
+The output created by the PCLRenderer is generic PCL 5 as documented
+in the "HP PCL 5 Printer Language Technical Reference Manual" (copyright 1990).
+This should allow any device fully supporting PCL 5 to be able to
+print the output generated by the PCLRenderer.
+ </p>
+ <section>
+ <title>Limitations</title>
+ <ul>
+ <li>Text or graphics outside the left or top of the printable area are not rendered properly. In general things that should print to the left of the printable area are shifted to the right so that they start at the left edge of the printable area and an error message is generated.</li>
+ <li>The Helvetica and Times fonts are not well supported among PCL printers so Helvetica is mapped to Arial and Times is mapped to Times New. This is done in the PCLRenderer, no changes are required in the FO's. The metrics and appearance for Helvetica/Arial and Times/Times New are nearly identical, so this has not been a problem so far.</li>
+ <li>Only the original fonts built into FOP are supported.</li>
+ <li>For the non-symbol fonts, the ISO 8859/1 symbol set is used (PCL set "0N").</li>
+ <li>Multibyte characters are not supported.</li>
+ <li>SVG support is limited. Currently only lines, rectangles (may be rounded), circles, ellipses, text, simple paths, and images are supported. Colors are supported (dithered black and white) but not gradients.</li>
+ <li>Images print black and white only (not dithered). When the renderer prints a color image it uses a threshold value, colors above the threshold are printed as white and below are black. If you need to print a non-monochrome image you should dither it first.</li>
+ <li>Image scaling is accomplished by modifying the effective resolution of the image data. The available resolutions are 75, 100, 150, 300, and 600 DPI.</li>
+ <li>Color printing is not supported. Colors are rendered by mapping the color intensity to one of the PCL fill shades (from white to black in 9 steps).</li>
+ <li>SVG clipping is not supported.</li>
+ </ul>
+ </section>
+
+ <section>
+ <title>Additional Features</title>
+ <p>There are some special features that are controlled by some public variables on the PCLRenderer class.</p>
+
+ <dl>
+ <dt>orientation</dt>
+ <dd>The logical page orientation is controlled by the public orientation variable. Legal values are:
+ <!--ul>
+ <li>0 Portrait</li>
+ <li>1 Landscape</li>
+ <li>2 Reverse Portrait</li>
+ <li>3 Reverse Landscape</li>
+ </ul-->
+ </dd>
+ <dt>curdiv, paperheight</dt>
+ <dd>The curdiv and paperheight variables allow multiple virtual pages to be printed on a piece of paper. This allows a standard laser printer to use perforated paper where every perforation will represent an individual page. The paperheight sets the height of a piece of paper in decipoints. This will be divided by the page.getHeight() to determine the number of equal sized divisions (pages) that will fit on the paper. The curdiv variable may be read/written to get/set the current division on the page (to set the starting division and read the ending division for multiple invocations).</dd>
+ <dt>topmargin, leftmargin</dt>
+ <dd>The topmargin and leftmargin may be used to increase the top and left margins for printing.</dd>
+ </dl>
+ </section>
+</section>
+<section>
+ <title>PostScript</title>
+ <p>
+The PostScript renderer is still in its early stages and therefore still
+missing some features. It provides good support for most text and layout.
+Images and SVG are not fully supported, yet. Currently, the PostScript
+renderer generates PostScript Level 3 with most DSC comments. Actually,
+the only Level 3 feature used is FlateDecode, everthing else is Level 2.
+ </p>
+ <section>
+ <title>Limitations</title>
+ <ul>
+ <li>Images and SVG may not be display correctly. SVG support is far from being complete. No image transparency is available.</li>
+ <li>Character spacing may be wrong.</li>
+ <li>No font embedding is supported.</li>
+ <li>Multibyte characters are not supported.</li>
+ <li>PPD support is still missing.</li>
+ <li>The renderer is not yet configurable.</li>
+ </ul>
+ </section>
+</section>
+<section>
+ <title>RTF</title>
+ <p>
+This is currently not integrated with FOP but it will soon.
+This will create an rtf (rich text format) document that will
+attempt to contain as much information from the fo document as
+possible.
+ </p>
+</section>
+<section>
+ <title>SVG</title>
+ <p>
+This format creates an SVG document that has links between the pages.
+This is primarily for slides and creating svg images of pages.
+Large documents will create SVG files that are far too large for
+and SVG viewer to handle. Since fo documents usually have text the
+SVG document will have a large number of text elements.
+The font information for the text is obtained from the jvm in the
+same way as the AWT viewer, if the svg is view where the fonts are
+different, such as another platform, then the page will appear wrong.
+ </p>
+</section>
+<section>
+ <title>XML</title>
+ <p>
+This is for testing and verification. The XML created is simply
+a representation of the internal area tree put into XML. It does
+not perform any other purpose.
+ </p>
+</section>
+<section>
+ <title>Print</title>
+ <p>
+It is possible to directly print the document from the command line.
+This is done with the same code that renders to the AWT renderer.
+ </p>
+</section>
+<section>
+ <title>AWT</title>
+ <p>
+The AWT viewer shows a window with the pages displayed inside a
+java graphic. It displays one page at a time.
+The fonts used for the formatting and viewing depend on the fonts
+available to your JRE.
+ </p>
+</section>
+<section>
+ <title>MIF</title>
+ <p>
+This format is the Maker Interchange Format which is used by
+Adobe Framemaker. This is currently not fully implemented.
+ </p>
+</section>
+<section>
+ <title>TXT</title>
+ <p>
+Text as you could imagine does not work very well. It is an output format
+that you should expect bad results. The main purpose of this is to get
+a quick and dirty view of the document and the text inside it.
+ </p>
+ <p>
+The TXTRenderer is a FOP renderer that produces plain ASCII text output
+that attempts to match the output of the PDFRenderer as closely as
+possible. This was originally developed to accommodate an archive system
+that could only accept plain text files. Of course when limited to plain
+fixed pitch text the output does not always look very good.
+ </p>
+ <p>
+The TXTRenderer works with a fixed size page buffer. The size of this
+buffer is controlled with the textCPI and textLPI public variables.
+The textCPI is the effective horizontal characters per inch to use.
+The textLPI is the vertical lines per inch to use. From these values
+and the page width and height the size of the buffer is calculated.
+The formatting objects to be rendered are then mapped to this grid.
+Graphic elements (lines, borders, etc) are assigned a lower priority
+than text, so text will overwrite any graphic element representations.
+ </p>
+</section>
+
+</section>
+ </body>
+</document>
+
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<document>
+ <header>
+ <title>Release Notes</title>
+ <subtitle>Fop 0.20.4</subtitle>
+ <authors>
+ <person name="Christian Geisert" email=""/>
+ </authors>
+ </header>
+
+ <body>
+<section>
+ <title>FOP 0.20.4</title>
+ <p>Important changes since 0.20.3:</p>
+ <ul>
+ <li>FOP should now work with any JAXP1.1 compliant parser/transformer.
+ It has been successfully tested with Xerces/Xalan, Saxon and JDK1.4
+ (which includes Crimson and Xalan).
+ </li>
+ <li>The following JARs have been updated:
+ Xerces to version 2.0.1, Xalan to version 2.3.1 and Batik to version 1.5beta2.
+ </li>
+ <li>Fop has been compiled with Jimi support this time
+ but you still have to download
+ <link href="http://java.sun.com/products/jimi/">Jimi</link>
+ and copy it to lib/ to get PNG support (no need to build FOP yourself though).
+ </li>
+ <li>Building FOP with JDK1.2 does not work. Running is ok except
+ support for additional truetype fonts in AWT Viewer.
+ </li>
+ <li>Logging has been changed from LogKit to Avalon's Logger Interface.
+ (see <link href="embedding.html">Embedding</link> for details).
+ </li>
+ <li>Building under JDK 1.4:
+ You need to add a method in
+ <code>src/org/apache/fop/svg/PDFGraphics2D.java</code>
+ (search for jdk1.4 and remove the comments)
+ </li>
+ <li>To decrease the size of the distributions, ant, xml-docs, design-docs
+ and the hyphenation sources have been removed from the binary distribution.
+ Javadocs have been removed from the source distribution (use
+ <code>build javadocs</code> to generate them).
+ </li>
+ <li>Documentaion generation is broken in the maintenance branch at the moment
+ (Stylebook needs xerces1). The docs for this release are generated from the trunk.
+ </li>
+ <li>
+ For a more detailed list of changes, see the CHANGES file in the root of the FOP distribution.
+ </li>
+ </ul>
+ </section>
+
+<section>
+ <title>FOP 0.20.3</title>
+ <p>Important Information:</p>
+ <ul>
+ <li>This version supports the
+ <link href="http://www.w3.org/TR/2001/REC-xsl-20011015/">XSL-FO Version 1.0
+ W3C Recommendation</link> syntax. So don't forget to update your
+ Stylesheets:
+ <br/>Just rename the <code>master-name</code> property to <code>master-reference</code>
+ on <code>fo:page-sequence</code>, <code>fo:single-page-master-reference</code>,
+ <code>fo:repeatable-page-master-reference</code> and
+ <code>fo:conditional-page-master-reference</code>.</li>
+ <li>JDK 1.2 (or later) is required</li>
+ <li>Jimi has been removed for licensing reasons
+ <br/>If you need PNG support you have to download
+ <link href="http://java.sun.com/products/jimi/">Jimi</link>,
+ copy it to lib/ and build FOP yourself</li>
+ <li>Building under JDK 1.4:
+ <br/>You need to add a method in
+ <code>src/org/apache/fop/svg/PDFGraphics2D.java</code>
+ (search for jdk1.4 and remove the comments)
+ </li>
+ <li>
+ For a more detailed list of changes, see the CHANGES file in the root of the FOP distribution.
+ </li>
+ </ul>
+ </section>
+
+ </body>
+</document>
+
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<!-- FOP Relevant Specifications and links -->
+<document>
+ <header>
+ <title>Resources</title>
+ <subtitle>Resources useful for developing and using FOP</subtitle>
+ </header>
+ <body>
+<section>
+ <title>FOP Relevant Specifications and Links</title>
+ <section>
+ <title>Mailing Lists (and archives)</title>
+ <p>
+For the Apache mailing lists, see
+<link href="http://xml.apache.org/mail.html">Apache XML Mailing Lists</link>
+for detailed subscription information.
+ </p>
+ <section>
+ <title>FOP User Mailing List</title>
+ <p>
+Use this forum to discuss topics of interest to FOP users.
+After reviewing the FOP documentation and searching the
+archives (see below), use this forum to ask questions about
+how to download, install, configure, and use FOP. Please do
+<em>not </em>use this forum for general XSL-FO, XSLT, or PDF questions.
+ </p>
+ <ul>
+ <li>
+To review the archives, you have several options:
+ <ul>
+ <li>
+The <link href="http://marc.theaimsgroup.com/?l=fop-user&r=1&w=2">Mailing list ARChives </link> (MARC) at the AIMS group (search).
+ </li>
+ <li>
+The <link href="http://nagoya.apache.org/eyebrowse/SummarizeList?listName=fop-user@xml.apache.org">Apache Eyebrowse</link> archive (search, list by date, author, subject, or thread).
+ </li>
+ <li>
+The <link href="http://xml.apache.org/mail/fop-user">Apache Mailing List archive</link> (gzip files).
+ </li>
+ </ul>
+ </li>
+ <li>
+To subscribe (digest only): Send email to <link href="mailto:fop-user-digest-subscribe@xml.apache.org">fop-user-digest-subscribe@xml.apache.org</link>.
+ </li>
+ <li>
+To subscribe fully: Send email to <link href="mailto:fop-user-subscribe@xml.apache.org">fop-user-subscribe@xml.apache.org</link>.
+ </li>
+ <li>
+For standard help: Send email to <link href="mailto:fop-user-help@xml.apache.org">fop-user-help@xml.apache.org</link>.
+ </li>
+ <li>
+To unsubscribe: Send email to <link href="mailto:fop-user-unsubscribe@xml.apache.org">fop-user-unsubscribe@xml.apache.org</link>.
+ </li>
+ </ul>
+ </section>
+ <section>
+ <title>FOP Developer Mailing List</title>
+ <p>
+Use this forum to discuss topics related to FOP development,
+including patch submissions, bug reports, and design issues.
+ </p>
+ <ul>
+ <li>
+To review the archives, you have several options:
+ <ul>
+ <li>The <link href="http://marc.theaimsgroup.com/?l=fop-dev&r=1&w=2">Mailing list ARChives</link> (MARC) at the AIMS group (search).
+ </li>
+ <li>
+The <link href="http://nagoya.apache.org/eyebrowse/SummarizeList?listName=fop-dev@xml.apache.org">Apache Eyebrowse</link> archive (search, list by date, author, subject, or thread).
+ </li>
+ <li>
+The <link href="http://xml.apache.org/mail/fop-dev/">Apache Mailing List archive</link>.
+ </li>
+ </ul>
+ </li>
+ <li>
+To subscribe (digest only): Send email to <link href="mailto:fop-dev-digest-subscribe@xml.apache.org">fop-dev-digest-subscribe@xml.apache.org</link>.
+ </li>
+ <li>
+To subscribe fully: Send email to <link href="mailto:fop-dev-subscribe@xml.apache.org">fop-dev-subscribe@xml.apache.org</link>.
+ </li>
+ <li>
+For standard help: Send email to <link href="mailto:fop-dev-help@xml.apache.org">fop-dev-help@xml.apache.org</link>.
+ </li>
+ <li>
+To unsubscribe: Send email to <link href="mailto:fop-dev-unsubscribe@xml.apache.org">fop-dev-unsubscribe@xml.apache.org</link>.
+ </li>
+ </ul>
+ </section>
+ <section>
+ <title>XSL:FO Mailing List (at W3C)</title>
+ <p>
+Use this forum to ask general XSL-FO questions.
+ </p>
+ <ul>
+ <li>
+To review the archive: <link href="http://lists.w3.org/Archives/Public/www-xsl-fo/">W3C XSL-FO Archives</link>.
+ </li>
+ <li>
+Subscription administration information can be found at <link href="http://www.w3.org/Mail/Request">W3C Mailing List Administrativia</link>. After reviewing the instructions there, send your subscribe or unsubscribe request to <link href="mailto:www-xsl-fo-request@w3.org">www-xsl-fo-request@w3.org</link>.
+ </li>
+ </ul>
+ </section>
+ </section>
+ <section>
+ <title>Specifications</title>
+ <ul>
+ <li>
+ <link href="http://www.w3.org/TR/2001/REC-xsl-20011015/">XSL-FO Recommendation (15 October 2001)</link>
+ </li>
+ <li>
+ <link href="http://www.renderx.com/Tests/validator/fo.dtd.html">A dtd for the XSL-FO Recommendation provided by N. Grigoriev from RenderX</link>
+ </li>
+ <li>
+ <link href="http://www.w3.org/TR/SVG/">Supported SVG Recommendation (04 September 2001)</link>
+ </li>
+ <li>
+ <link href="http://www.w3.org/TR/REC-xml">XML Recommendation</link>
+ </li>
+ <li>
+ <link href="http://www.w3.org/TR/xslt">XSLT Recommendation</link>
+ </li>
+ <li>
+ <link href="http://partners.adobe.com/asn/developer/acrosdk/docs/filefmtspecs/PDFReference.pdf">Portable Document Format (PDF) 1.4 Reference Manual </link>
+ </li>
+ <li>
+ <link href="http://sax.sourceforge.net/">Simple API for XML (SAX)</link>
+ </li>
+ <li>
+ <link href="http://www.w3.org/TR/REC-DOM-Level-1">Document Object Model (DOM)</link>
+ </li>
+ <li>
+ <link href="http://www.w3.org/TR/REC-xml-names/">Namespaces in XML Recommendation</link>
+ </li>
+ <li>
+ <link href="http://java.sun.com/j2se/1.3/docs/api/index.html">Java JDK 1.3 Documentation</link>
+ </li>
+ </ul>
+ </section>
+ <section>
+ <title>Tutorials/Articles</title>
+ <ul>
+ <li>
+ <link href="http://www.ibiblio.org/xml/books/bible2/chapters/ch18.html">Elliotte Rusty Harold: Chapter 18 on xsl:fo from his excellent book XML Bible, Second Edition</link>
+ </li>
+ <li>
+ <link href="http://www.sun.com/software/xml/developers/slides-dtd/">Paul Sandoz: Using formatting objects with the slides dtd</link>
+ </li>
+ <li>
+ <link href="http://www.xml.com/pub/a/2001/01/17/xsl-fo/index.html">J. David Eisenberg: Using XSL Formatting Objects</link>
+ </li>
+ <li>
+ <link href="http://zvon.org/xxl/xslfoReference/Output/index.html">Miloslav Nic: XSL FO reference</link>
+ </li>
+ <li>
+ <link href="http://www.dpawson.co.uk/xsl/sect3/bk/index.html">Dave Pawson: An introduction to XSL Formatting Objects</link>
+ </li>
+ </ul>
+ </section>
+ <section>
+ <title>Related/Useful Products</title>
+ <ul>
+ <li>
+PJ is an open source product that can be used to modify PDF documents:
+<link href="http://www.etymon.com/pj/index.html">http://www.etymon.com/pj/index.html</link>
+ </li>
+ <li>
+iText is a library that can edit PDF files, it is possible to do
+post processing of the generated PDF files: <link href="http://www.lowagie.com/iText/">http://www.lowagie.com/iText/</link>.
+ </li>
+ </ul>
+ </section>
+</section>
+ </body>
+</document>
+
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<document>
+ <header>
+ <title>Running FOP</title>
+ </header>
+
+ <body>
+<section>
+ <title>Running FOP</title>
+ <section>
+ <title>Prerequisites</title>
+ <p>Following software must be installed:</p>
+ <p>a) Java 1.2.x or later</p>
+ <p>b) All libraries you need are part of the Fop distribution and
+ can be found in the xml-fop/lib directory. Look at the batch/shell script fop.bat/fop.sh
+ to see, how Fop can be invoked easily. These libraries are included:
+ </p>
+ <ul>
+ <li>An XML parser which supports SAX and DOM like
+ <jump href="http://xml.apache.org/xerces-j/index.html">Xerces-J</jump>.
+ (Xerces is the default xml parser)
+ </li>
+ <li>An XSLT processor (Xalan is included)
+ </li>
+ <li>The SVG library batik.jar is the library from the <jump href="http://xml.apache.org/batik/">batik project</jump> at xml.apache.org.
+ </li>
+ </ul>
+ </section>
+
+ <section>
+ <title>Starting FOP as an standalone application</title>
+ <p><code>Fop [options] [-fo|-xml] infile [-xsl file] [-awt|-pdf|-mif|-pcl|-txt|-svg|-at|-print] <outfile></code></p>
+ <p>[OPTIONS]</p>
+ <source>
+ -d debug mode<br/>
+ -x dump configuration settings<br/>
+ -q quiet mode<br/>
+ -c cfg.xml use additional configuration file cfg.xml<br/>
+ -l lang the language to use for user information<br/></source>
+ <p>[INPUT]</p>
+ <source>
+ infile xsl:fo input file (the same as the next)<br/>
+ -fo infile xsl:fo input file<br/>
+ -xml infile xml input file, must be used together with -xsl<br/>
+ -xsl stylesheet xslt stylesheet<br/></source>
+
+ <p>[OUTPUT]</p>
+ <source>
+ outfile input will be rendered as pdf file into outfile<br/>
+ -pdf outfile input will be rendered as pdf file (outfile req'd)<br/>
+ -awt input will be displayed on screen<br/>
+ -mif outfile input will be rendered as mif file (outfile req'd)<br/>
+ -pcl outfile input will be rendered as pcl file (outfile req'd)<br/>
+ -txt outfile input will be rendered as text file (outfile req'd)<br/> -svg outfile input will be rendered as an svg slides file (outfile req'd)
+ -at outfile representation of area tree as XML (outfile req'd)
+ -print input file will be rendered and sent to the printer<br/> see options with "-print help"<br/></source>
+
+ <p>[Examples]</p>
+ <source>
+ Fop foo.fo foo.pdf<br/>
+ Fop -fo foo.fo -pdf foo.pdf (does the same as the previous line)<br/>
+ Fop -xsl foo.xsl -xml foo.xml -pdf foo.pdf<br/>
+ Fop foo.fo -mif foo.mif<br/>
+ Fop foo.fo -print or Fop -print foo.fo<br/>
+ Fop foo.fo -awt<br/></source>
+ </section>
+
+ <section>
+ <title>Problems</title>
+ <p>If you have problems running FOP, please have a look at the <jump href="gethelp.html">"How to get Help" page</jump>.</p>
+ </section>
+</section>
+</body>
+</document>
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<!-- Status -->
+
+<document>
+ <header>
+ <title>FOP Status</title>
+ <subtitle>Current Status of FOP</subtitle>
+ </header>
+
+ <body>
+ <section>
+ <title>Status</title>
+<p>[last updated 20th November 2002]</p>
+ <figure width="585" height="175" src="images/track.png" alt="Planning and branches of FOP development" />
+<p>
+This is the development status of FOP. A branch has been created for
+maintenance releases while the development is done to address various
+performance and design issues.
+</p>
+ </section>
+
+ <section>
+ <title>Development Status</title>
+<p>
+Development for 1.0DR1 is addressing the design issues for layout and
+performance. The new design focusing on making it possible to be conformant
+to the spec and be able to handle large documents. The development effort
+is roughly 50% towards a developers release.
+</p>
+<p>
+The developers release should have the following: similar functionality
+to previous FOP releases, a rough API and a suitable design for
+developers to work on more functionality.
+</p>
+<p>
+The timing of these events depends on progress made so it is not possible
+to predict any dates.
+</p>
+<p><strong>Binaries</strong></p>
+ <table>
+ <tr><td>fop.jar</td><td>1,962 kb</td></tr>
+ <tr><td>hyphention (in fop.jar)</td><td>717 kb</td></tr>
+ <tr><td>batik.jar</td><td>2,164 kb</td></tr>
+ <tr><td>bsf.jar</td><td>106 kb</td></tr>
+ <tr><td>xalan.jar</td><td>883 kb</td></tr>
+ <tr><td>xerces.jar</td><td>1,809 kb</td></tr>
+ </table>
+
+<p><strong>Lines of code</strong> using "find . -iname "*.java" | xargs cat | wc -l"</p>
+ <table>
+ <tr><td>org.apache.fop.*</td><td>67479</td></tr>
+ <tr><td>org.apache.fop.fo.*</td><td>13186 (20%)</td></tr>
+ <tr><td>org.apache.fop.layoutmgr.*</td><td>7913 (12%)</td></tr>
+ <tr><td>org.apache.fop.area.*</td><td>3722 (5.5%)</td></tr>
+ <tr><td>org.apache.fop.render.*</td><td>8210 (12%)</td></tr>
+ <tr><td>org.apache.fop.pdf.*</td><td>9481 (14%)</td></tr>
+ </table>
+
+<p><strong>Files</strong> using "find . -iname "*.java" | wc -l"</p>
+ <table>
+ <tr><td>org.apache.fop.*</td><td>442</td></tr>
+ <tr><td>org.apache.fop.fo.*</td><td>125 (28%)</td></tr>
+ <tr><td>org.apache.fop.layoutmgr.*</td><td>35 (8%)</td></tr>
+ <tr><td>org.apache.fop.area.*</td><td>37 (8%)</td></tr>
+ <tr><td>org.apache.fop.render.*</td><td>39 (9%)</td></tr>
+ </table>
+
+ </section>
+
+ <section>
+ <title>Maintenance Status</title>
+<p>
+Latest maintenance release was FOP 0.20.5 on 24th November 2002.
+See <link href="relnotes.html">release notes</link> for more
+details. Releases will be made periodically to address minor bugs
+and compatibility.
+</p>
+
+<p><strong>Binaries</strong></p>
+ <table>
+ <tr><td>fop.jar</td><td>1,992 kb</td></tr>
+ <tr><td>hyphention (in fop.jar)</td><td>746 kb</td></tr>
+ <tr><td>batik.jar</td><td>2,119 kb</td></tr>
+ <tr><td>bsf.jar</td><td>106 kb</td></tr>
+ <tr><td>xalan.jar</td><td>1,007 kb</td></tr>
+ <tr><td>xercesImpl.jar</td><td>813 kb</td></tr>
+ <tr><td>xml-apis.jar</td><td>112 kb</td></tr>
+ </table>
+
+<p><strong>Lines of code</strong> using "find . -iname "*.java" | xargs cat | wc -l"</p>
+ <table>
+ <tr><td>org.apache.fop.*</td><td>69610</td></tr>
+ <tr><td>org.apache.fop.fo.*</td><td>14660 (21%)</td></tr>
+ <tr><td>org.apache.fop.layout.*</td><td>7154 (10%)</td></tr>
+ <tr><td>org.apache.fop.render.*</td><td>16260 (23%)</td></tr>
+ <tr><td>org.apache.fop.pdf.*</td><td>7938 (11%)</td></tr>
+ </table>
+
+<p><strong>Files</strong> using "find . -iname "*.java" | wc -l"</p>
+ <table>
+ <tr><td>org.apache.fop.*</td><td>394</td></tr>
+ <tr><td>org.apache.fop.fo.*</td><td>122 (31%)</td></tr>
+ <tr><td>org.apache.fop.layout.*</td><td>49 (12%)</td></tr>
+ <tr><td>org.apache.fop.render.*</td><td>48 (12%)</td></tr>
+ <tr><td>org.apache.fop.pdf.*</td><td>50 (13%)</td></tr>
+ </table>
+
+ </section>
+ </body>
+</document>
+
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<!-- SVG in FOP -->
+
+<document>
+ <header>
+ <title>SVG</title>
+ <subtitle>Embedding SVG in FOP</subtitle>
+ </header>
+
+ <body>
+
+<section>
+ <title>SVG in FOP</title>
+ <section>
+ <title>Introduction</title>
+ <p>
+FOP uses the SVG library from <link href="http://xml.apache.org/batik/">Batik</link> to handle SVG.
+This format can be handled as an <code>fo:instream-foreign-object</code> or in a separate
+file referenced with <code>fo:external-graphic</code>. Either way the SVG document will be
+read in and converted into a DOM in Batik. This DOM will then be used by the renderer to
+create the graphical image.
+ </p>
+ <p>
+The AWT and Print renderers simply use batik to draw the SVG into a graphic.
+ </p>
+ <p>
+In the case of the PDF renderer there is a PDFGraphics2D class that Batik uses
+to render the image into. This class converts the drawing instructions into
+PDF markup which is placed into the current PDF document.
+ </p>
+ </section>
+
+ <section>
+ <title>Converting SVG to a PDF Document</title>
+ <p>
+It is possible to convert a standalone SVG document directly into a simple page PDF document.
+This is possible through the use of Batik's transcoder mechanism.<br/>
+<code>java org.apache.batik.apps.rasterizer.Main -m application/pdf document.svg</code>
+<br/>
+This will output the svg document as "document.pdf" containing a PDF rendering of
+the SVG file.
+ </p>
+ <p>
+It is also possible to specify the width and/or height of the PDF document on the command line with -w and -h or if you are using the transcoder api you can use the transcoding hints.
+ </p>
+ <p>
+Currently the SVG image is drawn at the SVG document size and simply scaled in PDF to the new size. So the result may not be the best possible. For example if you have any images or effects it will draw them at the original resolution of the svg document. When this is viewed in the pdf it will have an incorrect resolution for the size of the pdf.
+</p>
+ <p>
+The size of the pdf file will also remain the same regardless of what size the page is.
+ </p>
+ <p>
+For more information see <link href="http://xml.apache.org/batik/">Batik</link> for
+how transcoders work.
+ </p>
+ </section>
+
+ <section>
+ <title>Important Notes</title>
+ <p>
+The svg is inserted into PDF by using PDF commands to draw and fill
+lines and curves. This means that the graphical objects created with
+this remain as vector graphics.
+ </p>
+ <p>
+There are a number of SVG things that cannot be converted directly into
+PDF. Parts of the graphic such as effects, patterns and images are inserted
+into the PDF as a raster graphic. The resolution of this graphic may not
+be ideal depending on the FOP dpi (72dpi) and the scaling for that graphic.
+This needs to be improved.
+ </p>
+ <p>
+Another important note is that text is converted and drawn as a
+set of shapes by batik. This means that a typical character will
+have about 10 curves (each curve consists of at least 20 characters).
+This can make the pdf files large and when the pdf is viewed the
+viewer does not normally draw those fine curves very well (turning on
+Smooth Line Art in the Acrobat preferences will fix this).
+If the text is inserted into the PDF using the inbuilt text commands
+for PDF it will use a single character.
+ </p>
+ <p>
+It is possible to make sure that all text is drawn into PDF using the
+PDF text commands by adding the following to the user config:
+ </p>
+<source><![CDATA[<entry>
+ <key>strokeSVGText</key>
+ <value>false</value>
+</entry>]]></source>
+ <p>
+The drawback from this is that all text will be confined to text that is
+possible for PDF fonts (including embedded fonts) and implemented with
+this workaround. The fonts available are the standard pdf fonts and any
+fonts that you have embedded using FOP. The font sizes will be rounded
+to an integer value. In future this will be improved.
+ </p>
+ <p>
+Currently transparency is not supported in PDF so many svg images that
+contain effects or graphics with transparent areas will not be displayed
+correctly.
+ </p>
+ </section>
+
+ <section>
+ <title>Classes</title>
+ <p>
+These are the relevant classes, found in the package org.apache.fop.svg :
+ </p>
+<ul>
+<li><em>PDFGraphics2D</em>
+<br/>
+used for drawing onto a Graphics2D into an existing pdf document, used
+internally to draw the svg.
+</li>
+<li><em>PDFDocumentGraphics2D</em>
+<br/>
+used to create a pdf document and inherits from PDFGraphics2D to do the
+rest of the drawing. Used by the transcoder to create a standalone pdf
+document from an svg. Can be used independantly the same as any Graphics2D.
+</li>
+<li><em>PDFTranscoder</em>
+<br/>
+used by Batik to transcode an svg document into a standalone pdf, via
+PDFDocumentGraphics2D.
+</li>
+</ul>
+
+ </section>
+
+</section>
+ </body>
+</document>
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE tabs PUBLIC "-//APACHE//DTD Cocoon Documentation Tab V1.0//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/tab-cocoon-v10.dtd">
+
+ <tabs software="MyProj"
+ title="MyProj"
+ copyright="Foo"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+
+ <tab label="Home" dir=""/>
+ <tab label="Redesign" dir="dev/"/>
+
+ </tabs>
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<document>
+ <header>
+ <title>SVG</title>
+ <subtitle>Embedding SVG in FOP</subtitle>
+ </header>
+
+ <body>
+<section>
+ <title>Testing FOP</title>
+ <section>
+ <title>Running and Using Tests</title>
+ <p>
+Testing is an important part of getting FOP to operate correctly and conform to the
+necessary standards.
+ </p>
+ <p>
+A testing system has been set up that works with as a build target when developing
+with FOP. A developer can run the tests after making changes to the code, the aim
+is to have the tests run to verfiy that nothing working has been broken.
+ </p>
+ <p>
+To setup the testing the developer must place a reference fop.jar in the
+"<cvs_repository>/test/reference/" directory. This jar will be dynamically
+loaded to create the reference output.
+ </p>
+ </section>
+
+ <section>
+ <title>W3C TestSuite</title>
+ <p>
+The testing is set up so that you can download the testsuite from
+<jump href="http://www.w3.org/Style/XSL/TestSuite/">http://www.w3.org/Style/XSL/TestSuite/</jump>,
+unzip the file into the base directory of FOP.
+Then you can uncomment the lines in the build.xml file in the test target and itwill run through all the tests in the testsuite distribution.
+ </p>
+ </section>
+
+ <section>
+ <title>Writing a Test</title>
+ <p>
+A test belongs to one of a few catagories. A basic test should excercise one
+element in a number of situations such as changing a property. This should have
+at least one normal value, one border value and one invalid value. If the property
+can be of different types then this should also be included.
+ </p>
+ <p>
+A bug test is a test that is specifically aimed at a problem with FOP. That is, the test
+is not excercising the specification but rather a problem with FOP in handling a particular
+situation that is not exposed with the other testing.
+ </p>
+ <p>
+A system test is one that tests the abitlity of FOP to handle a number of different
+elements together.
+ </p>
+ <p>
+A test can consist of a complete fo document or a part of the document such as
+some elements that will be placed into the flow of a standard document.
+ </p>
+
+ </section>
+ <section>
+ <title>Submitting a Test</title>
+ <p>
+If you have a test which you think would be useful you should supply the
+test and a diff to the appropriate test suite xml file. Make sure that the
+test works as would be expected against the current build.
+ </p>
+ </section>
+
+ <section>
+ <title>How Testing Works</title>
+ <p>
+The tests are stored in the "<cvs_repository>/test" directory.
+ </p>
+ <p>
+You can run the tests by specifying the build target "test" ie: <br/>
+<code>build.sh test</code>
+ </p>
+ <p>
+This will then compare the current code in the local src directory to a specified
+release of FOP. Any differences between the current code and the output from
+the reference version will be reported. If the test previously passed then the
+test run will have failed.
+ </p>
+ <p>
+The testing is done by reading a test suite xml file, which corresponds to the
+standard testsuite.dtd supplied from w3c. This xml file contains a test xml
+file and an xsl file (which may simply copy the file). It also contains information
+such as if the test has passed and any comments.
+ </p>
+ <p>
+For FOP the testing is done by rendering all the testing documents using the
+XML renderer. The XML files are then compared to see if there are any differences.
+ </p>
+ </section>
+
+ <section>
+ <title>SVG Testing</title>
+ <p>
+The testing of SVG is not part of this testing system. SVG is tested for its rendering
+accuracy by using the transcoding mechanism via Batik. So that the only part that needs
+testing is how the SVG image is embedded inside the flow of the fo document.
+ </p>
+ </section>
+</section>
+</body>
+</document>
+
--- /dev/null
+-- OASIS TR 9401 Catalog for Forrest --
+
+OVERRIDE YES
+
+-- custom doctype --
+PUBLIC "-//APACHE//DTD Compliance V1.0//EN" "dtd/compliance-v10.dtd"
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<!ELEMENT compliance (head, body)>
+<!ELEMENT head (title)>
+<!ELEMENT title (#PCDATA)>
+<!ELEMENT body (standard)>
+<!ELEMENT standard (explanatory?, level-1+)>
+<!ATTLIST standard
+ name CDATA #REQUIRED
+ baseURL CDATA #IMPLIED
+ citation CDATA #IMPLIED
+ compliance-level-1-desc CDATA #REQUIRED
+ compliance-level-2-desc CDATA #REQUIRED
+ compliance-level-3-desc CDATA #REQUIRED
+>
+<!ELEMENT level-1 (explanatory?, level-2+)>
+<!ATTLIST level-1
+ name CDATA #REQUIRED
+ extURL CDATA #IMPLIED
+ citation CDATA #IMPLIED
+ compliance-item-desc CDATA #REQUIRED
+>
+<!ELEMENT explanatory (p*)>
+<!ELEMENT level-2 (level-3+)>
+<!ATTLIST level-2
+ name CDATA #REQUIRED
+ extURL CDATA #IMPLIED
+ citation CDATA #IMPLIED
+>
+<!ELEMENT level-3 (comment*)>
+<!ATTLIST level-3
+ name CDATA #REQUIRED
+ extURL CDATA #IMPLIED
+ citation CDATA #IMPLIED
+ compliance-level (1 | 2 | 3) #REQUIRED
+ comply (yes | no | na | partial) #REQUIRED
+>
+<!ELEMENT comment (#PCDATA)>
+<!ELEMENT p (#PCDATA)>
+<!-- Last Line of $RCSfile$ -->
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- $Id$ -->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:preserve-space elements="*"/>
+
+<xsl:template match="/compliance">
+ <document>
+ <xsl:apply-templates select="head"/>
+ <xsl:apply-templates select="body"/>
+ </document>
+</xsl:template>
+
+<xsl:template match="head">
+ <header>
+ <title>
+ <xsl:value-of select="/compliance/head/title"/>
+ </title>
+ </header>
+</xsl:template>
+
+<xsl:template match="body">
+ <body>
+ <xsl:apply-templates select="standard"/>
+ </body>
+</xsl:template>
+
+<xsl:template match="standard">
+ <section>
+ <title><xsl:value-of select="@name"/></title>
+ <xsl:apply-templates select="explanatory"/>
+ <xsl:apply-templates select="level-1"/>
+ </section>
+</xsl:template>
+
+<xsl:template match="level-1">
+ <title><xsl:value-of select="@name"/></title>
+ <xsl:apply-templates select="explanatory"/>
+ <table>
+ <tr>
+ <th rowspan="2">
+ <p><xsl:value-of select="@compliance-item-desc"/></p>
+ </th>
+ <th colspan="3">
+ Support
+ </th>
+ <th rowspan="2">
+ Comments
+ </th>
+ </tr>
+ <tr>
+ <th>
+ <xsl:value-of select="/compliance/body/standard/@compliance-level-1-desc"/>
+ </th>
+ <th>
+ <xsl:value-of select="/compliance/body/standard/@compliance-level-2-desc"/>
+ </th>
+ <th>
+ <xsl:value-of select="/compliance/body/standard/@compliance-level-3-desc"/>
+ </th>
+ </tr>
+ <xsl:apply-templates select="level-2"/>
+ </table>
+</xsl:template>
+
+<xsl:template match="explanatory">
+ <xsl:for-each select="p">
+ <p>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="level-2">
+ <tr>
+ <td colspan="5" class="category">
+ <xsl:value-of select="@name"/>
+ </td>
+ </tr>
+ <xsl:apply-templates select="level-3"/>
+</xsl:template>
+
+<xsl:template match="level-3">
+ <tr>
+ <td>
+ <xsl:value-of select="@name"/>
+ </td>
+ <td>
+ <xsl:attribute name="class">
+ <xsl:choose>
+ <xsl:when test="@comply='yes'">
+ <xsl:text>yes</xsl:text>
+ </xsl:when>
+ <xsl:when test="@comply='no'">
+ <xsl:choose>
+ <xsl:when test="@compliance-level > 1">
+ <xsl:text>yes</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>no</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="@comply='partial'">
+ <xsl:choose>
+ <xsl:when test="@compliance-level > 1">
+ <xsl:text>yes</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>partial</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text></xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="@compliance-level=1">
+ <xsl:value-of select="@comply"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>.</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td>
+ <xsl:attribute name="class">
+ <xsl:choose>
+ <xsl:when test="@comply='yes'">
+ <xsl:text>yes</xsl:text>
+ </xsl:when>
+ <xsl:when test="@comply='no'">
+ <xsl:choose>
+ <xsl:when test="@compliance-level > 2">
+ <xsl:text>yes</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>no</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="@comply='partial'">
+ <xsl:choose>
+ <xsl:when test="@compliance-level > 2">
+ <xsl:text>yes</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>partial</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text></xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="@compliance-level=2">
+ <xsl:value-of select="@comply"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>.</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td>
+ <xsl:attribute name="class">
+ <xsl:choose>
+ <xsl:when test="@comply='yes'">
+ <xsl:text>yes</xsl:text>
+ </xsl:when>
+ <xsl:when test="@comply='no'">
+ <xsl:choose>
+ <xsl:when test="@compliance-level > 3">
+ <xsl:text>yes</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>no</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="@comply='partial'">
+ <xsl:choose>
+ <xsl:when test="@compliance-level > 3">
+ <xsl:text>yes</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>partial</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text></xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="@compliance-level=3">
+ <xsl:value-of select="@comply"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>.</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <xsl:choose>
+ <xsl:when test="count(comment) > 0">
+ <td align="left">
+ <ul>
+ <xsl:for-each select="comment">
+ <li>
+ <xsl:value-of select="."/>
+ </li>
+ </xsl:for-each>
+ </ul>
+ </td>
+ </xsl:when>
+ <xsl:otherwise>
+ <td align="center">
+ <xsl:text>.</xsl:text>
+ </td>
+ </xsl:otherwise>
+ </xsl:choose>
+ </tr>
+</xsl:template>
+
+</xsl:stylesheet>
+
--- /dev/null
+<?xml version="1.0"?>
+
+<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+
+<!-- =========================== Components ================================ -->
+
+ <map:components>
+
+ <map:generators default="file">
+ <map:generator name="file" src="org.apache.cocoon.generation.FileGenerator" label="content"/>
+ <map:generator name="directory" src="org.apache.cocoon.generation.DirectoryGenerator" label="content"/>
+ <map:generator name="html" src="org.apache.cocoon.generation.HTMLGenerator" label="content"/>
+ <map:generator name="libre" src="org.apache.forrest.yer.use.cocoon.HierarchyGenerator" label="content"/>
+ <map:generator name="nekodtd" src="org.apache.forrest.components.generator.XNIConfigurableFileGenerator" label="content"/>
+ <!-- FIXME: Change this once better view handling is implemented -->
+ <map:generator name="file-nolabel" src="org.apache.cocoon.generation.FileGenerator"/>
+ </map:generators>
+
+ <map:transformers default="xslt">
+ <!--
+ <map:transformer name="xslt" src="org.apache.cocoon.transformation.TraxTransformer">
+ <use-request-parameters>false</use-request-parameters>
+ <use-browser-capabilities-db>false</use-browser-capabilities-db>
+ </map:transformer>
+ -->
+ <map:transformer name="xslt" src="org.apache.cocoon.transformation.TraxTransformer"
+ logger="sitemap.transformer.xsltc"
+ pool-max="32" pool-min="8" pool-grow="2">
+ <use-request-parameters>false</use-request-parameters>
+ <use-browser-capabilities-db>false</use-browser-capabilities-db>
+ <use-deli>false</use-deli>
+ <!-- transformer-factory>com.icl.saxon.TransformerFactoryImpl</transformer-factory -->
+ <!-- transformer-factory>org.apache.xalan.xsltc.trax.TransformerFactoryImpl</transformer-factory -->
+ </map:transformer>
+ </map:transformers>
+
+ <map:readers default="resource">
+ <map:reader name="resource" src="org.apache.cocoon.reading.ResourceReader"/>
+ </map:readers>
+
+ <map:serializers default="html">
+ <map:serializer name="html" mime-type="text/html" src="org.apache.cocoon.serialization.HTMLSerializer">
+ <doctype-public>-//W3C//DTD HTML 4.01 Transitional//EN</doctype-public>
+ <encoding>ISO-8859-1</encoding>
+ </map:serializer>
+
+ <map:serializer name="xml" mime-type="text/xml" src="org.apache.cocoon.serialization.XMLSerializer">
+ <encoding>ISO-8859-1</encoding>
+ </map:serializer>
+
+ <map:serializer name="fo2pdf"
+ src="org.apache.cocoon.serialization.FOPSerializer"
+ mime-type="application/pdf"/>
+
+
+ <map:serializer name="links" src="org.apache.cocoon.serialization.LinkSerializer">
+ <encoding>ISO-8859-1</encoding>
+ </map:serializer>
+ <map:serializer name="svg2jpeg" mime-type="image/jpeg" src="org.apache.cocoon.serialization.SVGSerializer">
+ <parameter name="quality" type="float" value="1.0"/>
+ </map:serializer>
+ <map:serializer name="svg2png" mime-type="image/png" src="org.apache.cocoon.serialization.SVGSerializer"/>
+
+<!-- ========================== FOP Additions ========================== -->
+
+ <map:serializer name="svg2pdf" mime-type="application/pdf" src="org.apache.cocoon.serialization.SVGSerializer">
+ <parameter name="transcoder"
+ value="org.apache.fop.svg.PDFTranscoder"/>
+ </map:serializer>
+<!-- ======================= End FOP Additions ======================== -->
+
+ </map:serializers>
+
+ <map:matchers default="wildcard">
+ <map:matcher name="wildcard" src="org.apache.cocoon.matching.WildcardURIMatcher"/>
+ </map:matchers>
+<!--
+ <map:selectors default="skin-parameter">
+ <map:selector name="request-parameter" logger="sitemap.selector.request-parameter"
+ src="org.apache.cocoon.selection.RequestParameterSelector">
+ <parameter-name>skin</parameter-name>
+ </map:selector>
+ <map:selector name="style-parameter" logger="sitemap.selector.request-parameter"
+ src="org.apache.cocoon.selection.RequestParameterSelector">
+ <parameter-name>style</parameter-name>
+ </map:selector>
+
+ </map:selectors>
+-->
+ <map:actions>
+ <!-- <map:action logger="sitemap.action.request" name="request" src="org.apache.cocoon.acting.RequestParamAction"/> -->
+ <map:action logger="sitemap.action.resource-exists" name="resource-exists" src="org.apache.cocoon.acting.ResourceExistsAction"/>
+ </map:actions>
+
+ <!--
+ The different pipeline implementations
+ -->
+ <map:pipelines default="caching">
+ <map:pipeline name="caching" src="org.apache.cocoon.components.pipeline.impl.CachingProcessingPipeline"/>
+ <map:pipeline name="noncaching" src="org.apache.cocoon.components.pipeline.impl.NonCachingProcessingPipeline"/>
+ <!-- The following two can be used for profiling:
+ <map:pipeline name="profile-caching" src="org.apache.cocoon.components.profiler.ProfilingCachingProcessingPipeline"/>
+ <map:pipeline name="profile-noncaching" src="org.apache.cocoon.components.profiler.ProfilingNonCachingProcessingPipeline"/>
+ -->
+ </map:pipelines>
+
+ </map:components>
+
+<!-- =========================== Views =================================== -->
+
+ <map:views>
+ <map:view name="content" from-label="content">
+ <map:serialize type="xml"/>
+ </map:view>
+
+ <map:view name="links" from-position="last">
+ <map:transform src="library/xslt/filterlinks.xsl"/>
+ <map:serialize type="links"/>
+ </map:view>
+ </map:views>
+
+ <map:resources>
+ <map:resource name="skinit">
+ <map:transform src="skins/{defaults:skin}/xslt/html/{type}.xsl">
+ <map:parameter name="isfaq" value="{isfaq}"/>
+ <map:parameter name="nopdf" value="{nopdf}"/>
+ <map:parameter name="path" value="{path}"/>
+ <!-- Can set an alternative project skinconfig here
+ <map:parameter name="config-file" value="../../../../skinconf.xml"/>
+ -->
+ </map:transform>
+ <map:serialize/>
+ </map:resource>
+
+ <map:resource name="book">
+ <map:generate src="content/xdocs/{../1}book.xml"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="book2menu"/>
+ <map:parameter name="path" value="{path}"/>
+ </map:call>
+ </map:resource>
+
+ <map:resource name="skin-read">
+ <map:read src="skins/{defaults:skin}/{path}" mime-type="{mime-type}"/>
+ </map:resource>
+
+ </map:resources>
+
+<!-- =========================== Pipelines ================================= -->
+
+ <map:pipelines>
+
+ <!-- Pipeline that manages the internal URI space
+ For the external URI space manager, see the next pipeline. -->
+ <map:pipeline internal-only="true">
+
+ <map:match pattern="**tab-**.xml">
+ <map:generate src="content/xdocs/tabs.xml"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="tab2menu"/>
+ <map:parameter name="path" value="{2}.html"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="**book-**/*.xml">
+ <map:call resource="book">
+ <map:parameter name="path" value="{2}/{3}"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="**book-**.xml">
+ <map:call resource="book">
+ <map:parameter name="path" value="{2}"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="body-todo.xml">
+ <map:generate type="file-nolabel" src="status.xml"/>
+ <map:transform src="library/xslt/todo2document.xsl" label="content"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="document2html"/>
+ <map:parameter name="path" value="/todo.xml"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="body-changes.xml">
+ <map:generate type="file-nolabel" src="status.xml"/>
+ <map:transform src="library/xslt/changes2document.xsl" label="content"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="document2html"/>
+ <map:parameter name="path" value="/changes"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="body-**/faq.xml">
+ <map:generate type="file-nolabel" src="content/xdocs/{1}/faq.xml"/>
+ <map:transform src="library/xslt/faq2document.xsl" label="content"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="document2html"/>
+ <map:parameter name="path" value="{1}/faq"/>
+ <map:parameter name="isfaq" value="true"/>
+
+ </map:call>
+ </map:match>
+
+ <map:match pattern="body-faq.xml">
+ <map:generate type="file-nolabel" src="content/xdocs/faq.xml"/>
+ <map:transform src="library/xslt/faq2document.xsl" label="content"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="document2html"/>
+ <map:parameter name="path" value="faq"/>
+ <map:parameter name="isfaq" value="true"/>
+
+ </map:call>
+ </map:match>
+
+<!-- ========================== FOP Additions ========================== -->
+
+ <map:match pattern="body-compliance.xml">
+ <map:generate type="file-nolabel" src="content/xdocs/compliance.xml"/>
+ <map:transform src="resources/stylesheets/compliance2document.xsl" label="content"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="document2html"/>
+ <map:parameter name="path" value="compliance"/>
+ </map:call>
+ </map:match>
+
+<!-- ======================== End FOP Additions ======================== -->
+
+ <!-- Redirect requests for community/ (eg in the trail) to the home page -->
+ <map:match pattern="community/index.html">
+ <map:redirect-to uri="../index.html"/>
+ </map:match>
+
+ <!-- index pages for contribution categories -->
+ <map:match pattern="body-community/*/index.xml">
+ <map:generate src="content/xdocs/community/{1}/index.xml"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="document2html"/>
+ <map:parameter name="path" value="community/{1}/index"/>
+ </map:call>
+ </map:match>
+
+ <!-- no special transformation, yet, for revision pages -->
+ <map:match pattern="body-community**revision-*.xml">
+ <map:generate src="content/xdocs/community{1}revision-{2}.xml"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="document2html"/>
+ <map:parameter name="path" value="community/{1}/revision-{2}"/>
+ </map:call>
+ </map:match>
+
+ <!-- all contribution docs -->
+ <map:match pattern="body-community/*/*/**.xml">
+ <map:aggregate element="all" >
+ <map:part src="content/xdocs/community/{1}/{2}/{3}.xml"/>
+ <map:part src="cocoon:/revisions-community/{1}/{2}/{3}" />
+ </map:aggregate>
+ <map:transform src="library/xslt/{1}2document.xsl" label="content"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="document2html"/>
+ <map:parameter name="path" value="community/{1}/{2}/{3}"/>
+ </map:call>
+ </map:match>
+
+ <!-- revisions only implemented for community pages -->
+ <map:match pattern="revisions-community/*/*/**">
+ <map:generate type="directory" src="content/xdocs/community/{1}/{2}">
+ <map:parameter name="dateFormat" value="yyyy-MM-dd hh:mm" />
+ </map:generate>
+ <map:transform src="library/xslt/directory2revisions.xsl" label="content" >
+ <map:parameter name="use-request-parameters" value="true"/>
+ <map:parameter name="page" value="{3}"/>
+ </map:transform>
+ <map:serialize type="xml" />
+ </map:match>
+
+ <!-- Any other howto directories get transformed, without revisions -->
+ <map:match pattern="body-**howto/*.xml">
+ <map:generate src="content/xdocs/{1}howto/{2}.xml"/>
+ <map:transform src="library/xslt/howto2document.xsl" label="content"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="document2html"/>
+ <map:parameter name="path" value="{1}howto/{2}"/>
+ </map:call>
+ </map:match>
+
+
+ <!-- Generate the "doclist" - list of all documentation
+ The first match generates each book.xml and adds a new attribute "uri".
+ The second match aggregates each book.xml into a doclist and
+ then converts it to a document.
+ -->
+ <map:match pattern="doclist/content/xdocs/**book.xml">
+ <map:generate src="content/xdocs/{1}book.xml"/>
+ <map:transform src="library/xslt/doclist.xsl">
+ <map:parameter name="uri" value="{1}"/>
+ </map:transform>
+ <map:serialize type="xml"/>
+ </map:match>
+
+ <map:match pattern="body-doclist.xml">
+ <map:aggregate element="doclist">
+ <map:part src="cocoon:/doclist/content/xdocs/book.xml"/>
+ <map:part src="cocoon:/doclist/content/xdocs/community/howto/book.xml"/>
+ </map:aggregate>
+ <map:transform src="library/xslt/doclist2document.xsl"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="document2html"/>
+ <map:parameter name="path" value="doclist"/>
+ <map:parameter name="nopdf" value="true"/>
+ </map:call>
+ </map:match>
+
+ <!-- HTML DTD Documentation generation pipeline, makes use of NekoDTD tool -->
+
+ <map:match pattern="body-**.dtdx.xml">
+ <map:generate type="nekodtd" src="resources/schema/dtd/{1}.dtd">
+ <map:parameter name="config-class" value="org.cyberneko.dtd.DTDConfiguration" />
+ </map:generate>
+ <map:transform src="library/xslt/dtdx2flat.xsl"/>
+ <map:transform src="library/xslt/flat2document.xsl"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="document2html"/>
+ <map:parameter name="isfaq" value="true"/>
+ <map:parameter name="path" value="{1}.dtdx.html"/>
+ </map:call>
+ </map:match>
+
+ <!-- Generates body HTML for files in subdirs -->
+ <map:match pattern="body-**/*.xml">
+ <map:generate src="content/xdocs/{1}/{2}.xml"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="document2html"/>
+ <map:parameter name="path" value="{1}/{2}"/>
+ </map:call>
+ </map:match>
+
+ <!-- Generates body HTML for root-level files -->
+ <map:match pattern="body-**.xml">
+ <map:generate src="content/xdocs/{1}.xml"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="document2html"/>
+ <map:parameter name="path" value="{1}"/>
+ </map:call>
+ </map:match>
+
+ </map:pipeline>
+
+
+ <map:pipeline internal-only="false">
+
+<!-- ========================== FOP Additions ========================== -->
+
+ <map:match pattern="*/svg/*.svg">
+ <map:read src="content/xdocs/{1}/svg/{2}.svg" mime-type="image/svg"/>
+ </map:match>
+ <map:match pattern="*/svg/*.png">
+ <map:generate src="content/xdocs/{1}/svg/{2}.svg"/>
+ <map:serialize type="svg2png"/>
+ </map:match>
+ <map:match pattern="*/svg/*.pdf">
+ <map:generate src="content/xdocs/{1}/svg/{2}.svg"/>
+ <map:serialize type="svg2pdf"/>
+ </map:match>
+
+ <map:match pattern="fo/*.fo">
+ <map:read src="content/xdocs/fo/{1}.fo" mime-type="text/xml"/>
+ </map:match>
+ <map:match pattern="fo/*.fo.pdf">
+ <map:generate src="content/xdocs/fo/{1}.fo"/>
+ <map:serialize type="fo2pdf"/>
+ </map:match>
+ <map:match pattern="**/fo/*.fo">
+ <map:read src="content/xdocs/{1}/fo/{2}.fo" mime-type="text/xml"/>
+ </map:match>
+ <map:match pattern="**/fo/*.fo.pdf">
+ <map:generate src="content/xdocs/{1}/fo/{2}.fo"/>
+ <map:serialize type="fo2pdf"/>
+ </map:match>
+
+<!-- ======================= End FOP Additions ======================== -->
+
+ <map:match pattern="">
+ <map:redirect-to uri="/{context:context}/index.html"/>
+ </map:match>
+
+ <map:match pattern="**">
+
+ <!-- if the file is present verbatim as content, give that to the user... -->
+ <map:act type="resource-exists">
+ <map:parameter name="url" value="content/{1}"/>
+ <map:read src="content/{../1}"/>
+ </map:act>
+
+ <!-- ... otherwise try to generate it using these rules. -->
+
+ <map:match pattern="apachestats">
+ <map:generate type="html"
+ src="http://www.apache.org/~rubys/stats/xml.apache.org/">
+ <map:parameter name="xpath"
+ value="/html/body//a[contains(@href,'.xml')]"/>
+ </map:generate>
+ <map:serialize type="xml"/>
+ </map:match>
+
+
+ <map:match pattern="*.html">
+ <map:aggregate element="site">
+ <map:part src="cocoon:/book-{1}.xml"/>
+ <map:part src="cocoon:/tab-{1}.xml"/>
+ <map:part src="cocoon:/body-{1}.xml" label="content"/>
+ </map:aggregate>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="site2xhtml"/>
+ <map:parameter name="path" value="{1}"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="**/*.html">
+ <map:aggregate element="site">
+ <map:part src="cocoon:/{1}/book-{1}/{2}.xml"/>
+ <map:part src="cocoon:/{1}/tab-{1}/{2}.xml"/>
+ <map:part src="cocoon:/body-{1}/{2}.xml" label="content"/>
+ </map:aggregate>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="site2xhtml"/>
+ <map:parameter name="path" value="{1}/{2}"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="*.dtdx.pdf">
+ <map:generate type="nekodtd" src="resources/schema/dtd/{1}.dtd">
+ <map:parameter name="config-class" value="org.cyberneko.dtd.DTDConfiguration" />
+ </map:generate>
+ <map:transform src="library/xslt/dtdx2flat.xsl"/>
+ <map:transform src="library/xslt/flat2document.xsl"/>
+ <map:transform src="skins/{defaults:skin}/xslt/fo/document2fo.xsl"/>
+ <map:serialize type="fo2pdf"/>
+ </map:match>
+
+ <map:match pattern="**/*.dtdx.pdf">
+ <map:generate type="nekodtd" src="resources/schema/dtd/{2}.dtd">
+ <map:parameter name="config-class" value="org.cyberneko.dtd.DTDConfiguration" />
+ </map:generate>
+ <map:transform src="library/xslt/dtdx2flat.xsl"/>
+ <map:transform src="library/xslt/flat2document.xsl"/>
+ <map:transform src="skins/{defaults:skin}/xslt/fo/document2fo.xsl"/>
+ <map:serialize type="fo2pdf"/>
+ </map:match>
+
+ <map:match pattern="changes.pdf">
+ <map:generate type="file-nolabel" src="status.xml"/>
+ <map:transform src="library/xslt/changes2document.xsl" label="content"/>
+ <map:transform src="skins/forrest-site/xslt/fo/document2fo.xsl"/>
+ <map:serialize type="fo2pdf"/>
+ </map:match>
+
+ <map:match pattern="todo.pdf">
+ <map:generate type="file-nolabel" src="status.xml"/>
+ <map:transform src="library/xslt/todo2document.xsl" label="content"/>
+ <map:transform src="skins/forrest-site/xslt/fo/document2fo.xsl"/>
+ <map:serialize type="fo2pdf"/>
+ </map:match>
+
+ <map:match pattern="faq.pdf">
+ <map:generate type="file-nolabel" src="content/xdocs/faq.xml"/>
+ <map:transform src="library/xslt/faq2document.xsl" label="content"/>
+ <map:transform src="skins/forrest-site/xslt/fo/document2fo.xsl"/>
+ <map:serialize type="fo2pdf"/>
+ </map:match>
+
+<!-- ========================= FOP Additions ========================== -->
+
+ <map:match pattern="**/faq.pdf">
+ <map:generate type="file-nolabel" src="content/xdocs/{1}/faq.xml"/>
+ <map:transform src="library/xslt/faq2document.xsl" label="content"/>
+ <map:transform src="skins/forrest-site/xslt/fo/document2fo.xsl"/>
+ <map:serialize type="fo2pdf"/>
+ </map:match>
+
+ <map:match pattern="compliance.pdf">
+ <map:generate type="file-nolabel" src="content/xdocs/compliance.xml"/>
+ <map:transform src="resources/stylesheets/compliance2document.xsl" label="content"/>
+ <map:transform src="skins/forrest-site/xslt/fo/document2fo.xsl"/>
+ <map:serialize type="fo2pdf"/>
+ </map:match>
+
+<!-- ======================= End FOP Additions ======================== -->
+
+ <map:match pattern="community/howto/**.pdf">
+ <map:generate src="content/xdocs/community/howto/{1}.xml"/>
+ <map:transform src="library/xslt/howto2document.xsl" label="content"/>
+ <map:transform src="skins/{defaults:skin}/xslt/fo/document2fo.xsl"/>
+ <map:serialize type="fo2pdf"/>
+ </map:match>
+
+ <map:match pattern="**.pdf">
+ <map:generate src="content/xdocs/{1}.xml"/>
+ <map:transform src="skins/{defaults:skin}/xslt/fo/document2fo.xsl"/>
+ <map:serialize type="fo2pdf"/>
+ </map:match>
+
+ <!-- ================ Directory redirects =========================== -->
+ <!-- Redirect any request for a directory to the directory's index.html file -->
+ <map:match pattern="**/">
+ <map:redirect-to uri="{context:context}/{1}/index.html"/>
+ </map:match>
+
+ <!-- ================ Libre =========================== -->
+
+ <map:match pattern="libre">
+ <map:generate type="libre" src="content/xdocs" >
+ <map:parameter name="depth" value="-1" />
+ </map:generate>
+ <map:serialize type="xml"/>
+ </map:match>
+
+ <!-- ================ Static =========================== -->
+
+ <map:match pattern="skin/**.js">
+ <map:call resource="skin-read">
+ <map:parameter name="path" value="scripts/{1}.js"/>
+ <map:parameter name="mime-type" value="application/javascript"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="**/skin/**.js">
+ <map:call resource="skin-read">
+ <map:parameter name="path" value="scripts/{2}.js"/>
+ <map:parameter name="mime-type" value="application/javascript"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="**.js">
+ <map:read src="resources/scripts/{1}.js" mime-type="application/javascript"/>
+ </map:match>
+
+ <map:match pattern="skin/**.css">
+ <map:call resource="skin-read">
+ <map:parameter name="path" value="css/{1}.css"/>
+ <map:parameter name="mime-type" value="text/css"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="**/skin/**.css">
+ <map:call resource="skin-read">
+ <map:parameter name="path" value="css/{2}.css"/>
+ <map:parameter name="mime-type" value="text/css"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="**.css">
+ <map:read src="resources/css/{1}.css" mime-type="text/css"/>
+ </map:match>
+
+ <map:match pattern="skin/images/**.*">
+ <map:call resource="skin-read">
+ <map:parameter name="path" value="images/{1}.{2}"/>
+ <map:parameter name="mime-type" value="image/{2}"/>
+ </map:call>
+ </map:match>
+
+ <!-- WARNING: You are strongly advised not to make use of this target, as it
+ leads to browsers having to cache multiple copies of the images, one per
+ directory. See the forrest-site skin XSLTs for an example of how to make
+ all image references use the 'skin/images/**.*' rule above -->
+ <map:match pattern="**/skin/images/**.*">
+ <map:call resource="skin-read">
+ <map:parameter name="path" value="images/{2}.{3}"/>
+ <map:parameter name="mime-type" value="image/{3}"/>
+ </map:call>
+ </map:match>
+
+ <!-- DS: handles images local to a contributor directory -->
+ <map:match pattern="**my-images/**.*">
+ <map:read src="content/xdocs/{1}my-images/{2}.{3}" mime-type="image/{3}"/>
+ </map:match>
+
+ <map:match pattern="images/**.*">
+ <map:read src="resources/images/{1}.{2}" mime-type="image/{2}"/>
+ </map:match>
+
+ <!-- WARNING: See above: this target should not be made use of -->
+ <map:match pattern="**/images/**.*">
+ <map:read src="resources/images/{2}.{3}" mime-type="image/{3}"/>
+ </map:match>
+
+ <map:match pattern="**favicon.ico">
+ <map:call resource="skin-read">
+ <map:parameter name="path" value="images/favicon.ico"/>
+ <map:parameter name="mime-type" value="image/x-ico"/>
+ </map:call>
+ </map:match>
+
+ </map:match>
+
+ </map:pipeline>
+ </map:pipelines>
+
+</map:sitemap>
+
--- /dev/null
+<?xml version="1.0"?>
+
+<!--
+Skin configuration file. This file contains details of your project, which will
+be used to configure the chosen Forrest skin.
+
+jefft@apache.org
+-->
+
+<!DOCTYPE skinconfig [
+
+ <!ENTITY % links.att 'name CDATA #REQUIRED'>
+ <!ENTITY % link.att 'name CDATA #REQUIRED href CDATA #REQUIRED'>
+ <!ELEMENT skinconfig (disable-search?, searchsite-domain?, searchsite-name?, project-name, project-url, project-logo, group-name?, group-url?, group-logo?, host-logo?, year?, vendor?, trail?, credits?)*>
+ <!ELEMENT credits (credit*)>
+ <!ELEMENT credit (name, url, image, width?, height?)>
+ <!ELEMENT disable-search (#PCDATA)>
+ <!ELEMENT searchsite-domain (#PCDATA)>
+ <!ELEMENT searchsite-name (#PCDATA)>
+ <!ELEMENT project-name (#PCDATA)>
+ <!ELEMENT project-url (#PCDATA)>
+ <!ELEMENT project-logo (#PCDATA)>
+ <!ELEMENT group-name (#PCDATA)>
+ <!ELEMENT group-url (#PCDATA)>
+ <!ELEMENT group-logo (#PCDATA)>
+ <!ELEMENT host-logo (#PCDATA)>
+ <!ELEMENT year (#PCDATA)>
+ <!ELEMENT vendor (#PCDATA)>
+ <!ELEMENT trail (link1, link2, link3)>
+ <!ELEMENT link1 EMPTY>
+ <!-- Seems we can't use param entity refs until this is DTDified -->
+ <!ATTLIST link1 name CDATA #REQUIRED href CDATA #IMPLIED>
+ <!ELEMENT link2 EMPTY>
+ <!ATTLIST link2 name CDATA #REQUIRED href CDATA #IMPLIED>
+ <!ELEMENT link3 EMPTY>
+ <!ATTLIST link3 name CDATA #REQUIRED href CDATA #IMPLIED>
+ <!ELEMENT name (#PCDATA)>
+ <!ELEMENT url (#PCDATA)>
+ <!ELEMENT image (#PCDATA)>
+ <!ELEMENT width (#PCDATA)>
+ <!ELEMENT height (#PCDATA)>
+ ]>
+
+<skinconfig>
+ <!-- Do we want the Google search box? -->
+ <disable-search>false</disable-search>
+ <searchsite-domain>xml.apache.org</searchsite-domain>
+ <searchsite-name>Apache XML</searchsite-name>
+
+
+ <project-name>FOP</project-name>
+ <project-url>http://xml.apache.org/fop/</project-url>
+ <project-logo>images/logo.jpg</project-logo>
+
+ <group-name>Apache XML</group-name>
+ <group-url>http://xml.apache.org/</group-url>
+ <group-logo>images/group-logo.gif</group-logo>
+
+ <!-- Eg, a sourceforge logo. forrest-site renders it to the bottom-left corner -->
+ <host-logo></host-logo>
+
+ <!-- The following used to construct a copyright statement -->
+ <year>1999-2002</year>
+ <vendor>The Apache Software Foundation.</vendor>
+
+ <!-- Some skins use this to form a 'breadcrumb trail' of links. If you don't
+ want these, set the attributes to blank. The DTD purposefully requires them.
+ -->
+ <trail>
+ <link1 name="apache" href="http://www.apache.org/"/>
+ <link2 name="xml.apache" href="http://xml.apache.org/"/>
+ <link3 name="" href=""/>
+ </trail>
+
+ <!-- Credits are typically rendered as a set of small clickable images in the
+ page footer -->
+ <credits>
+ <credit>
+ <name>Built with Cocoon</name>
+ <url>http://xml.apache.org/cocoon/</url>
+ <image>skin/images/built-with-cocoon.gif</image>
+ <width>88</width>
+ <height>31</height>
+ </credit>
+ <credit>
+ <name>Krysalis Centipede</name>
+ <url>http://www.krysalis.org/centipede/</url>
+ <image>skin/images/centipede-logo-small.gif</image>
+ <width>138</width>
+ <height>31</height>
+ </credit>
+ </credits>
+</skinconfig>