molily: Alternative im XPath-Ausdruck

Beitrag lesen

Hallo Leute,

ich habe folgenden XPath-Ausdruck:

descendant::li[contains(@class, 'own-posting')]/ul/li[not(contains(@class, 'visited'))]/span[contains(@class, 'posting')]
|
descendant::li[contains(@class, 'own-posting')]/ul/li[not(contains(@class, 'visited'))]/span/span[contains(@class, 'posting')]

D.h. da kann noch ein zusätzliches span dazwischen stehen.

(Anmerkung: Ich kann nicht einfach descendant::span verwenden, das würde falsche Resultate liefern.)

Durch diese Oder-Verknüpfung ist der Ausdruck natürlich genau doppelt so lahm. Im Prinzip bräuchte ich ja nur ein

descendant::li[contains(@class, 'own-posting')]/ul/li[not(contains(@class, 'visited'))]/(span | /span/span)[contains(@class, 'posting')]

Aber dieses (span | /span/span) in der Mitte ist ein Syntaxfehler. Anscheinend kann ich die Klammerung nur auf den gesamten Ausdruck anwenden, was ihn aber stark verlangsamt.

Wie kann ich das hinsichtlich Performance optimieren und weniger redundant notieren?

Mathias