Re: How can we support in-block newline break preservation

On 9/01/2016, at 8:29 am, Jinkai Wang <jinkai.wang@oracle.com> wrote:

> To whom it may concern,
> I'm an application developer from Oracle Service Cloud. Recently we have a concern about how to have the tidy  preserve line breaks in a multi-line text.
> For example, this is the input:
> 
> rnt_tidy (buf_in=0x933b430 "<DIV><SPAN STYLE=\"font-family:System Default;\">hello world : item 1\nitem 2\nitem 3. Finish</SPAN></DIV><DIV><SPAN STYLE=\"font-family:System Default;\">Jinkai Hello World</SPAN></DIV>", buf_out=0x9311690, bad_tag_check=1, tidy_opts_ptr=0xfff97114)

Tidy respects (or at least tries very hard to respect)
HTML semantics.  <div><span>...</span></div> is *not*
a context where HTML semantics preserves white space.

Since *browsers* don't preserve line breaks in this context,
it is unclear why you want Tidy to do so.

If the input is well-formed XML, you can force white space
preservation by
(1) adding the xml:space="preserve" attribute to the
element(s) where you want this to happen and
(2) telling tidy that the input is -xml

This should work in a browser too.

Alternatively, if there is a <span> where you want line breaks
preserved, use a <pre> instead.  The semantics of HTML require
line breaks preserved in <pre> elements.

This will work in a browser too.

For display purposes, you can use style="white-space: pre" to
force line breaks to be preserved and white space not to be
collapsed.  By experiment, Tidy doesn't notice that and will
do its own white-space processing.  (This is CSS semantics,
not HTML semantics, hence the difference.)

I suspect that the fundamental problem is not with Tidy but
with the way you are using HTML.

Received on Tuesday, 12 January 2016 03:47:42 UTC