Regexp leegyszerűsítése
Kedves mindenki,
beleütköztem egy számomra nem túl triviális problémába. Szerettem volna az XHTML 1.0 DTD-ből PHP osztályokat generálni, de megakadtam ennél a kifejezésnél:
Szépen látszik, hogy a %head.misc elemei plusz az egy kötelező title tag van vegyítve, de ezt a kifejezést valahogy elemeznem kellene, hogy értelmes listát kapjak a kötelező illetve opcionális gyerekelemekről.
A programot szeretném később akár más DTD-kre is használni, tehát a kézzel szerkesztős megoldás nem preferált.
Ha ismertek valamilyen módszert a reguláris kifejezések egyszerűsítésére, kérlek, ne tartsátok vissza.
■ beleütköztem egy számomra nem túl triviális problémába. Szerettem volna az XHTML 1.0 DTD-ből PHP osztályokat generálni, de megakadtam ennél a kifejezésnél:
<!ENTITY % head.misc "(script|style|meta|link|object)*">
<!ELEMENT head (%head.misc;,
((title, %head.misc;, (base, %head.misc;)?) |
(base, %head.misc;, (title, %head.misc;))))>
<!ELEMENT head (%head.misc;,
((title, %head.misc;, (base, %head.misc;)?) |
(base, %head.misc;, (title, %head.misc;))))>
Szépen látszik, hogy a %head.misc elemei plusz az egy kötelező title tag van vegyítve, de ezt a kifejezést valahogy elemeznem kellene, hogy értelmes listát kapjak a kötelező illetve opcionális gyerekelemekről.
A programot szeretném később akár más DTD-kre is használni, tehát a kézzel szerkesztős megoldás nem preferált.
Ha ismertek valamilyen módszert a reguláris kifejezések egyszerűsítésére, kérlek, ne tartsátok vissza.
Rossz kérdés
Vagyis..
Számosság
Ha jol értem...
Nem jó kérdés
Magyarul ezt nem úszod meg egy véges automata nélkül, amelyet a reguláris kifejezés alapján építesz fel.
Azonkívül azt is érdemes meggondolni, hogyha nem egy elem lehetséges gyerekelemeiről van szó, hanem a teljes dokumentumról, akkor a DTD-kkel általában nem reguláris nyelveket határozunk meg, hanem CF (környezetfüggetlen) nyelveket. Tehát ha tényleg elemezni akarod a dokumentumot, esetleg felkínálni a következő lehetséges elemet, akkor nem úszod meg egy általános CF parser megírása nélkül. Aminek nem egyszerű nekiugarni.
Ettől féltem
Hasonló létezik
DOM node-ok egyesével való beszúrására nehézkes ilyet elképzelni, hiszen egy séma előírhatja, hogy ha x elem szerepel, akkor y-nak is kell, és akkor x beszúrása után egyből hibát kapsz, hiszen még nincs ott az y.
Jogos...
könyv erről a témáról?
Köszi,
Felhő
Melyik téma?