CSS e XML: emulare l'elemento br

Tra i tanti test sui CSS da me realizzati, tanti non hanno avuto l'esito sperato. Uno di questi riguardava l'uso dei CSS e del contenuto generato per emulare il comportamento dell'elemento br nei documenti XML.

Partiamo da questo documento XML minimale:


<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="line-breaks-generated-content.css" type="text/css"?>
<root>
    
<para>Lorem ipsum dolor sit amet et <break/> ideo autem aquis concupiscentia huius mundi comparatur.</para>
</root>

In teoria un carattere di interruzione di riga inserito sull'elemento vuoto break dovrebbe sortire l'effetto sperato:


root {
    
    display: block;
    margin: 8px;
    
}

para {
    
    display: block;
    margin: 1em 0;
}

break {
    
    content: '\A';
    white-space: pre;
    display: block;
    
}

In realtà non funziona, perché in XML come anche in HTML un'interruzione di riga deve essere esplicitamente autorizzata dal parser dell'interprete. Infatti è sufficiente aggiungere il namespace XHTML e usare l'elemento br per ottenere il risultato voluto:


<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="line-breaks-generated-content.css" type="text/css"?>
<root xmlns="http://www.w3.org/1999/xhtml">
    
<para>Lorem ipsum dolor sit amet et <br/> ideo autem aquis concupiscentia huius mundi comparatur.</para>
</root>

Torna su