Nils-Hero: jQuery, Bedeutung eines Selectors

Beitrag lesen

Hallo dedlfix,

es geht mir nicht darum, die Konsistenz an sich zu verteufeln, sondern dann, wenn man sie als ein wohliges Ruhekissen ansieht, um sich Wissen und das Erinnern daran zu ersparen.

Genau das sollte Konsistenz bewirken, und das ist gut so! Gute Syntax kann man aus dem Bauch heraus nutzen. Schlechte muss man nachschlagen.

Es hat auch praktische Effekte, wenn Void element und öffnendes Tag anhand der Syntax unterschieden werden können.

Ich geb mal ein konkretes Beispiel, < sei das öffnende tag, > das schließende, . sei ein Void Element.


>>> import regex
>>> p = regex.compile(r'<(?R)*>|[.]')
>>> [m[0] for m in p.finditer('<.<<><.>>>',overlapped=True)]

['<.<<><.>>>', '.', '<<><.>>', '<>', '<.>', '.']

ich kann also aus einem wohlgeformten Dokument Elemente mittels regulären Ausdrücken nur anhand der Syntax herausfiltern, ohne prüfen zu müssen, welches konkrete Element ich gerade parse. Es ist Kontext-frei.

Wenn allerdings . und < je nach Kontext etwas anderes bedeuten, wie es in HTML 4 und HTML 5 der Fall ist und wenn > manchmal optional ist, und manchmal nicht, wie es bei HTML 5 der Fall ist, dann wird das ganze komplex.

Glücklicherweise erlaubt HTML 5 auch die saubere Schreibweise, <e>...</e> bzw. <e/> statt der kruden Schreibweise <e>... und <e>, und da man Input von außen sowieso säubert, hat es für fremden Quelltext keine praktische Relevanz, außer Performance-Verlusten.

Bleibt nur die Empfehlung, bei eigenem HTML nicht in solche Spielereien zu verfallen.

Gruß, Nils