# ========================================================= # # (c) 2004, RenderX # # Author: Alexander Peshkov # # Permission is granted to use this document, copy and # modify free of charge, provided that every derived work # bear a reference to the present document. # # This document contains a computer program written in # XSL Transformations Language. It is published with no # warranty of any kind about its usability, as a mere # example of XSL technology. RenderX shall not be # considered liable for any damage or loss of data caused # by use of this program. # # ========================================================= namespace local = "" default namespace fo = "http://www.w3.org/1999/XSL/Format" namespace rx = "http://www.renderx.com/XSL/Extensions" include "datatype.rnc" # =============================================================== # Common properties content models used by several attributes # =============================================================== border-style.attr-content = "none" | "hidden" | "dotted" | "dashed" | "solid" | "double" | "groove" | "ridge" | "inset" | "outset" | "inherit" orientation.attr-content = "0" | "90" | "180" | "270" | "-90" | "-180" | "-270" | "0deg" | "90deg" | "180deg" | "270deg" | "-90deg" | "-180deg" | "-270deg" | "inherit" keep.attr-content = "auto" | "always" | integer.datatype # =============================================================== # Definitions of all the attributes (properties) used in XSL FO # includeing those from RX extensions # (definitions of attributes bearing 'rx' namespace named as rx-..., # but sorted according to the actual attribute name) # =============================================================== absolute-position.attr = attribute absolute-position { "absolute" | "fixed" } #MEMO: We forced to separate this property from actual 'absolute-position' container-position.attr = attribute absolute-position { "auto" | "inherit" | expr.datatype } active-state.attr = attribute active-state { "link" | "visited" | "active" | "hover" | "focus" | expr.datatype } alignment-adjust.attr = attribute alignment-adjust { text | expr.datatype } alignment-baseline.attr = attribute alignment-baseline { "auto" | "baseline" | "before-edge" | "text-before-edge" | "middle" | "central" | "after-edge" | "text-after-edge" | "top" | "text-top" | "bottom" | "text-bottom" | "ideographic" | "alphabetic" | "hanging" | "mathematical" | "inherit" | expr.datatype } auto-restore.attr = attribute auto-restore { "true" | "false" | expr.datatype } azimuth.attr = attribute azimuth { text | expr.datatype } background.attr = attribute background { text | expr.datatype } background-attachment.attr = attribute background-attachment { "scroll" | "fixed" | "inherit" | expr.datatype } background-color.attr = attribute background-color { text | expr.datatype } background-image.attr = attribute background-image { text | expr.datatype } background-position.attr = attribute background-position { text | expr.datatype } background-position-horizontal.attr = attribute background-position-horizontal { text | expr.datatype } background-position-vertical.attr = attribute background-position-vertical { text | expr.datatype } background-repeat.attr = attribute background-repeat { "repeat" | "repeat-x" | "repeat-y" | "no-repeat" | "inherit" | expr.datatype } #RenderX extension attributes rx-background-content-type.attr = attribute rx:background-content-type { text | expr.datatype } rx-background-content-height.attr = attribute rx:background-content-height { text | expr.datatype } rx-background-content-width.attr = attribute rx:background-content-width { text | expr.datatype } rx-background-scaling.attr = attribute rx:background-scaling { "uniform" | "non-uniform" | expr.datatype } baseline-shift.attr = attribute baseline-shift { text | expr.datatype } blank-or-not-blank.attr = attribute blank-or-not-blank { "blank" | "not-blank" | "any" | "inherit" | expr.datatype } block-progression-dimension.attr = attribute block-progression-dimension { text | expr.datatype } block-progression-dimension.maximum.attr = attribute block-progression-dimension.maximum { text | expr.datatype } block-progression-dimension.minimum.attr = attribute block-progression-dimension.minimum { text | expr.datatype } block-progression-dimension.optimum.attr = attribute block-progression-dimension.optimum { text | expr.datatype } border.attr = attribute border { text | expr.datatype } border-after-color.attr = attribute border-after-color { text | expr.datatype } border-after-precedence.attr = attribute border-after-precedence { text | expr.datatype } border-after-style.attr = attribute border-after-style { border-style.attr-content | expr.datatype } border-after-width.attr = attribute border-after-width { text | expr.datatype } border-after-width.conditionality.attr = attribute border-after-width.conditionality { "discard" | "retain" | expr.datatype } border-after-width.length.attr = attribute border-after-width.length { text | expr.datatype } border-before-color.attr = attribute border-before-color { text | expr.datatype } border-before-precedence.attr = attribute border-before-precedence { text | expr.datatype } border-before-style.attr = attribute border-before-style { border-style.attr-content | expr.datatype } border-before-width.attr = attribute border-before-width { text | expr.datatype } border-before-width.conditionality.attr = attribute border-before-width.conditionality { "discard" | "retain" | expr.datatype } border-before-width.length.attr = attribute border-before-width.length { text | expr.datatype } border-bottom.attr = attribute border-bottom { text | expr.datatype } border-bottom-color.attr = attribute border-bottom-color { text | expr.datatype } border-bottom-style.attr = attribute border-bottom-style { border-style.attr-content | expr.datatype } border-bottom-width.attr = attribute border-bottom-width { text | expr.datatype } border-bottom-width.conditionality.attr = attribute border-bottom-width.conditionality { "discard" | "retain" | expr.datatype } border-bottom-width.length.attr = attribute border-bottom-width.length { text | expr.datatype } border-collapse.attr = attribute border-collapse { "collapse" | "collapse-with-precedence" | "separate" | "inherit" | expr.datatype } border-color.attr = attribute border-color { text | expr.datatype } border-end-color.attr = attribute border-end-color { text | expr.datatype } border-end-precedence.attr = attribute border-end-precedence { text | expr.datatype } border-end-style.attr = attribute border-end-style { border-style.attr-content | expr.datatype } border-end-width.attr = attribute border-end-width { text | expr.datatype } border-end-width.conditionality.attr = attribute border-end-width.conditionality { "discard" | "retain" | expr.datatype } border-end-width.length.attr = attribute border-end-width.length { text | expr.datatype } border-left.attr = attribute border-left { text | expr.datatype } border-left-color.attr = attribute border-left-color { text | expr.datatype } border-left-style.attr = attribute border-left-style { border-style.attr-content | expr.datatype } border-left-width.attr = attribute border-left-width { text | expr.datatype } border-left-width.conditionality.attr = attribute border-left-width.conditionality { "discard" | "retain" | expr.datatype } border-left-width.length.attr = attribute border-left-width.length { text | expr.datatype } border-right.attr = attribute border-right { text | expr.datatype } border-right-color.attr = attribute border-right-color { text | expr.datatype } border-right-style.attr = attribute border-right-style { border-style.attr-content | expr.datatype } border-right-width.attr = attribute border-right-width { text | expr.datatype } border-right-width.conditionality.attr = attribute border-right-width.conditionality { "discard" | "retain" | expr.datatype } border-right-width.length.attr = attribute border-right-width.length { text | expr.datatype } border-separation.attr = attribute border-separation { text | expr.datatype } border-separation.block-progression-direction.attr = attribute border-separation.block-progression-direction { text | expr.datatype } border-separation.inline-progression-direction.attr = attribute border-separation.inline-progression-direction { text | expr.datatype } border-spacing.attr = attribute border-spacing { text | expr.datatype } border-start-color.attr = attribute border-start-color { text | expr.datatype } border-start-precedence.attr = attribute border-start-precedence { text | expr.datatype } border-start-style.attr = attribute border-start-style { border-style.attr-content | expr.datatype } border-start-width.attr = attribute border-start-width { text | expr.datatype } border-start-width.conditionality.attr = attribute border-start-width.conditionality { "discard" | "retain" | expr.datatype } border-start-width.length.attr = attribute border-start-width.length { text | expr.datatype } border-style.attr = attribute border-style { text | expr.datatype } border-top.attr = attribute border-top { text | expr.datatype } border-top-color.attr = attribute border-top-color { text | expr.datatype } border-top-style.attr = attribute border-top-style { border-style.attr-content | expr.datatype } border-top-width.attr = attribute border-top-width { text | expr.datatype } border-top-width.conditionality.attr = attribute border-top-width.conditionality { "discard" | "retain" | expr.datatype } border-top-width.length.attr = attribute border-top-width.length { text | expr.datatype } border-width.attr = attribute border-width { text | expr.datatype } bottom.attr = attribute bottom { text | expr.datatype } break-after.attr = attribute break-after { "auto" | "column" | "page" | "even-page" | "odd-page" | "inherit" | expr.datatype } break-before.attr = attribute break-before { "auto" | "column" | "page" | "even-page" | "odd-page" | "inherit" | expr.datatype } caption-side.attr = attribute caption-side { "before" | "after" | "start" | "end" | "top" | "bottom" | "left" | "right" | "inherit" | expr.datatype } case-name.attr = attribute case-name { text | expr.datatype } case-title.attr = attribute case-title { text | expr.datatype } character.attr = attribute character { text } clear.attr = attribute clear { "start" | "end" | "left" | "right" | "both" | "none" | "inherit" | expr.datatype } clip.attr = attribute clip { shape.datatype | "auto" | "inherit" | expr.datatype } collapse-subtree.attr = attribute collapse-subtree { "true" | "false" | expr.datatype } color.attr = attribute color { text | expr.datatype } color-profile-name.attr = attribute color-profile-name { text } column-count.attr = attribute column-count { text | expr.datatype } column-gap.attr = attribute column-gap { text | expr.datatype } column-number.attr = attribute column-number { text | expr.datatype } column-width.attr = attribute column-width { text | expr.datatype } content-height.attr = attribute content-height { text | expr.datatype } content-type.attr = attribute content-type { text | expr.datatype } content-width.attr = attribute content-width { text | expr.datatype } country.attr = attribute country { text | expr.datatype } cue.attr = attribute cue { text | expr.datatype } cue-after.attr = attribute cue-after { text | expr.datatype } cue-before.attr = attribute cue-before { text | expr.datatype } destination-placement-offset.attr = attribute destination-placement-offset { text | expr.datatype } direction.attr = attribute direction { "ltr" | "rtl" | "inherit" | expr.datatype } display-align.attr = attribute display-align { "auto" | "before" | "center" | "after" | "inherit" | expr.datatype } dominant-baseline.attr = attribute dominant-baseline { "auto" | "use-script" | "no-change" | "reset-size" | "ideographic" | "alphabetic" | "hanging" | "mathematical" | "central" | "middle" | "text-after-edge" | "text-before-edge" | "inherit" | expr.datatype } elevation.attr = attribute elevation { text | expr.datatype } empty-cells.attr = attribute empty-cells { "show" | "hide" | "inherit" | expr.datatype } end-indent.attr = attribute end-indent { text | expr.datatype } ends-row.attr = attribute ends-row { "true" | "false" | expr.datatype } extent.attr = attribute extent { text | expr.datatype } external-destination.attr = attribute external-destination { text | expr.datatype } #MEMO: We have separated this property into the two (for side and before floats) #MEMO: Float values "inside" and "outside" are RenderX extensions. before-float.attr = attribute float { "before" } side-float.attr = attribute float { "start" | "end" | "left" | "right" | "none" | "inside" | "outside" | "inherit" | expr.datatype } flow-name.attr = attribute flow-name { text } font.attr = attribute font { text | expr.datatype } font-family.attr = attribute font-family { text | expr.datatype } font-selection-strategy.attr = attribute font-selection-strategy { "auto" | "character-by-character" | "inherit" | expr.datatype } font-size.attr = attribute font-size { text | expr.datatype } font-size-adjust.attr = attribute font-size-adjust { text | expr.datatype } font-stretch.attr = attribute font-stretch { "normal" | "wider" | "narrower" | "ultra-condensed" | "extra-condensed" | "condensed" | "semi-condensed" | "semi-expanded" | "expanded" | "extra-expanded" | "ultra-expanded" | "inherit" | expr.datatype } font-style.attr = attribute font-style { "normal" | "italic" | "oblique" | "backslant" | "inherit" | expr.datatype } font-variant.attr = attribute font-variant { "normal" | "small-caps" | "inherit" | expr.datatype } font-weight.attr = attribute font-weight { "normal" | "bold" | "bolder" | "lighter" | "inherit" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900" | expr.datatype } force-page-count.attr = attribute force-page-count { "auto" | "even" | "odd" | "end-on-even" | "end-on-odd" | "no-force" | "inherit" | expr.datatype } format.attr = attribute format { text } glyph-orientation-horizontal.attr = attribute glyph-orientation-horizontal { orientation.attr-content | expr.datatype } glyph-orientation-vertical.attr = attribute glyph-orientation-vertical { orientation.attr-content | expr.datatype } grouping-separator.attr = attribute grouping-separator { text } grouping-size.attr = attribute grouping-size { text | expr.datatype } height.attr = attribute height { text | expr.datatype } hyphenate.attr = attribute hyphenate { "false" | "true" | "inherit" | expr.datatype } hyphenation-character.attr = attribute hyphenation-character { text } hyphenation-keep.attr = attribute hyphenation-keep { "auto" | "column" | "page" | "inherit" | expr.datatype } hyphenation-ladder-count.attr = attribute hyphenation-ladder-count { text | expr.datatype } hyphenation-push-character-count.attr = attribute hyphenation-push-character-count { text | expr.datatype } hyphenation-remain-character-count.attr = attribute hyphenation-remain-character-count { text | expr.datatype } id.attr = attribute id { text } indicate-destination.attr = attribute indicate-destination { "true" | "false" | expr.datatype } initial-page-number.attr = attribute initial-page-number { text | expr.datatype } inline-progression-dimension.attr = attribute inline-progression-dimension { text | expr.datatype } inline-progression-dimension.maximum.attr = attribute inline-progression-dimension.maximum { text | expr.datatype } inline-progression-dimension.minimum.attr = attribute inline-progression-dimension.minimum { text | expr.datatype } inline-progression-dimension.optimum.attr = attribute inline-progression-dimension.optimum { text | expr.datatype } internal-destination.attr = attribute internal-destination { text } intrusion-displace.attr = attribute intrusion-displace { "auto" | "none" | "line" | "indent" | "block" | "inherit" | expr.datatype } keep-together.attr = attribute keep-together { keep.attr-content | expr.datatype } keep-together.within-column.attr = attribute keep-together.within-column { keep.attr-content | expr.datatype } keep-together.within-line.attr = attribute keep-together.within-line { keep.attr-content | expr.datatype } keep-together.within-page.attr = attribute keep-together.within-page { keep.attr-content | expr.datatype } keep-with-next.attr = attribute keep-with-next { keep.attr-content | expr.datatype } keep-with-next.within-column.attr = attribute keep-with-next.within-column { keep.attr-content | expr.datatype } keep-with-next.within-line.attr = attribute keep-with-next.within-line { keep.attr-content | expr.datatype } keep-with-next.within-page.attr = attribute keep-with-next.within-page { keep.attr-content | expr.datatype } keep-with-previous.attr = attribute keep-with-previous { keep.attr-content | expr.datatype } keep-with-previous.within-column.attr = attribute keep-with-previous.within-column { keep.attr-content | expr.datatype } keep-with-previous.within-line.attr = attribute keep-with-previous.within-line { keep.attr-content | expr.datatype } keep-with-previous.within-page.attr = attribute keep-with-previous.within-page { keep.attr-content | expr.datatype } #RenderX extension attribute rx-key.attr = attribute rx:key { text } language.attr = attribute language { text | expr.datatype } last-line-end-indent.attr = attribute last-line-end-indent { text | expr.datatype } leader-alignment.attr = attribute leader-alignment { "none" | "reference-area" | "page" | "inherit" | expr.datatype } leader-length.attr = attribute leader-length { text | expr.datatype } leader-length.maximum.attr = attribute leader-length.maximum { text | expr.datatype } leader-length.minimum.attr = attribute leader-length.minimum { text | expr.datatype } leader-length.optimum.attr = attribute leader-length.optimum { text | expr.datatype } leader-pattern.attr = attribute leader-pattern { "space" | "rule" | "dots" | "use-content" | "inherit" | expr.datatype } leader-pattern-width.attr = attribute leader-pattern-width { text | expr.datatype } left.attr = attribute left { text | expr.datatype } letter-spacing.attr = attribute letter-spacing { text | expr.datatype } letter-spacing.conditionality.attr = attribute letter-spacing.conditionality { "retain" | "discard" | expr.datatype } letter-spacing.maximum.attr = attribute letter-spacing.maximum { text | expr.datatype } letter-spacing.minimum.attr = attribute letter-spacing.minimum { text | expr.datatype } letter-spacing.optimum.attr = attribute letter-spacing.optimum { text | expr.datatype } letter-spacing.precedence.attr = attribute letter-spacing.precedence { text | expr.datatype } letter-value.attr = attribute letter-value { "auto" | "alphabetic" | "traditional" | expr.datatype } line-height.attr = attribute line-height { text | expr.datatype } line-height-shift-adjustment.attr = attribute line-height-shift-adjustment { text | expr.datatype } line-height.conditionality.attr = attribute line-height.conditionality { "retain" | "discard" | expr.datatype } line-height.maximum.attr = attribute line-height.maximum { text | expr.datatype } line-height.minimum.attr = attribute line-height.minimum { text | expr.datatype } line-height.optimum.attr = attribute line-height.optimum { text | expr.datatype } line-height.precedence.attr = attribute line-height.precedence { text | expr.datatype } line-stacking-strategy.attr = attribute line-stacking-strategy { "line-height" | "font-height" | "max-height" | "inherit" | expr.datatype } linefeed-treatment.attr = attribute linefeed-treatment { "ignore" | "preserve" | "treat-as-space" | "treat-as-zero-width-space" | "inherit" | expr.datatype } link-back.attr = attribute link-back { text | expr.datatype } list-separator.attr = attribute list-separator { text } margin.attr = attribute margin { text | expr.datatype } margin-bottom.attr = attribute margin-bottom { text | expr.datatype } margin-left.attr = attribute margin-left { text | expr.datatype } margin-right.attr = attribute margin-right { text | expr.datatype } margin-top.attr = attribute margin-top { text | expr.datatype } marker-class-name.attr = attribute marker-class-name { text } master-name.attr = attribute master-name { text } master-reference.attr = attribute master-reference { text } max-height.attr = attribute max-height { text | expr.datatype } max-width.attr = attribute max-width { text | expr.datatype } maximum-repeats.attr = attribute maximum-repeats { text | expr.datatype } media-usage.attr = attribute media-usage { "auto" | "paginate" | "bounded-in-one-dimension" | "unbounded" | expr.datatype } merge-subsequent-page-numbers.attr = attribute merge-subsequent-page-numbers { text | expr.datatype } min-height.attr = attribute min-height { text | expr.datatype } min-width.attr = attribute min-width { text | expr.datatype } #NOTE: It's RenderX extension attribute (belongs to rx:meta-field). It enumerates values currently available in XEP name.attr = attribute name { "author" | "title" | "subject" | "keywords" | expr.datatype } number-columns-repeated.attr = attribute number-columns-repeated { text | expr.datatype } number-columns-spanned.attr = attribute number-columns-spanned { text | expr.datatype } number-rows-spanned.attr = attribute number-rows-spanned { text | expr.datatype } odd-or-even.attr = attribute odd-or-even { "odd" | "even" | "any" | "inherit" | expr.datatype } rx-table-omit-initial-header.attr = attribute rx:table-omit-initial-header { "true" | "false" | expr.datatype } orphans.attr = attribute orphans { text | expr.datatype } overflow.attr = attribute overflow { "visible" | "hidden" | "scroll" | "auto" | "error-if-overflow" | "inherit" | expr.datatype } padding.attr = attribute padding { text | expr.datatype } padding-after.attr = attribute padding-after { text | expr.datatype } padding-after.conditionality.attr = attribute padding-after.conditionality { "discard" | "retain" | expr.datatype } padding-after.length.attr = attribute padding-after.length { text | expr.datatype } padding-before.attr = attribute padding-before { text | expr.datatype } padding-before.conditionality.attr = attribute padding-before.conditionality { "discard" | "retain" | expr.datatype } padding-before.length.attr = attribute padding-before.length { text | expr.datatype } padding-bottom.attr = attribute padding-bottom { text | expr.datatype } padding-bottom.conditionality.attr = attribute padding-bottom.conditionality { "discard" | "retain" | expr.datatype } padding-bottom.length.attr = attribute padding-bottom.length { text | expr.datatype } padding-end.attr = attribute padding-end { text | expr.datatype } padding-end.conditionality.attr = attribute padding-end.conditionality { "discard" | "retain" | expr.datatype } padding-end.length.attr = attribute padding-end.length { text | expr.datatype } padding-left.attr = attribute padding-left { text | expr.datatype } padding-left.conditionality.attr = attribute padding-left.conditionality { "discard" | "retain" | expr.datatype } padding-left.length.attr = attribute padding-left.length { text | expr.datatype } padding-right.attr = attribute padding-right { text | expr.datatype } padding-right.conditionality.attr = attribute padding-right.conditionality { "discard" | "retain" | expr.datatype } padding-right.length.attr = attribute padding-right.length { text | expr.datatype } padding-start.attr = attribute padding-start { text | expr.datatype } padding-start.conditionality.attr = attribute padding-start.conditionality { "discard" | "retain" | expr.datatype } padding-start.length.attr = attribute padding-start.length { text | expr.datatype } padding-top.attr = attribute padding-top { text | expr.datatype } padding-top.conditionality.attr = attribute padding-top.conditionality { "discard" | "retain" | expr.datatype } padding-top.length.attr = attribute padding-top.length { text | expr.datatype } page-break-after.attr = attribute page-break-after { "auto" | "always" | "avoid" | "left" | "right" | "inherit" | expr.datatype } page-break-before.attr = attribute page-break-before { "auto" | "always" | "avoid" | "left" | "right" | "inherit" | expr.datatype } page-break-inside.attr = attribute page-break-inside { "avoid" | "auto" | "inherit" | expr.datatype } page-height.attr = attribute page-height { text | expr.datatype } page-position.attr = attribute page-position { "first" | "last" | "rest" | "any" | "inherit" | expr.datatype } page-width.attr = attribute page-width { text | expr.datatype } pause.attr = attribute pause { text | expr.datatype } pause-after.attr = attribute pause-after { text | expr.datatype } pause-before.attr = attribute pause-before { text | expr.datatype } pitch.attr = attribute pitch { text | expr.datatype } pitch-range.attr = attribute pitch-range { text | expr.datatype } play-during.attr = attribute play-during { text | expr.datatype } #MEMO: We forced to devide this shorthand since we have separate absolute-container element absolute-position-shorthand.attr = attribute position { "absolute" | "fixed" } relative-position-shorthand.attr = attribute position { "static" | "relative" | "inherit" | expr.datatype } precedence.attr = attribute precedence { "true" | "false" | "inherit" | expr.datatype } provisional-distance-between-starts.attr = attribute provisional-distance-between-starts { text | expr.datatype } provisional-label-separation.attr = attribute provisional-label-separation { text | expr.datatype } range-separator.attr = attribute range-separator { text } ref-id.attr = attribute ref-id { text } ref-key.attr = attribute ref-key { text } reference-orientation.attr = attribute reference-orientation { orientation.attr-content | expr.datatype } region-name.attr = attribute region-name { text } relative-align.attr = attribute relative-align { "before" | "baseline" | "inherit" | expr.datatype } relative-position.attr = attribute relative-position { "auto" | "static" | "relative" | "inherit" | expr.datatype } rendering-intent.attr = attribute rendering-intent { "auto" | "perceptual" | "relative-colorimetric" | "saturation" | "absolute-colorimetric" | "inherit" | expr.datatype }? retrieve-boundary.attr = attribute retrieve-boundary { "page" | "page-sequence" | "document" | expr.datatype } retrieve-class-name.attr = attribute retrieve-class-name { text } retrieve-position.attr = attribute retrieve-position { "first-starting-within-page" | "first-including-carryover" | "last-starting-within-page" | "last-ending-within-page" | expr.datatype } richness.attr = attribute richness { text | expr.datatype } right.attr = attribute right { text | expr.datatype } role.attr = attribute role { text } rule-style.attr = attribute rule-style { "none" | "dotted" | "dashed" | "solid" | "double" | "groove" | "ridge" | "inherit" | expr.datatype } rule-thickness.attr = attribute rule-thickness { text | expr.datatype } scaling.attr = attribute scaling { "uniform" | "non-uniform" | "inherit" | expr.datatype } scaling-method.attr = attribute scaling-method { "auto" | "integer-pixels" | "resample-any-method" | "inherit" | expr.datatype } score-spaces.attr = attribute score-spaces { "true" | "false" | "inherit" | expr.datatype } script.attr = attribute script { text | expr.datatype } show-destination.attr = attribute show-destination { "replace" | "new" | expr.datatype } size.attr = attribute size { text | expr.datatype } source-document.attr = attribute source-document { text } space-after.attr = attribute space-after { text | expr.datatype } space-after.conditionality.attr = attribute space-after.conditionality { "retain" | "discard" | expr.datatype } space-after.maximum.attr = attribute space-after.maximum { text | expr.datatype } space-after.minimum.attr = attribute space-after.minimum { text | expr.datatype } space-after.optimum.attr = attribute space-after.optimum { text | expr.datatype } space-after.precedence.attr = attribute space-after.precedence { text | expr.datatype } space-before.attr = attribute space-before { text | expr.datatype } space-before.conditionality.attr = attribute space-before.conditionality { "retain" | "discard" | expr.datatype } space-before.maximum.attr = attribute space-before.maximum { text | expr.datatype } space-before.minimum.attr = attribute space-before.minimum { text | expr.datatype } space-before.optimum.attr = attribute space-before.optimum { text | expr.datatype } space-before.precedence.attr = attribute space-before.precedence { text | expr.datatype } space-end.attr = attribute space-end { text | expr.datatype } space-end.conditionality.attr = attribute space-end.conditionality { "retain" | "discard" | expr.datatype } space-end.maximum.attr = attribute space-end.maximum { text | expr.datatype } space-end.minimum.attr = attribute space-end.minimum { text | expr.datatype } space-end.optimum.attr = attribute space-end.optimum { text | expr.datatype } space-end.precedence.attr = attribute space-end.precedence { text | expr.datatype } space-start.attr = attribute space-start { text | expr.datatype } space-start.conditionality.attr = attribute space-start.conditionality { "retain" | "discard" | expr.datatype } space-start.maximum.attr = attribute space-start.maximum { text | expr.datatype } space-start.minimum.attr = attribute space-start.minimum { text | expr.datatype } space-start.optimum.attr = attribute space-start.optimum { text | expr.datatype } space-start.precedence.attr = attribute space-start.precedence { text | expr.datatype } span.attr = attribute span { "none" | "all" | "inherit" | expr.datatype } speak.attr = attribute speak { "normal" | "none" | "spell-out" | "inherit" | expr.datatype } speak-header.attr = attribute speak-header { "once" | "always" | "inherit" | expr.datatype } speak-numeral.attr = attribute speak-numeral { "digits" | "continuous" | "inherit" | expr.datatype } speak-punctuation.attr = attribute speak-punctuation { "code" | "none" | "inherit" | expr.datatype } speech-rate.attr = attribute speech-rate { text | expr.datatype } src.attr = attribute src { text | expr.datatype } start-indent.attr = attribute start-indent { text | expr.datatype } starting-state.attr = attribute starting-state { text | expr.datatype } starts-row.attr = attribute starts-row { "true" | "false" | expr.datatype } stress.attr = attribute stress { text | expr.datatype } suppress-at-line-break.attr = attribute suppress-at-line-break { "auto" | "suppress" | "retain" | "inherit" | expr.datatype } switch-to.attr = attribute switch-to { text | expr.datatype } table-layout.attr = attribute table-layout { "auto" | "fixed" | "inherit" | expr.datatype } table-omit-footer-at-break.attr = attribute table-omit-footer-at-break { "true" | "false" | "inherit" | expr.datatype } table-omit-header-at-break.attr = attribute table-omit-header-at-break { "true" | "false" | "inherit" | expr.datatype } target-presentation-context.attr = attribute target-presentation-context { text } target-processing-context.attr = attribute target-processing-context { text } target-stylesheet.attr = attribute target-stylesheet { text } #MEMO: values are temporarily excluded from text-align and text-align-last text-align.attr = attribute text-align { "start" | "center" | "end" | "justify" | "inside" | "outside" | "left" | "right" | "inherit" | expr.datatype } text-align-last.attr = attribute text-align-last { "relative" | "start" | "center" | "end" | "justify" | "inside" | "outside" | "left" | "right" | "inherit" | expr.datatype } text-altitude.attr = attribute text-altitude { text | expr.datatype } text-decoration.attr = attribute text-decoration { xsd:NMTOKENS | expr.datatype } text-depth.attr = attribute text-depth { text | expr.datatype } text-indent.attr = attribute text-indent { text | expr.datatype } text-shadow.attr = attribute text-shadow { text | expr.datatype } text-transform.attr = attribute text-transform { "capitalize" | "uppercase" | "lowercase" | "none" | "inherit" | expr.datatype } top.attr = attribute top { text | expr.datatype } treat-as-word-space.attr = attribute treat-as-word-space { "auto" | "true" | "false" | "inherit" | expr.datatype } unicode-bidi.attr = attribute unicode-bidi { "normal" | "embed" | "bidi-override" | "inherit" | expr.datatype } value.attr = attribute value { text } vertical-align.attr = attribute vertical-align { text | expr.datatype } visibility.attr = attribute visibility { "visible" | "hidden" | "collapse" | "inherit" | expr.datatype } voice-family.attr = attribute voice-family { text | expr.datatype } volume.attr = attribute volume { text | expr.datatype } white-space.attr = attribute white-space { "normal" | "pre" | "nowrap" | "inherit" | expr.datatype } white-space-collapse.attr = attribute white-space-collapse { "false" | "true" | "inherit" | expr.datatype } white-space-treatment.attr = attribute white-space-treatment { "ignore" | "preserve" | "ignore-if-before-linefeed" | "ignore-if-after-linefeed" | "ignore-if-surrounding-linefeed" | "inherit" | expr.datatype } widows.attr = attribute widows { text | expr.datatype } width.attr = attribute width { text | expr.datatype } word-spacing.attr = attribute word-spacing { text | expr.datatype } word-spacing.conditionality.attr = attribute word-spacing.conditionality { "retain" | "discard" | expr.datatype } word-spacing.maximum.attr = attribute word-spacing.maximum { text | expr.datatype } word-spacing.minimum.attr = attribute word-spacing.minimum { text | expr.datatype } word-spacing.optimum.attr = attribute word-spacing.optimum { text | expr.datatype } word-spacing.precedence.attr = attribute word-spacing.precedence { text | expr.datatype } wrap-option.attr = attribute wrap-option { "no-wrap" | "wrap" | "inherit" | expr.datatype } writing-mode.attr = attribute writing-mode { "lr-tb" | "rl-tb" | "tb-rl" | "lr" | "rl" | "tb" | "inherit" | expr.datatype } z-index.attr = attribute z-index { text | expr.datatype }