Temat: Dopełnianie HTML'a
Pamiętam że robiłem coś takiego w ograniczonym stopniu zakładając że
1. < otwiera znacznik i zaraz po nim (bez spacji itp jak być powinno) następuje znacznik.
2. Nie obchodziły mnie kompletnie atrybuty, wymagałem tylko zamknięcia > i parzystej liczby "" lub ''. Nie wdawałem się w szczegóły
3. W momencie gdy trafiałem na <(znacznik)+śmieci> odkładałem go na stos.
4. Jak znajdywałem </(znacznik)> to zdejmowałem go ze stosu.
Teraz kilka prostych trików:
- zamknięcie musi być ZAWSZE takie jak ostatni element na stosie. Dlaczego ? Bo html nie dopuszcza np:
<p><a>test</p></a>
Jeżeli warunku nie spełniono to ręcznie dopisuje zamknięcie i lecę dalej ze skryptem na tej samej zasadzie.
- Jeżeli stos zejdzie do zera a pojawi się znacznik zamykający - zostanie on zignorowany
A dokument sprawdzałem znak po znaku. <[a-zA-Z] triggerował procedurę otwarcia tagu a </a-zA-Z procedurę zamknięcia wraz z całym sprawdzaniem.
Prosty parser a sprawdzał się wręcz idealnie. Sugerowałem bym coś w ten deseń. Nie jest to skomplikowane rozwiązanie i pozostawia wiele do życzenia ale dopóki dokument chociaż przypominał HTML - okiełznał go bez problemu.
Dariusz Półtorak edytował(a) ten post dnia 20.03.13 o godzinie 18:24