To víš že budu povídat. Tak nejprve, mrkni na ukázku XML http://www.w3.org/TR/2006/REC-xml-20060816/#sec-entexpand a zkus tohle předhodit svému parseru. Jak se s tím popral? Zvládl to? Jestli jo, tak to asi bude něco šikovnějšího než prostý regulární výraz.
DTD fragment nelze ani regulárním výrazem odfiltrovat. Možná snad nějakým extrémně složitým s využitím rekurze.
DTD sice existuje i v HTML, ale zde se ho můžeme dovolit ignorovat. V XML rozhodně ne.
A teď k HTML. K žádnému tipování pravděpodobných konců značek nedochází. Strukturou je HTML zcela ekvivalentní s XHTML. Ačkoliv koncová značka chybí, tak existuje jedno a právě jedno místo, kam patří. Netipuje se, nezkouší se. Algoritmus jsem napsal třeba pro Texy. Nezabírá víc než pár řádků kódu.
Znova opakuji, HTML je strukturou ekvivalent s XHTML. Takže neexistuje žádný několikerý zápis téhož! Existuje jen jeden platný zápis.
Tož tak :-)