Alex Schneider: <select> kein Kind von <form> ?

Hallo,

ich habe aus XML ein XHTML generiert.
Das XHTML habe ich erst ohne Probleme in der TRANSITIONAL-Variante gebracht.
Da ich aber schließlich zur Meinung kam, dass die strikte Variante besser ist (Abtrennung des Designs), ging ich diese Veränderung an.
Nun trat eine Fehlermeldung auf. "select" sei ein unerwartetes Kindelement von "form". Beim Nachschauen in Selfhtml fand ich dabei keinen Hinweis. Und die DTD von der Seite des W3C ist in sich so untereineinander verstrickt, dass ich es (vorläufig) aufgegeben habe, danach zu suchen.
Allerdings glaube ich, der Fehler liegt in der DTD. Weiß jemand Bescheid, ob <select> Kindelement von <form> ist (strikte XHTML-Variante).
Ich werde selbstversändlich noch Nachforschungen auf der W3C-seite machen.

Gruß
Alex

  1. Sup!

    Also in http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd sieht es doch stark so aus, als ob ein select in einem form-element vorkommen dürfte... vielleicht würde ja der generierte Code helfen...

    Gruesse,

    Bio

    1. Hier der Auschnitt:

      <h1>Auswahl</h1>
       <form action="">
         <select size="1" name="Auswahl" onchange="Ankerverweis(this.form.Auswahl.options[this.form.Auswahl.options.selectedIndex].value)">
       <option value="IDALAGNB">.Hauptfunktion</option>
       <option value="IDA3AGNB">1.Unterfunktion</option>
       <option value="IDAJBGNB">2.Unterfunktion</option>
       <option value="IDA4BGNB">2.1.Unterfunktion</option>
       <option value="IDATCGNB">2.1.1.Unterfunktion/option>
       <option value="IDAIDGNB">2.2.Unterfunktion</option>
          </select>
       </form>
      <p> ...

    2. Also ich habe es nachgeprüft:
      Anscheinend ist <select> kein Kindelement von <form>.
      Man muss wohl <fieldset> dazwischensetzen.

      Der Weg von <form> nach <select>
      <!ELEMENT form %form.content;>
      <!ENTITY % form.content "(%block; | %misc;)*">
      <!ENTITY % block "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
      <!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
      <!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
      <!ENTITY % inline.forms "input | select | textarea | label | button">
      <!ELEMENT select (optgroup|option)+>  <!-- option selector -->

      1. Hallo,

        Also ich habe es nachgeprüft:
        Anscheinend ist <select> kein Kindelement von <form>.
        Man muss wohl <fieldset> dazwischensetzen.

        fast richtig. Man kann fieldset nehmen, aber auch ein beliebiges anderes block-Element (evtl. samt weiteren darin vorgeschriebenen Elementen, z.B. bei table muß noch tr und td dazu, erst im td ist dann wieder select, input usw. erlaubt), das inline-Elemente enthalten darf.

        Der Weg von <form> nach <select>
        <!ELEMENT form %form.content;>
        <!ENTITY % form.content "(%block; | %misc;)*">
        <!ENTITY % block "p | %heading; | div | %lists; | %blocktext; | fieldset | table">

        z.b:
        <!ELEMENT p %Inline;>
        (beachte: %Inline; != %inline, DTD sind case-sensitive!)
        <!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">
        weiter wie unten...

        <!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
        <!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
        <!ENTITY % inline.forms "input | select | textarea | label | button">
        <!ELEMENT select (optgroup|option)+>  <!-- option selector -->

        Andreas