<p:declare-step xmlns:p="http://www.w3.org/ns/xproc" xmlns:px="http://www.daisy.org/ns/pipeline/xproc" xmlns:pxi="http://www.daisy.org/ns/pipeline/xproc/internal" type="pxi:shift-obfl-marker" exclude-inline-prefixes="#all" version="1.0"> <p:documentation xmlns="http://www.w3.org/1999/xhtml"> <p>Move '-obfl-marker' declarations to inline boxes.</p> </p:documentation> <p:input port="source"> <p:documentation xmlns="http://www.w3.org/1999/xhtml"> <p>Boxes must be represented by <code>css:box</code> elements. All block boxes must have at least one descendant inline box and inline boxes must have no descendant block boxes. '-obfl-marker' properties must be declared in <code>css:_obfl-marker</code> attributes.</p> </p:documentation> </p:input> <p:output port="result"> <p:documentation xmlns="http://www.w3.org/1999/xhtml"> <p>For each element in the input that has a <code>css:_obfl-marker</code> attribute and is not a descendant of an inline box and not an inline box itself, the attribute is moved to the first descendant or following inline box within the same block (which may be the element itself). If there is no such element, the attribute is placed on an empty <code>css:_</code> element inserted as the last child of the last preceding inline box (in the same block). In the former case, if the attribute is moved to a <code>css:box</code> element that already has a <code>css:_obfl-marker</code> attribute in the input, the '-obfl-marker' declarations are prepended to it.</p> </p:documentation> </p:output> </p:declare-step>