Ik heb een leuke XML parser gebouwd die (xml/(x)html) en allerlei ranzige afwijkingen moet kunnen parsen,
Nu kan hij vreselijk veel wazige dingen wel redelijk oplossen, maar ik zit met een vrij groot probleem.
Als ik een document parse met een tag die een argument heeft die tussen de quotes per ongeluk nog een quote heeft kan ik niet zinnig bepalen wat ik moet doen.
Mozilla en IE kunnen het, dus er moet een soort van "regeltje" voor zijn.
De kapotte xml is bijvoorbeeld:
Of natuurlijk een van de "valide" vormen waarin de tag niet self closing is, de laatste quote ook nog eens een = als voorlopend character heeft, of waar er maar een woord voor de laatste quote staat.
Wat is een zinnige oplossing om alsnog de tag juist te kunnen afsluiten?
Ik loop er al een tijdje mijn hoofd op te breken, en de quotes beginnen met nu toch wel behoorlijk te irriteren
Een van de oplossing is denk ik een soort van sanity check bijhouden, die bij het vinden van hele vreemde zooi (argumenten zonder =, of value), hele lange argument values, met daarin /> of > chars, de boel probeert op de lossen door een of quote terug de quote te escapen, en zo een betere resultaat probeert te krijgen.
Een andere oplossing is tot het einde van het document parsen, en dan besluiten in welke tag de nesting mis is gegaag (geen end-tag voor die tag,maar wel end-tags voor de parents van die tag.)
Beide zijn mij eigenlijk veel te fuzzy, en het implementeren ervan lijkt me dan ook geen goed doen voor de parser (zowel qua code, of als resultaat)
Nu kan hij vreselijk veel wazige dingen wel redelijk oplossen, maar ik zit met een vrij groot probleem.
Als ik een document parse met een tag die een argument heeft die tussen de quotes per ongeluk nog een quote heeft kan ik niet zinnig bepalen wat ik moet doen.
Mozilla en IE kunnen het, dus er moet een soort van "regeltje" voor zijn.
De kapotte xml is bijvoorbeeld:
code:
1
| <tag argument="value" argument_two="value with " an extra quote" /> |
Of natuurlijk een van de "valide" vormen waarin de tag niet self closing is, de laatste quote ook nog eens een = als voorlopend character heeft, of waar er maar een woord voor de laatste quote staat.
Wat is een zinnige oplossing om alsnog de tag juist te kunnen afsluiten?
Ik loop er al een tijdje mijn hoofd op te breken, en de quotes beginnen met nu toch wel behoorlijk te irriteren
Een van de oplossing is denk ik een soort van sanity check bijhouden, die bij het vinden van hele vreemde zooi (argumenten zonder =, of value), hele lange argument values, met daarin /> of > chars, de boel probeert op de lossen door een of quote terug de quote te escapen, en zo een betere resultaat probeert te krijgen.
Een andere oplossing is tot het einde van het document parsen, en dan besluiten in welke tag de nesting mis is gegaag (geen end-tag voor die tag,maar wel end-tags voor de parents van die tag.)
Beide zijn mij eigenlijk veel te fuzzy, en het implementeren ervan lijkt me dan ook geen goed doen voor de parser (zowel qua code, of als resultaat)
openkat.nl al gezien?