<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 1/24/2015 1:05 AM, Julian Reschke
      wrote:<br>
    </div>
    <blockquote cite="mid:54C36071.6040807@gmx.de" type="cite">A
      concrete example would be one that shows the markup in the source
      file, and a page break that xml2rfv has generated when it
      shouldn't have.
      <br>
    </blockquote>
    <br>
    Well the problem is that xml2rfc is not generating <i>enough</i>
    page breaks in the HTML output.<br>
    <br>
    I don't have too many complaints about inappropriate page breaks in
    reviewing the <b>plain text</b> output of the current tool.
    Inappropriate page breaks refer to page breaks in the middle of a
    figure, in the middle of a table (particularly in the middle of a
    row--if anything, at least break between rows), or between section
    headings. Additionally, inappropriate page breaks refer to breaks
    that result in widow or orphan problems (a lone paragraph line at
    the bottom or top of a page). The text output gets most of these
    things right, most of the time.<br>
    <br>
    Since folks want specific examples, take a good look at the attached
    files and the specific instances called out below.<br>
    <br>
    I had to make several manual changes to
    draft-josefsson-pkix-textual-10 to get it to have the correct page
    breaking behavior. The PDFs are rendered from Google Chrome on Mac
    OS X, which has some support for the CSS pagination properties. The
    differences are visible between
    "draft-josefsson-pkix-textual-10-original" and
    "draft-josefsson-pkix-textual-10"; a diff file is included.<br>
    <br>
    There are several unacceptable problems with
    draft-josefsson-pkix-textual-10-original.pdf, that are not related
    to the stylesheet:<br>
    <ul>
      <li>widow problem in the paragraph "Unlike legacy PEM encoding..."
        in Section 3<br>
      </li>
      <li>Figure 5 is page-broken</li>
      <li>Figure 7 caption is page-broken from the figure</li>
      <li>Figure 9 caption is page-broken from the figure</li>
      <li>Figure 12 (BEGIN PRIVATE KEY) is page-broken, and also has a
        widow problem</li>
      <li>Section 17.2 (Informative References)'s heading is page-broken
        from the list</li>
    </ul>
    <br>
    Obviously these problems will manifest themselves differently
    depending on page size, font choice, margin widths, and other
    paginated media properties.<br>
    <br>
    Figure 12 is an example of an absolutely non-negotiable problem. The
    specification is very clear that implementations are sensitive to
    whitespace, so the break in Figure 12 renders the figure
    non-conforming or ambiguous. It's not acceptable to be output that
    way in any medium.<br>
    <br>
    To fix these problems, I manually added <tt>@style="page-break-inside:
      avoid;"</tt> to the <tt><pre></tt> artwork tags until
    things got good enough that the PDF output was acceptable. In some
    places I also had to add <tt>"page-break-after: avoid"</tt>. The
    results are shown in draft-josefsson-pkix-textual-10.pdf.<br>
    <br>
    Some figures might be acceptable to break arbitrarily across pages
    (e.g., a large chunk of source code); other figures might be
    acceptable only at designated points (e.g., the breaks between table
    rows or only certain rows in the tables). Some figure formats (e.g.,
    <tt><table></tt>, <tt><tr></tt> in my proposal) support
    these intra-figure hints. Others (e.g., SVG) do not currently but
    might in the future. There is some work in the SVG community around
    pagination and page-break hinting; we should expect that area to
    evolve independently of the v3 vocabulary.<br>
    <br>
    I note that the heading elements <tt><h1>...<h6></tt>
    have <tt>"page-break-after: avoid"</tt> applied to them by
    stylesheet (which is the default rule that I argued for a couple of
    e-mails ago, anyway). Thus the Section 17.2 problem is probably an
    artifact of WebKit/Chrome's support for CSS rather than a grammar
    problem per-se. However, the current v3 draft-15 has attributes for
    page-break-after and page-break-before, but not page-break-inside.
    We need page-break-inside.<br>
    <br>
    The widow problem in Section 3 is symptomatic of a broader problem,
    namely that neither the grammar (definitions) nor the tool
    adequately address window/orphan problems in all relevant contexts.<br>
    <br>
    I did a quick search through the xml2rfc Python source code. The
    term "orphan" appears in nroff.py and paginated_txt.py, but not in
    html.py. This explains a lot.<br>
    <br>
    The default widow/orphan control for <tt><t></tt> elements
    should be 2 lines, while the default for section headings should be
    infinite (i.e., <tt>page-break-inside: avoid</tt> -- it's the same
    thing). If folks can agree on those things, then maybe we don't need
    @widow and @orphan attribute equivalents. But we do need to say in
    the v3 draft that widow/orphan controls are expected in all output
    media, so that authors can rely on common behavior.<br>
    <br>
    If folks can't agree on universal widow/orphan controls, then @widow
    and @orphan attribute equivalents should go in, so that individual
    authors can vary these according to their context-sensitive needs.<br>
    <br>
    <hr size="2" width="100%">There are two other problems:<br>
    <ul>
      <li>Authors' Addresses: first author block is page-broken</li>
    </ul>
    <br>
    This problem seems to be tool-related rather than grammar-related.
    Each author block is enclosed in <div class="avoidbreak"> but
    there is no .avoidbreak style in the stylesheet.<br>
    <br>
    <ul>
      <li>certain elements such as <div> are not terminated
        properly</li>
    </ul>
    <br>
    This problem is because the divs, particularly around figures, don't
    properly encapsulate the figure or encapsulate the figure and
    everything following it (because they are treated as unterminated).
    One of numerous examples is <tt><div id="rfc.figure.15"
      /><div id="spkiexample" /></tt>, which because the
    document is treated as HTML instead of XHTML (by Chrome, anyway),
    meant that Chrome treats this as <tt><div
      id="rfc.figure.15"><div id="spkiexample"></tt> with no
    termination, so when I tried to add <tt>@style="page-break-inside:
      avoid;"</tt>, that ended up applying to the rest of the document.
    You can inspect the DOM yourself in the Chrome DOM Inspector.<br>
    <br>
    I suspect that this parsing issue is related to the header, which is
    schizophrenically declares it as XHTML strict but there is no <tt><?xml?></tt>
    at the top and the http-equiv <tt><meta></tt> tag declares it
    as text/html instead of some kind of XML. I didn't research it too
    thoroughly.<br>
    <br>
    Clearly what was meant by this markup was<br>
    <blockquote><tt><div id="rfc.figure.15"></div><div
        id="spkiexample"></div> </tt><br>
    </blockquote>
    although<br>
    <blockquote><tt><div id="rfc.figure.15"><div
        id="spkiexample"><pre>...artwork...</pre><p
        class="figure">Figure 15:
        ...caption...</p></div></div></tt><br>
    </blockquote>
    actually makes a lot more sense. The IDs "rfc.figure.15" and
    "spkiexample" clearly apply to the entire figure and not just to the
    empty top part.<br>
    <br>
    Sean<br>
  </body>
</html>