Ich möchte hinter dem „Punkt 2“ nun Content automatisch erzeugen, bisher klappt es nur, wenn ich dem „li“ die class „sub“ gebe. Es soll (hat mir wer gesagt, aber leider nicht wie) möglich sein, festzustellen, dass das „li“ nicht nur einen „a“ sondern auch einen „ul“ Tag beinhaltet.
Nein, das wäre dann ein parent-Selektor, der wurde schon häufiger diskutiert, aber hat es bisher nie in eine Spezifikation geschafft.
Wie auch immer, es gibt andere Möglichkeiten.
Ein wenig Inspiration:
Was auch immer das bringen soll (auch nach Korrektur in deinem Folgepost) - du kannst unmöglich erkennen, ob das li-Element ein Kind vom Typ "ul" hat - es nützt nicht, wenn du im 2. li ein a-Element selektierst - damit umschiffst du nur das Problem und erzeugst eine Latte anderer: z.B. wenn sich das die Menüstruktur (z.B. durch ein CMS generiert) ändert, darfst du das CSS auch angreifen - das ist nicht sinn der Sache.
Die Krücke mit der Klasse ist da schon gut geeignet - die Klasse lässt sich vorab ins HTML einfügen (z.B. durch ein CMS in der routine der Menüerzeugung) oder aber nachträglich per JavaScript.