Comprensione delle regole per l’analisi di token in contenuti stranieri

Ho una domanda relativa alla fase di esecuzione delle istruzioni nella condizione. Non capisco cosa significhi ciascuna istruzione e quando viene eseguita. Gli esempi con l’aiuto di UA sarebbero molto utili in questo caso.

Ecco un pezzo dalla specifica :

  • Un tag iniziale uno dei seguenti: b, big, blockquote, body, br, center, code, dd, div “dl”, “dt”, “em”, “embed”, “h1”, “h2″, ” h3 “,” h4 “,” h5 “,” h6 “,” testa “,” hr “,” i “,” img “,” li “,” elenco “,” menu “,” meta “,” nobr ” , “ol”, “p”, “pre”, “ruby”, “s”, “small”, “span”, “strong”, “strike”, “sub”, “sup”, “table”, ” tt “,” u “,” ul “,” var “
  • Un nome tag iniziale è “font”, se il token ha attributi denominati “color”, “face” o “size”

    Errore.

    Se il parser è stato originariamente creato per l’algoritmo di parsing del frammento HTML, agire come descritto nella seguente voce “qualsiasi altro tag di inizio”. (caso del frammento)

    Altrimenti:

    Espandi un elemento dalla pila di elementi aperti e poi continua a spuntare più elementi dalla pila di elementi aperti finché il nodo corrente non è un punto di integrazione del testo MathML, un punto di integrazione HTML o un elemento nello spazio dei nomi HTML.

    Quindi, rielaborare il token.

Per evitare equivoci, ho chiamato le istruzioni su ciò che è scritto nel solito carattere tipografico nella mia citazione. Nelle specifiche ci sono posti simili, ma è difficile per me interpretarli correttamente perché non è chiaro in quali punti ci sono differenze.

Guarda “Errore Parse” – il link porta al capitolo degli errori, non c’è un errore specifico. Come prendere questo momento?

Prossima citazione:

Se il parser è stato originariamente creato per l’algoritmo di parsing del frammento HTML, agire come descritto nella seguente voce “qualsiasi altro tag di inizio”. (caso del frammento)

Questa citazione si riferisce a “Errore Parse” o è completamente diversa?

Successivamente vediamo la scritta “Othewise” – che ci dice che tutte queste istruzioni non possono essere eseguite insieme. Ma nonostante questa domanda lo stesso, citazione:

Espandi un elemento dalla pila di elementi aperti e poi continua a spuntare più elementi dalla pila di elementi aperti finché il nodo corrente non è un punto di integrazione del testo MathML, un punto di integrazione HTML o un elemento nello spazio dei nomi HTML.

Quindi, rielaborare il token.

Questa citazione si riferisce a “Errore Parse” o è completamente diversa?

Riassumendo: Esistono solo 2 istruzioni di esecuzione, una delle quali viene eseguita sotto la condizione che il parser was originally created for the HTML fragment parsing algorithm e l’altra istruzione viene eseguita se l’istruzione precedente non supera il test. E tutto questo in generale è “Errore Parse”.

Ma nonostante questo, anche se ho detto correttamente tutto, per favore mi dia esempi con questo o quell’adempimento della condizione, e anche la comprensione delle istruzioni stesse mi rende difficile.


Aggiornamento 1

Penso che la domanda debba essere integrata in modo da poterla sfruttare al meglio.

Come avrai notato, siamo seduti nell’analisi del capitolo in contenuti stranieri. Come puoi capire questo capitolo è inteso quando analizziamo il contenuto in contenuti stranieri, e il contenuto straniero è tutto ciò che è nei nodes svg o matematica.

Quindi diciamo che siamo seduti nel nodo svg e in questo svg abbiamo inserito qualsiasi tag dalla lista che chiama l’errore parse. Prova a scrivere in questo modo:

Hello

– il risultato non ti farà aspettare, vedrai che

Hello

uscirà dal nodo svg e seguilo:

Hello

. E che punto descrive questo comportamento? Correttamente! Secondo! E poi sorge la domanda, e come riprodurre la stessa cosa con il primo object?

Come descrivere il comportamento di un object:

Se il parser è stato originariamente creato per l’algoritmo di parsing del frammento HTML, agire come descritto nella seguente voce “qualsiasi altro tag di inizio”. (caso del frammento)

Il collegamento Errore Parse nella specifica sembra strano. Revisioni precedenti del link spec a https://w3c.github.io/html/syntax.html#parse-errors che per me ha molto più senso.

Se il parser è stato originariamente creato per l’algoritmo di parsing del frammento HTML, agire come descritto nella seguente voce “qualsiasi altro tag di inizio”. (caso del frammento)

Quando il parser sta analizzando un frammento HTML, questa è la prossima cosa che il parser dovrebbe fare con il token dopo aver generato l’errore di analisi. È indipendente dall’innalzamento dell’errore di analisi.

Altrimenti …

Vale a dire quando il parser sta analizzando un intero documento HTML, questa è la prossima cosa che il parser dovrebbe fare con il token dopo aver generato l’errore di analisi. È indipendente dall’innalzamento dell’errore di analisi.

Per vedere la differenza tra l’analisi dei documenti e l’analisi dei casi dei frammenti, vedere questo esempio. Dovrai utilizzare Firefox o Edge, poiché Chrome non sembra seguire le specifiche qui. E dovrai usare gli strumenti di sviluppo per ispezionare il DOM creato.

Abbiamo due div, entrambi i quali sono richiesti per contenere

Hello

, il primo viene analizzato mentre il documento viene analizzato, il secondo viene aggiunto da innerHTML. Il secondo quindi utilizza l’analisi dei casi di frammento e inserisce l’elemento

all’interno dell’elemento . Nel primo div, l’elemento

appare dopo l’elemento .

      Test case   

Hello