eeye: CSS parsen und nicht benötigte Selektoren ausfiltern

Beitrag lesen

Hallo Forum

Ich habe neulich schon mal zu dem Thema gepostet und bin auf die hilfreiche Idee gebracht worden, die CSS Selektoren in XPath ausdrücke zu übersetzen.

Auch wenn ich mich erst an einfachen Beispielen versucht habe (Formate für Element, Formate für Klassen) ohne allzu spezielle CSS Eigenschaften auszunutzen, bin ich nun doch schon auf ein Problem gestossen, zu dem mir keine schöne Lösung einfallen will.

Dabei geht es um die Möglichkeit im class-Attribut mehrere CSS Klassen anzugeben:

  
<div class="aaa bbb ccc">foobar</div>  

Einen CSS class-Selektor:

  
.aaa { color:#000000 }  

übersetze ich in folgenden XPath:

  
//*[@class='aaa']  

Das matched aber nur, wenn die Klasse als einzige notiert ist:

  
<div class="aaa">foobar</div>  

sobald 2 oder mehr Klassen notiert werden funktioniert das nicht mehr.

Die einzige Lösung, die mir bisher eingefallen ist, ist das XHTML vorher auf das vorhandensein solcher mehrfach Angaben zu prüfen und dann das matching in mehreren Durchläufen zu machen. Dabei würde bei jedem Durchlauf das class-Attribut so modifiziert, dass nur eine der Klassen enthalten ist.

Funktioniert sicher, gefällt mir aber irgendwie nicht. Ich hätte lieber eine XPath-Lösung...

Hat jemand eine Idee?

Danke & Grüsse,
eeye