Tim Neuner: HTML Tags

Hallo,

muß ein a-Tag immer abgeschlossen werden? Was passiert, wenn ich das nicht mache, also <a name='sprungmarke'> und hier nicht abschließe?

Ich frage deshalb, weil mir aufgefallen ist, dass ein Layer bei mir die Font-Größe aus dem a-Tag übernommen hat, weil ich den a-Tag nicht abgeschlossen hatte. Nach Abschluß behält er seine eigene Font-Anweisung.

Gibt es in HTML außer dem img-Tag noch andere Tags, die keinen Abschluß benötigen?

Gruß, Tim

  1. Hi,

    muß ein a-Tag immer abgeschlossen werden?

    ja.

    Was passiert, wenn ich das nicht mache, also <a name='sprungmarke'> und hier nicht abschließe?

    Das Universum, wie wir es kennen, hört auf zu existieren.

    Am besten vergisst Du, dass es <a name> überhaupt gibt. Sprungmarken werden durch id-Attribute in *beliebigen* Elementen gesetzt.

    Gibt es in HTML außer dem img-Tag noch andere Tags, die keinen Abschluß benötigen?

    Ja, die meisten davon stecken im <head>. In XHTML stellt sich diese Frage übrigens nicht - da wird jedes Element geschlossen, Zweifel kommen gar nicht erst auf. Dies ist ein guter Grund, XHTML statt HTML (bzw. HTML5 nach XML-Regeln) einzusetzen.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi there,

      Am besten vergisst Du, dass es <a name> überhaupt gibt. Sprungmarken werden durch id-Attribute in *beliebigen* Elementen gesetzt.

      Und das von jemandem, der ständig von semantischem Markup labert...

      1. Lieber Klawischnigg,

        Am besten vergisst Du, dass es <a name> überhaupt gibt. Sprungmarken werden durch id-Attribute in *beliebigen* Elementen gesetzt.

        Und das von jemandem, der ständig von semantischem Markup labert...

        wo siehst Du da einen Widerspruch?

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. Hi there,

          wo siehst Du da einen Widerspruch?

          Weil das A-Element der Auszeichnung von Links und Sprungmarken dient?

          1. wo siehst Du da einen Widerspruch?

            Weil das A-Element der Auszeichnung von Links und Sprungmarken dient?

            <a name> ist redundant.
            Jedes Element ist eine potentielle Sprungmarke.
            Damit aber uri-fragmente diese eindeutig anspringen können, müssen die Elemente eindeutig identifiziert sein.

            Das name-Attribut hat kontextabhängig eine verschiedene Funktion.
            Es erfüllt aber auch dort, wo es der Identifizierung dient, keine bessere Dienste als das id-Attribut.

            mfg Beat

            --
            ><o(((°>           ><o(((°>
               <°)))o><                     ><o(((°>o
            Der Valigator leibt diese Fische
            1. Hi there,

              Das name-Attribut hat kontextabhängig eine verschiedene Funktion.
              Es erfüllt aber auch dort, wo es der Identifizierung dient, keine bessere Dienste als das id-Attribut.

              Es ging aber nicht um das name-Attribut sondern um beliebige Elemente als Sprungmarken. Und für mich ist <div id="SPRUNGMARKE"> nicht wirklich besser als <div id="UEBERSCHRIFT">...

              1. Das name-Attribut hat kontextabhängig eine verschiedene Funktion.
                Es erfüllt aber auch dort, wo es der Identifizierung dient, keine bessere Dienste als das id-Attribut.

                Es ging aber nicht um das name-Attribut sondern um beliebige Elemente als Sprungmarken. Und für mich ist <div id="SPRUNGMARKE"> nicht wirklich besser als <div id="UEBERSCHRIFT">

                Ich habe Probleme deine letzte Message logisch in den bisherigen Threadkontext einzuordnen. Geht das nur mir so?

                mfg Beat

                --
                ><o(((°>           ><o(((°>
                   <°)))o><                     ><o(((°>o
                Der Valigator leibt diese Fische
                1. Mahlzeit Beat,

                  Geht das nur mir so?

                  Nein.

                  MfG,
                  EKKi

                  --
                  sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                2. Hi there,

                  Ich habe Probleme deine letzte Message logisch in den bisherigen Threadkontext einzuordnen. Geht das nur mir so?

                  Keine Ahnung, wenn man EKKi glauben schenken darf, dann gibts mindestens noch einen Zweiten, der Schwierigkeiten hat.

                  Was ich sagen wollte: Wenn man zB eine Überschrift mit dem entsprechenden Element auszeichnen sollte, dann gibt es keinen Grund, das bei Sprungmarken nicht ebenso zu machen, und das entsprechende Element für Verweise ist nun einmal das A-Element...

                  1. @@Klawischnigg:

                    nuqneH

                    Was ich sagen wollte: Wenn man zB eine Überschrift mit dem entsprechenden Element auszeichnen sollte, dann gibt es keinen Grund, das bei Sprungmarken nicht ebenso zu machen, und das entsprechende Element für Verweise ist nun einmal das A-Element...

                    Beschränke die Semantik von 'a'-Elementen auf Ausgangspunkte von Sprüngen.

                    Warum sollte man die Entpunkte besonders semantisch auszeichnen? Endpunkt kann doch alles mögliche sein.

                    (Jetzt könntest du entgegnen, dass auch alles mögliche Ausgangspunkt sein kann. Dann wären wir bei XHTML 2.)

                    Qapla'

                    --
                    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                    (Mark Twain)
                  2. Hallo,

                    Was ich sagen wollte: Wenn man zB eine Überschrift mit dem entsprechenden Element auszeichnen sollte, dann gibt es keinen Grund, das bei Sprungmarken nicht ebenso zu machen, und das entsprechende Element für Verweise ist nun einmal das A-Element...

                    der Argumentation kann ich nicht folgen. Eine Überschrift ist als solche ausgezeichnet, weil die im Dokument die Bedeutung einer Überschrift hat. Eine Sprungmarke ist aber kein Selbstzweck, sie ist nicht durch die Dokumentstruktur gegeben, sondern von außen - nämlich dadurch, dass jemand gerade auf diesen Abschnitt des Dokuments verweisen will.

                    Oft sind das Stellen im Dokument, die sich sowieso durch irgendeine Besonderheit auszeichnen, so dass sie ohnehin schon eine ID bekommen haben.

                    Aber kein Buchautor würde auf die Idee kommen, zusätzlich zur Kapitelüberschrift, Kapitelnummer oder Abbildungsnummer noch eine weitere Marke speziell zum Auffinden der Stelle zu setzen.

                    So long,
                     Martin

                    --
                    They say hard work never killed anyone, but I figure, why take the risk?
                      (Ronald Reagan, US-Präsident 1981-1989)
                    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
              2. Lieber Klawischnigg,

                Und für mich ist <div id="SPRUNGMARKE"> nicht wirklich besser als <div id="UEBERSCHRIFT">...

                wieso muss es denn ein <div> sein? Vergleiche:

                <h1>Vögel und ihre Nistplätze</h1>  
                ...  
                <li><a href="#amseln">Amseln</a></li>  
                <li><a href="#tauben">Tauben</a></li>  
                ...  
                <h2 id="tauben">Nistplätze der Tauben</h2>
                

                Wo sollte hier nun ein <a name="..."> benötigt werden?

                Liebe Grüße,

                Felix Riesterer.

                --
                ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
  2. Lieber Tim,

    muß ein a-Tag immer abgeschlossen werden?

    ja.

    Was passiert, wenn ich das nicht mache, also <a name='sprungmarke'> und hier nicht abschließe?

    Dann erzeugst Du im Regelfall invaliden Code.

    Ich frage deshalb, weil mir aufgefallen ist, dass ein Layer bei mir die Font-Größe aus dem a-Tag übernommen hat, weil ich den a-Tag nicht abgeschlossen hatte. Nach Abschluß behält er seine eigene Font-Anweisung.

    Du sprichst von visueller Darstellung. Das regelt man in aller Regel mit CSS. Valider Code ist die Grundvoraussetzung für ein stabiles Rendering in den Browsern. Invalider Code führt dazu, dass Browser "raten", was der Autor wohl gemeint haben könnte. Darstellungsabweichungen sind dann keine Überraschung, sondern eine zu erwartende Folge.

    Gibt es in HTML außer dem img-Tag noch andere Tags, die keinen Abschluß benötigen?

    Ja. Aber um diese Frage wirklich korrekt beantworten zu können, solltest Du schon verraten, welchen (X)HTML-Dialekt Du benutzt (Stichwort "Doctype"). Danach richtet sich nämlich die Syntax in Deinem Dokument, also auch die Konventionen, welche Elemente mit automatisch schließenden Tags, und welche mit implizit schließenden Tags notiert werden können.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Invalider Code führt dazu, dass Browser "raten", was der Autor wohl gemeint haben könnte. Darstellungsabweichungen sind dann keine Überraschung, sondern eine zu erwartende Folge.

      Das gilt für HTML5 aber vermutlich nicht mehr denn dort ist definiert was passieren muss, wenn ungülter Code daherkommt - bis das von sämtlichen Browser aber auch exakt beachtet wird, werden vermutlich noch etwa 15 Jahre vergehen.

      Also ist HTML5 ebenfalls keine Lösung um invaliden Code "trotzdem richtig" zu interpretieren.

  3. muß ein a-Tag immer abgeschlossen werden?

    In erster Linie unterscheide bitte zwischen Tags und Elementen.

    Elemente müssen immer geschlossen werden - in HTML geschieht dies gemäß den SGML-Regeln machmal auch implizit.

    Ein Tag selbst muss gemäß den SGML-Regeln ebenfalls nicht immer geschlossen werden. Du tust aber gut daran, wenn du XHTML-Notation verwendest und sowohl Elemente alsauch Tags immer korrekt beendest.

    Was passiert, wenn ich das nicht mache, also <a name='sprungmarke'> und hier nicht abschließe?

    Das ist in HTML völlig OK, in XHTML-Serialisierungen müsstest du aber <a name='sprungmarke' /> notieren.

    Ich frage deshalb, weil mir aufgefallen ist, dass ein Layer bei mir die Font-Größe aus dem a-Tag übernommen hat, weil ich den a-Tag nicht abgeschlossen hatte. Nach Abschluß behält er seine eigene Font-Anweisung.

    Das lässt darauf schließen, dass du Fehler in deinem HTML hast, das dürfte nicht passieren.

    Gibt es in HTML außer dem img-Tag noch andere Tags, die keinen Abschluß benötigen?

    Ja - wie aber schon erwähnt ist das sehr spezifisch und stark von den SGML-Regeln und dem verwendten Browsern abhängig.

    <p/foo/ ist z.B. genauso ok wie <p>foo</p>

    auch folgende beiden Varianten sind vollig ok

    <ul>  
      <li>foo  
    </ul>  
      
    <ul>  
      <li>foo</foo>  
    </ul>
    

    Solche schreibweise sind aber in komplexeren Dokumenten kaum lesbar oder verständlich - zudem besteht das Risiko dass ein Browser - obwohl es sich um völlig korrekten Code handet - diesen Code uminterpretiert und anders als eigentlich vorgesehen darstellt.

    Darum nochmal: vergiss alles was du zum Thema meinst zu wissen und versuche im eigenen Interesse auf XHTML umzusteigen bzw. XML-Notation zu verwenden.

    Die Regeln sind zwar "strenger" aber dadurch ungleich einfacher weil man nicht darüber nachdenken muss ob es jetzt erlaubt ist oder nicht.

    In XHTML schließst du einfach JEDES Element IMMER ohne Ausnahmen - und wenn es ein inhaltsleeres Element ist eben mit einem Slash im Start-Tag.