jojo: Leere Listen validieren

Hey.

Auf meiner Seite gibt es ein "Tab"-System und die Inhalte werden per Ajax(jQuery) aktualisiert. Bzw für jeden tab gibt es eine Liste. Deswegen sind diese Listen am Anfang leer <ul></ul>.
Das ist nicht XHTML Transitional valide.

Wie kann ich das lösen?

Gruß, Jojo

  1. Leere Listen, die durch Ajax befüllt werden sollen, stören den Validator?

    Ganz einfach: Standardmäßig einen <li> mit einem Link auf die nicht-Ajax-Ansicht der Liste einbinden, den Du ggf. mit JavaScript entfernst, bevor die Liste dargestellt wird. Das hat den wesentlichen Vorteil, dass die Liste auch ohne Ajax noch halbwegs brauchbar bleibt und außerdem ist der Validator zufrieden.

    Gruß, LX

    --
    RFC 1925, Satz 6a: Es ist immer möglich, einen weiteren Umweg einzufügen.
    RFC 1925, Satz 11a: Siehe Regel 6a
    1. @@LX:

      nuqneH

      Ganz einfach: Standardmäßig einen <li> mit einem Link auf die nicht-Ajax-Ansicht der Liste einbinden, den Du ggf. mit JavaScript entfernst

      Das halte ich für unsinnig. Wenn Listenelemente dynamisch erstellt und gelöscht werden, kann die Liste halt auch mal leer sein. Dafür ein Dummy-Element erstellen? Nein. Das hat mit vernünftiger Semantik auch nichts zu tun.

      Ich halte <!ELEMENT ul (li)+> in der Spec für schlecht durchdacht; es sollte <!ELEMENT ul (li)*> heißen. Ebenso bei 'ol', auch (tr)* bei 'table'/'thead'/'tfoot'/'tbody' und <!ELEMENT tr (th|td)*>.

      Zwei Möglichkeiten:
      (1) bewusster Verzicht auf das grüne Licht des Validators. So what?
      (2) Dokument als HTML5 deklarieren, da sind leere Listen erlaubt. Irgendwas Gutes muss HTML5 ja mit sich bringen, oder?

      Qapla'

      PS: Sagte ich gerade: auf Validität verzichten? Ja, ich tat es.
          Sagte ich gerade: HTML5 verwenden? Ja, ich tat es.

      --
      Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
      1. [latex]Mae  govannen![/latex]

        Zwei Möglichkeiten:
        (1) bewusster Verzicht auf das grüne Licht des Validators. So what?
        (2) Dokument als HTML5 deklarieren, da sind leere Listen erlaubt. Irgendwas Gutes muss HTML5 ja mit sich bringen, oder?

        (3) Da ohnehin gezwungenermaßen Javascript im Spiel ist, könnte man auch noch die gesamte Liste per JS erzeugen und einhängen bzw. wieder entfernen, statt nur die Einträge einzuhängen.

        Cü,

        Kai

        --
        A workaround for an avoidable problem often adds clutter and overhead to the program which
        could have been avoided by not creating the problem in the first place.(Garrett Smith/clj)
        Foren-Stylesheet Site Selfzeug JS-Lookup
        SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
        1. (3) Da ohnehin gezwungenermaßen Javascript im Spiel ist, könnte man auch noch die gesamte Liste per JS erzeugen und einhängen bzw. wieder entfernen, statt nur die Einträge einzuhängen.

          was in jedem Fall die vernünftigere Variante ist.

          1. @@suit:

            nuqneH

            (3) Da ohnehin gezwungenermaßen Javascript im Spiel ist, könnte man auch noch die gesamte Liste per JS erzeugen und einhängen bzw. wieder entfernen, statt nur die Einträge einzuhängen.

            was in jedem Fall die vernünftigere Variante ist.

            Nein.

            Wenn eine Liste, wo ständig dynamisch Einträge hinzugefügt und gelöscht werden, nun mal temporär keinen Eintrag enthält, wäre es unsinnig, das 'ul'-/'ol'-Element aus dem DOM zu entfernen, um kurz danach wieder eins zu erzeugen und ins DOM einzuhängen.

            Manchmal ist ein Sack eben leer. Man sollte ihn nicht wegschmeißen, wenn man ihn wieder füllen will.

            Qapla'

            PS: „Würde und ein leerer Sack sind nur den Sack wert.“ (Erwebsregel 109)

            --
            Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
            1. [latex]Mae  govannen![/latex]

              Wenn eine Liste, wo ständig dynamisch Einträge hinzugefügt und gelöscht werden, nun mal temporär keinen Eintrag enthält, wäre es unsinnig, das 'ul'-/'ol'-Element aus dem DOM zu entfernen, um kurz danach wieder eins zu erzeugen und ins DOM einzuhängen.

              Aber das Einbinden/Entfernen der einzelnen Listenpunkte ist okay? Seltsame Einstellung. Zumal es ggf. ohnehin schneller geht (-> Rendering), die komplette Liste im Hintergrund zu erzeugen und einzuhängen als live n Elemente hinzuzufügen/entfernen

              Und selbst wenn: Dann macht man das eben nicht, sondern blendet die einmal per JS erzeugte Liste halt über eine Änderung von className entsprechend ein/aus.

              Alles immer noch besser als _nur deshalb_ HTML5 zu benutzen oder die Validität zu ignorieren.

              Cü,

              Kai

              Douglas Crockford über HTML5: I think it is way too big. It has already declared itself as a standard, to the extent that they've criticized Microsoft for being incomplete in their implementation of that standard. It has not gone before W3C yet, it has not been approved by anybody, there has never been any kind of vote or any kind of approval, but they're just insisting that it is the inevitable winner [...] There's some good stuff in it, [...] just that there's good stuff is not justification for something that's that expansive. [...] there's a whole lot of it that I think is way wrong — and start over with something simpler, and try to find some principles which allow us to grow it, and make it more extensible in a way which does not burden us with so much complexity.

              --
              A workaround for an avoidable problem often adds clutter and overhead to the program which
              could have been avoided by not creating the problem in the first place.(Garrett Smith/clj)
              Foren-Stylesheet Site Selfzeug JS-Lookup
              SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
              1. Obwohl ich Deine Einstellung zu HTML 5 größtenteils teile, finde ich es nicht wirklich sinnvoll, eine nicht vorhandene Liste nachträglich einzufügen.

                Erstens benötigt man dazu entweder einen Platzhalter, der ebensowenig semantisch ist wie eine leere Liste. Insofern ist diese Lösung für die HTML-Semantik kein wirklicher Zugewinn.

                Zweitens haben Nutzer ohne JavaScript so keinen Zugriff auf die nachträglich bereitgestellten Inhalte, was die Seite in ihrer Barrierefreiheit deutlich einschränkt.

                Natürlich muss jeder selbst entscheiden, wie er sein HTML/CSS/JS selbst strukturiert - aber er sollte wenigstens die Gründe für seine Entscheidungen kennen.

                Gruß, LX

                --
                RFC 1925, Satz 6a: Es ist immer möglich, einen weiteren Umweg einzufügen.
                RFC 1925, Satz 11a: Siehe Regel 6a
                1. [latex]Mae  govannen![/latex]

                  Erstens benötigt man dazu entweder einen Platzhalter, der ebensowenig semantisch ist wie eine leere Liste. Insofern ist diese Lösung für die HTML-Semantik kein wirklicher Zugewinn.

                  Das kann sicherlich so sein. Hängt aber konkret vom sonstigen HTML ab(1); da dieses hier nicht bekannt ist, kann man dazu wenig sagen. Ein anderes leeres Element einzufügen, um die Liste einzuhängen wäre allerdings Unsinn.

                  Zweitens haben Nutzer ohne JavaScript so keinen Zugriff auf die nachträglich bereitgestellten Inhalte, was die Seite in ihrer Barrierefreiheit deutlich einschränkt.

                  Da der OP die Inhalte der „Tabs“ offenbar per „Ajax“ holt, JS also ohnehin aktiv sein muß, bin ich bei meinen Vorschlägen von aktiviertem JS ausgegangen.

                  Ob das Konzept hier sinnvoll ist oder nicht, kann ich Mangels Kenntnis des Projekts nicht sagen.

                  Cü,

                  Kai

                  (1) d.h. ob an der Stelle, wo die Liste eingesetzt werden soll, bereits anderweitig ein identifizierbares Element vorhanden ist,dem man z.B. per insertBefore die gewünschte Liste folgen oder auch vorausgehen lassen kann.

                  --
                  A workaround for an avoidable problem often adds clutter and overhead to the program which
                  could have been avoided by not creating the problem in the first place.(Garrett Smith/clj)
                  Foren-Stylesheet Site Selfzeug JS-Lookup
                  SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
      2. Hallo, Gunnar!

        Natürlich bleibt es jedem selbst überlassen, ob er jetzt schon HTML5 verwenden möchte, das kann ich durchaus unkommentiert akzeptieren.

        Bewußt auf Validität zu verzichten ist jedoch ein Vorschlag, den ich nur dann geben würde, wenn ich mir absolut sicher wäre, dass der Empfänger die Gründe dafür gut durchdacht hat und auch versteht.

        Gruß, LX

        --
        RFC 1925, Satz 6a: Es ist immer möglich, einen weiteren Umweg einzufügen.
        RFC 1925, Satz 11a: Siehe Regel 6a
  2. Hi,

    Auf meiner Seite gibt es ein "Tab"-System und die Inhalte werden per Ajax(jQuery) aktualisiert. Bzw für jeden tab gibt es eine Liste. Deswegen sind diese Listen am Anfang leer <ul></ul>.
    Das ist nicht XHTML Transitional valide.

    Dann laß die Liste komplett weg und erstelle sie erst bei Bedarf ...

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.