All Downloads are FREE. Search and download functionalities are using the official Maven repository.

xml.css-to-obfl.xpl Maven / Gradle / Ivy

There is a newer version: 6.2.3
Show newest version


    
    
        Convert a document with inline braille CSS to OBFL (Open Braille Formatting Language).
    
    
    
    
    
    
    
    
    
    
    
    
    
    
      
        px:error
        px:assert
      
    
    
      
        px:css-cascade
      
    
    
      
        css:adjust-boxes
        css:eval-counter
        css:eval-string-set
        css:eval-target-content
        css:eval-target-text
        css:flow-from
        css:flow-into
        css:label-targets
        css:make-anonymous-block-boxes
        css:make-anonymous-inline-boxes
        css:make-boxes
        css:make-pseudo-elements
        css:make-table-grid
        css:new-definition
        css:parse-content
        css:parse-properties
        css:parse-stylesheet
        css:preserve-white-space
        css:render-table-by
        css:shift-id
        css:shift-string-set
        css:split
      
    
    
      
        pxi:propagate-page-break
      
    
    
      
        pxi:shift-obfl-marker
      
    
    
      
        pxi:make-obfl-pseudo-elements
      
    
    
      
        pxi:extract-obfl-pseudo-elements
      
    
    
      
        pxi:deep-parse-page-and-volume-stylesheets
      
    
    
      
        css:parse-counter-styles
      
    
    
    
        
        
        
            
                Make css:page, css:volume, css:text-transform, css:counter-style, css:after,
                css:before, css:footnote-call, css:duplicate, css:alternate, css:top-of-page,
                css:_obfl-alternate-scenario*, css:_obfl-on-toc-start,
                css:_obfl-on-collection-start, css:_obfl-on-volume-start, css:_obfl-on-volume-end,
                css:_obfl-on-collection-end, css:_obfl-on-toc-end, css:_obfl-volume-transition and
                css:_obfl-on-resumed attributes.
            
        
        
            
                Make css:flow attributes.
            
        
        
            
                ::-obfl-alternate-scenario pseudo-elements must participate in the normal flow.
            
        
        
            
                
                    
                        Make css:before, css:after, css:duplicate, css:alternate and
                        css:footnote-call pseudo-elements from css:before, css:after, css:duplicate,
                        css:alternate and css:footnote-call attributes.
                    
                
                
                    
                        Make css:_obfl-on-toc-start, css:_obfl-on-collection-start,
                        css:_obfl-on-volume-start, css:_obfl-on-volume-end,
                        css:_obfl-on-collection-end, css:_obfl-on-toc-end, css:_obfl-on-resumed and
                        *[@css:_obfl-scenario] pseudo-elements.
                    
                
                
                    
                        Apply possible relative rules.
                    
                    
                
                
            
            
                
            
        
    
    
    
    
    
    
    
        
    

    
        
            Make css:page, css:volume, css:text-transform, css:counter-style, css:top-of-page and
            css:_obfl-volume-transition attributes, css:after, css:before, css:duplicate,
            css:alternate, css:footnote-call, css:_obfl-on-toc-start, css:_obfl-on-volume-start,
            css:_obfl-on-volume-end, css:_obfl-on-toc-end, css:_obfl-on-resumed and
            css:_obfl-alternate-scenario pseudo-elements.
        
    
    
    
        
    
    
        
    
    
        
    
    
        
            Delete @css:text-transform, @css:counter-style and @css:_obfl-volume-transition
            attributes.
        
    
    
    
        
            Make css:display, css:render-table-by and css:table-header-policy attributes.
        
    
    
    
        
            Layout tables as lists.
        
    
    
    
        
            
                Need another pass because css:render-table-by inserts new styles.
            
        
    
    
    
        
            
        
        
            
        
        
        
        
    
    
    

    
        
            
                Extract css:_obfl-on-toc-start, css:_obfl-on-collection-start,
                css:_obfl-on-volume-start, css:_obfl-on-volume-end, css:_obfl-on-collection-end and
                css:_obfl-on-toc-end pseudo-elements into their own documents.
            
        
    
    
    
        
            
                Make css:content, css:string-set, css:counter-reset, css:counter-set,
                css:counter-increment and css:_obfl-marker attributes.
            
        
        
            
                Evaluate css:string-set attributes.
            
        
    
    
    
    
        
            Make css:string, css:text, css:content, css:counter and css:custom-func elements and
            text nodes from css:content attributes. 
        
    
    
    
    
        
            Split into a sequence of flows.
        
        
            
                
                    Make css:flow attributes.
                
            
        
        
        
        
            
                Extract named flows based on css:flow attributes and place anchors (css:id
                attributes) in the normal flow.
            
        
        
        
            
                
                
                
            
        
    
    
    
        
            Make css:id attributes. 
        
    
    
    
      
    
    
    
        
            Evaluate css:content elements. 
        
    
    
    
        
            
                Make css:white-space, css:display and css:list-style-type attributes.
            
        
        
            
                Make css:white-space elements from css:white-space attributes.
            
        
        
            
                Force "obfl-scenario" elements to be blocks.
            
        
        
            
                Mark display:-obfl-toc elements.
            
        
        
            
                Mark display:-obfl-list-of-references elements.
            
        
        
            
                Treat display:-obfl-toc and display:-obfl-list-of-references as block.
            
        
        
            
                Create table grid structures from HTML/DTBook tables.
            
        
        
            
                Make css:box elements based on css:display and css:list-style-type attributes. 
            
        
        
        
            
                Move css:render-table-by, css:_obfl-table-col-spacing, css:_obfl-table-row-spacing
                and css:_obfl-preferred-empty-space attributes to 'table' css:box elements.
            
            
            
            
            
            
            
                
            
            
            
            
        
    
    
    
    
        
    
    
    
        
            Evaluate css:counter elements. All css:counter-set, css:counter-increment and
            css:counter-reset attributes in the output will be manipulating page counters. 
        
        
            
        
        
            
        
    
    
    
        
            
                
                    Rename -obfl-collection() to flow() so that css:flow-from will process them.
                
                
                
                
                
            
            
                
                    Change scope 'document' to '-obfl-document' when ::-obfl-on-volume-start or
                    ::-obfl-on-volume-end pseudo-elements are present.
                
                
            
            
                
                    Check that elements with "display: -obfl-list-of-references" contain exactly one
                    -obfl-collection() or flow().
                
                
            
        
        
            
                Evaluate css:flow elements. 
            
        
        
            
                Wrap unevaluated css:flow in block box so that we can be sure that when evaluated
                later inline boxes have no descendant block boxes (see also
                css:make-anonymous-inline-boxes).
                
                Note that this is currently a pointless step because unless they are a descendant of
                a "list-of-references" element, unevaluated css:flow elements will be ignored (and
                result in a warning) later.
            
            
            
            
        
    
    
    
        
            Evaluate css:text elements. 
        
    
    
    
        
            
                Wrap/unwrap with inline css:box elements.
            
        
        
            
                Don't support 'volume' within named flows. Don't support 'volume', 'page' and
                'counter-set' within tables.
            
        
        
            
                Move css:counter-set attribute to css:box elements.
            
            
                
                    
                
            
            
            
        
        
            
                Move css:page attributes to css:box elements.
            
            
            
        
        
            
                Move css:volume attributes to css:box elements.
            
            
            
        
        
            
                :top-of-page is only supported on block elements.
            
        
        
            
                Move css:string-set attributes to inline css:box elements. 
            
        
        
            
                Move css:_obfl-marker attributes to inline css:box elements. 
            
        
    
    
    
        
            Move css:id attributes to inline css:box elements.
        
    
    
    
        
            
                All css:_ elements except for root elements, top-level elements in named flows (with
                css:anchor attribute), and empty elements with a css:id, css:string-set or
                css:_obfl-marker attribute within a css:box element should be gone now.
                FIXME: We ignore that css:_ elements with a css:_obfl-on-resumed attribute may exist
                if an inline `::-obfl-on-resumed` pseudo-element contains a block
                pseudo-element. 
            
        
        
            
                Wrap inline css:box elements in block css:box elements where necessary. 
            
        
        
            
                Make css:margin-left, css:margin-right, css:margin-top, css:margin-bottom,
                css:padding-left, css:padding-right, css:padding-top, css:padding-bottom,
                css:border-left-pattern, css:border-right-pattern, css:border-top-pattern,
                css:border-bottom-pattern, css:border-left-style, css:border-right-style,
                css:border-top-style, css:border-bottom-style and css:text-indent attributes.
            
        
        
            
                
            
        
        
            
                Convert CSS properties to corresponding OBFL attributes.
            
            
                
            
            
        
        
            
                
            
            
                
            
            
                Remove text nodes from block boxes with no line boxes.
            
        
        
            
                Don't support 'page-break-before' and 'page-break-after' within tables or
                '-obfl-toc' elements.
            
        
    
    
    
        
            Split flows into sections.
        
        
            
                
                    Insert forced page breaks to satisfy the 'page' and 'volume' properties. 
                
            
            
                
                    Convert css:page-break-after="auto-right" to a css:page-break-before on the
                    following sibling, and css:volume-break-after="always" to a
                    css:volume-break-before on the following sibling.
                
                
                
                
                
            
            
                
                    Split before css:counter-set attributes, and before css:volume-break-before
                    attributes with value 'always'. 
                
            
        
        
            
                
                    Move css:page, css:counter-set and css:volume attributes to css:_ root element.
                
                
                
                
                
                
                
                
            
            
                
                    Delete properties connected to the top of a box if it is not the first part of a
                    split up box. Delete properties connected to the bottom of a box if it is not
                    the last part of a split up box.
                
                
            
            
                
                    Move around and change page breaking related properties so that they can be mapped
                    one-to-one on OBFL properties.
                
                
                    
                        Propagate css:page-break-before, css:page-break-after,
                        css:page-break-inside, css:volume-break-before and css:volume-break-after
                        attributes. (Needs to be done a second time because the box tree has been
                        broken up by css:split. css:page-break-before='right' will now be propagated
                        all the way to the root box.)
                    
                
                
                    
                        Rename 'auto-right' (the special forced page break value to satisfy the
                        'page' property) to 'right'.
                    
                    
                    
                
                
                    
                        Convert css:page-break-before="avoid" to a css:page-break-after on the
                        preceding sibling and css:page-break-after="always|right|left" to a
                        css:page-break-before on the following sibling.
                    
                    
                    
                    
                    
                
                
                    
                        Move css:page-break-after="avoid" to last descendant block.
                    
                    
                    
                
            
        
    
    
    
        
            
                Move css:margin-top of blocks that have a preceding (non-empty) block to
                css:margin-bottom of their preceding block, and rename other css:margin-top to
                css:margin-top-skip-if-top-of-page.
            
            
                
                
                
                
            
            
                
            
        
    
    
    
        
            
        
        
            
        
        
            
        
        
            
        
        
            
        
        
            
        
        
            
        
        
            
        
        
            
        
    
    
    
    
        
            
        
        
            
        
        
            
        
        
            
        
        
            
        
        
            
        
    
    
    
    
    
    
    
      
        
      
      
        
      
    
    
    
    
    
    
    
    

    
    

    
    
        
            
        
        
            
        
    
    





© 2015 - 2024 Weber Informatics LLC | Privacy Policy