2009-09-15 5 views
6

Sto cercando questa definizione per fare il mio renderer HTML conforme un po 'meglio. Attualmente indovina quale spazio bianco tenere, quale crollare e cosa lanciare. Lo standard SGML è difficile da trovare e lo standard HTML non sembra trattare l'argomento con la profondità richiesta per le mie esigenze.Definizione delle regole dello spazio bianco HTML?

Attualmente il mio renderer analizza il codice HTML in un albero e poi fa un layout ricorsiva passare per posizionare tutti gli elementi e il loro contenuto. Sto sperimentando il lancio di alcuni spazi bianchi nella fase di analisi, cioè non l'emissione di spazi di testo solo in determinate circostanze. Il che funziona per la maggior parte dei casi, ma ci sono alcuni casi limite che stanno diventando difficili da gestire.

(Sto anche lavorando su una sottoclasse di editor del controllo HTML e le soluzioni di layout time si stanno rivelando un po 'problematico nell'editor, quindi mi sto occupando di metterle in fase di analisi. t disponibile fino all'ora di riflusso, che è un po 'di tempo dopo aver modificato il documento.)

fuoco via con linkage/fiamme.

risposta

5

penso che la sezione 9.1 White space in the HTML 4 specification è quello che stai cercando.

+0

ho letto che e non ha avuto dettaglio di cui avevo bisogno. Guardando attualmente attraverso la documentazione del parser HTML 5 per vedere come copre gli spazi attorno agli elementi. – fret

3

Se si sta scrivendo il proprio parser HTML, allora vi consiglio caldamente di utilizzare l'algoritmo di analisi in HTML 5 spec. http://www.whatwg.org/html5 Copre un gran numero di casi di spigoli e angoli e stranezze generali del browser. I browser non seguono le regole SGML, ma stanno tutti cercando di fare ciò che dice la specifica HTML 5, o l'equivalente funzionale di esso. Ci sono diversi parser open source disponibili che implementano l'algoritmo, quindi dovrebbe avere tutto ciò che serve.

+0

Ora che ho avuto un po 'di tempo per leggere le specifiche HTML5, bene le parti che si occupano di parsing, non sono più vicino a capire quali caratteri di spazi bianchi finiscono per essere renderizzati e quali scompaiono. – fret

+0

Giusto. Quale spazio bianco è reso è una domanda diversa da quella che hai chiesto, ovvero quale spazio bianco può essere gettato nella fase di analisi. Ricordate che css come white-space: pre può essere applicato da JavaScript a lungo dopo la fase di analisi, in modo dalla fase di analisi non può gettare via qualsiasi spazio bianco che potrebbe poi essere oggetto di una tale domanda. – Alohci

+0

Per inciso, un buon strumento per vedere come effettivamente i browser lo fanno, è usare il Live DOM Viewer di Hixie (http://software.hixie.ch/utilities/js/live-dom-viewer/). Vedrai che mentre crei uno spazio bianco nella casella "mark up to test", "#text:" i nodi vengono creati nel DOM mostrando che lo spazio bianco non viene gettato nella fase di analisi. Nota che i browser attuali/recenti non si comportano esattamente allo stesso modo, ma l'effetto dovrebbe essere abbastanza chiaro se stai usando un browser gecko, webkit o presto. – Alohci