No problem; I used the `@id` mostly to point out how to restrict the match only to elements that this template converts.

RE `<hr/>` falling outside. yep, that means we generate invalid HTML. I believe `<c:newline/>` is allowed inside a `<c:para>` but a `<hr/>` is not allowed inside a `<p>`.

This means this template should only match newlines that do not occur inside a `c:para`. Maybe something like `match="c:newline[not(ancestor::c:para or ancestor::c:list or ...)]`