迪拉斯: CSS parsen und nicht benötigte Selektoren ausfiltern

Beitrag lesen

Hey,

Man übergibt ihm eine Datei mit CSS Definitionen und eine XHTML Datei.
Das Tool analysiert die XHTML Datei und bearbeitet dann die CSS Datei so, dass nur die in der XHTML Datei tatsächlich benutzten/benötigten Selektoren übrig bleiben.
Danke für jegliche Hinweise zu dem Thema.

Ideen zur Programmierung:

1. Parse das XHTML.

2. Parse das CSS und du hast eine Sammlung von Regeln, z.B.:
        A:link
        .box
        .chmenu TD

3. Iteriere über die Sammlung und wende die Regeln mit XPath an. Logischerweise nimmst du td statt TD (XHTML hat alles in Kleinbuchstaben) und a statt A:link (Pseudoklassen spielen keine Rolle, zum Match reicht es, wenn das Element an sich vorhanden ist).
        alle Elemente, die a heißen
        alle Elemente, die im Attributinhalt des Attributnamens class den String mit Wortgrenzen box enthalten
        alle Elemente, die td heißen, die Nachkommen von Elementen sind, die im Attributinhalt des Attributnamens class den String mit Wortgrenzen chmenu enthalten

3.b) Komplexere Selektoren bilden mehr oder weniger gut auf XPath-Syntax ab. Direkte Nachkommen (CSS > ) sind kein Problem, Nachbarn (CSS + ) sind schon haariger.

4. Wenn ein XPath-Selektor keinen gültigen Match hat, entferne die korrespondierende Regel aus der Sammlung.

5. Am Ende der Iteration gib die verkleinerte Sammlung aus.