Matthias: Metazeichen: auch das Apostroph

Hallo,

im Zusammenhang mit dem Programmieren mit PHP und der Metazeichen-Maskierung ist mir aufgefallen: müßte auf der Seite

http://de.selfhtml.org/html/allgemein/zeichen.htm#html_eigene

nicht neben den Zeichen < > & " auch das Zeichen ' ( & apos; ) aufgeführt werden? Immerhin kann es doch wie " verwendet werden.

Ich hoffe ich bin mit diesem Anliegen hier an der richtigen Adresse.

Grüße - Matthias

  1. Hi,

    im Zusammenhang mit dem Programmieren mit PHP und der Metazeichen-Maskierung ist mir aufgefallen: müßte auf der Seite
    http://de.selfhtml.org/html/allgemein/zeichen.htm#html_eigene

    </faq/#Q-19>

    nicht neben den Zeichen < > & " auch das Zeichen ' ( & apos; ) aufgeführt werden?

    Nein, diese Entity ist nicht im XML-Core definiert. Übrigens schreibt sich "&apos;" ohne Leerzeichen.

    Immerhin kann es doch wie " verwendet werden.

    Nicht wirklich, wirklich nicht.

    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,

      nicht neben den Zeichen < > & " auch das Zeichen ' ( & apos; ) aufgeführt werden?

      Nein, diese Entity ist nicht im XML-Core definiert. Übrigens schreibt sich "&apos;" ohne Leerzeichen.

      Doch, siehe http://www.w3.org/TR/REC-xml/#syntax:
      To allow attribute values to contain both single and double quotes, the apostrophe or single-quote character (') MAY be represented as "&apos;", and the double-quote character (") as "&quot;".

      Oder http://www.w3.org/TR/REC-xml/#sec-predefined-ent:
      4.6 Predefined Entities
      [...] A set of general entities (amp, lt, gt, apos, quot) is specified for this purpose. [...]
      All XML processors MUST recognize these entities whether they are declared or not.

      Bei HTML sieht das allerdings anders aus - dort ist &apos; tatsächlich nicht definiert.

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. Hallo,

        Bei HTML sieht das allerdings anders aus - dort ist &apos; tatsächlich nicht definiert.

        In welchem HTML? Wenn es sich um XHTML handelt, muß das Apostroph doch erlaubt sein, da es in XML erlaubt ist, oder nicht? Wenn es sich um SGML-HTML handelt, dann mag das sein. Das weiß ich nicht, habe das Dokument mit der Definition nicht ganz verstanden. ;)

        Aber selbst wenn es nicht erlaubt ist: in der Praxis wird es doch verwendet, oder? In diesem Fall wäre eine Erwähnung auf jeden Fall nicht schlecht, und wenn es kein "offizielles" Metazeichen ist, dann kann man ja auch darauf hinweisen.

        Grüße - Matthias

        1. Hi,

          Bei HTML sieht das allerdings anders aus - dort ist &apos; tatsächlich nicht definiert.
          In welchem HTML?

          In HTML.

          Hätte ich XHTML gemeint, hätte ich XHTML geschrieben. Da XHTML immer auch XML ist, wäre die Aussage ja auch sinnlos, daß es in XML definiert sei, in XHTML aber nicht.

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        2. Hallo,

          Bei HTML sieht das allerdings anders aus - dort ist &apos; tatsächlich nicht definiert.

          In welchem HTML?

          HTML ist HTML ;-)

          »»Wenn es sich um XHTML handelt, muß das Apostroph doch erlaubt sein,

          Ist es auch http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_Special_characters

          Aber selbst wenn es nicht erlaubt ist: in der Praxis wird es doch verwendet, oder?

          Nein, nicht als &apos; in HTML, (sondern nur als » ' «) weil es ja für HTML nicht definiert ist.

          In diesem Fall wäre eine Erwähnung auf jeden Fall nicht schlecht, und wenn es kein "offizielles" Metazeichen ist, dann kann man ja auch darauf hinweisen.

          Ja, aber erst in der Seite http://de.selfhtml.org/html/xhtml/unterschiede.htm.
          Ich habe mir jetzt notiert, dass wir es dort erwähnen sollen.

          Grüße
          Thomas

          1. Hallo,

            HTML ist HTML ;-)

            Okay:)

            Aber selbst wenn es nicht erlaubt ist: in der Praxis wird es doch verwendet, oder?

            Nein, nicht als &apos; in HTML, (sondern nur als » ' «) weil es ja für HTML nicht definiert ist.

            Gut, also wenn Ihr sagt, daß Attribute in der Form name='inhalt' in als HTML gedachten Dokumenten in der Praxis nicht verwendet werden, glaube ich das. Ich habe es bisher aus irgendwelchen krummen Gründen manchmal doch verwendet und dachte wohl von mir auf andere schließen zu können.

            Ja, aber erst in der Seite http://de.selfhtml.org/html/xhtml/unterschiede.htm.
            Ich habe mir jetzt notiert, dass wir es dort erwähnen sollen.

            Mein Argument ist: wenn sich jemand Gedanken macht, welche Metazeichen er maskieren muß, dann wird er auf http://de.selfhtml.org/html/allgemein/zeichen.htm#html_eigene nachschauen, aber wohl kaum auf den Gedanken kommen, dies unter http://de.selfhtml.org/html/xhtml/unterschiede.htm zu eruieren. Für so jemanden wäre diese Information also verloren. Und da die Rubrik "HTML/XHMLT" für jemanden, der SELFHTML nur oberflächlich kennt, so klingt, als könnte er da was zu HTML *und* XHTML gültiges erfahren, liegt es doch sehr nahe, es dort zu erwähnen.

            Grüße - Matthias

            1. Hallo,

              Aber selbst wenn es nicht erlaubt ist: in der Praxis wird es doch verwendet, oder?

              Nein, nicht als &apos; in HTML, (sondern nur als » ' «) weil es ja für HTML nicht definiert ist.

              Gut, also wenn Ihr sagt, daß Attribute in der Form name='inhalt' in als HTML gedachten Dokumenten in der Praxis nicht verwendet werden, glaube ich das. Ich habe es bisher aus irgendwelchen krummen Gründen manchmal doch verwendet und dachte wohl von mir auf andere schließen zu können.

              Du hast mich missverstanden.
              In der Form » name='inhalt' « wird das oft genug verwendet, ist auch erlaubt und machmal ja auch nötig (z.B. in Verb. mit JavaScript-Anweisungen).
              Was in HTML jedoch nicht möglich ist, ist die Verwendung in der Form vom &apos;.

              Ja, aber erst in der Seite http://de.selfhtml.org/html/xhtml/unterschiede.htm.
              Ich habe mir jetzt notiert, dass wir es dort erwähnen sollen.

              Mein Argument ist: wenn sich jemand Gedanken macht, welche Metazeichen er maskieren muß, dann wird er auf http://de.selfhtml.org/html/allgemein/zeichen.htm#html_eigene nachschauen,

              Und dort findet er auch diejenigen Zeichen die für HTML erlaubt sind.

              aber wohl kaum auf den Gedanken kommen, dies unter http://de.selfhtml.org/html/xhtml/unterschiede.htm zu eruieren. Für so jemanden wäre diese Information also verloren.

              Warum? In der Seite http://de.selfhtml.org/html/index.htm gibt es den Punkt XHTML und HTML
              Wenn jemand sich für XHTML interessiert wird diesen Punkt wählen und von da kommt er auf die "Unterschiede" seite.

              »»Und da die Rubrik "HTML/XHMLT" für jemanden, der SELFHTML nur oberflächlich kennt, so klingt, als könnte er da was zu HTML *und* XHTML gültiges erfahren, liegt es doch sehr nahe, es dort zu erwähnen.

              Er erfährt ja über HTML und XHTML, aber für Lesefaulheit können wir nichts. Wenn jemand nicht lesen will, ist es egal wo wir die Infos unterbringen, der wird sie so oder so nicht finden. Außerdem wäre es verwirrend wenn wir Mitten von HTML plötzlich Dinge über XHTML erzählen würden.

              Also &apos; gehört erwähnt, aber eben an der "richtigen" Stelle. ;-)

              Grüße
              Thoma

              1. Hallo Thomas,

                In der Form » name='inhalt' « wird das oft genug verwendet, ist auch erlaubt und machmal ja auch nötig (z.B. in Verb. mit JavaScript-Anweisungen).

                name='inhhalt' ist erlaubt? Aber dann ist doch das ' ein "HTML-eigenes Zeichen" und müßte auch als solches aufgezählt werden? Weil es u.U. maskiert werden muß, wenn man Benutzereingaben ausgibt. Ich bin verwirrt.

                Er erfährt ja über HTML und XHTML, aber für Lesefaulheit können wir nichts. Wenn jemand nicht lesen will, ist es egal wo wir die Infos unterbringen, der wird sie so oder so nicht finden. Außerdem wäre es verwirrend wenn wir Mitten von HTML plötzlich Dinge über XHTML erzählen würden.

                Das Argument verstehe ich. Aber man muß auf der anderen Seite doch auch bedenken, daß die Metazeichen einer Sprache ein sicherheitskritischer und damit sehr wichtiger Bereich sind und wenn man den Anspruch hat, die Entwicklung besserer und sicherer Webseiten unterstützen zu wollen, kann man an dieser Stelle doch mal ein Zugeständnis machen. Schließlich wird es ja auch mit der Ergänzung keine vollständige Aufzählung der Metazeichen von XHTML geben, und die Leute werden sich damit mit der von HTML zufrieden geben, zumal die wenigsten HTML und XHTML genau auseinanderhalten können. Oder schließe ich da wieder von mir auf andere? ;)

                Grüße - Matthias

                1. Hallo Matthias,

                  In der Form » name='inhalt' « wird das oft genug verwendet, ist auch erlaubt und machmal ja auch nötig (z.B. in Verb. mit JavaScript-Anweisungen).

                  name='inhhalt' ist erlaubt?

                  Ja. Man darf entweder doppelte Anführungszeichen oder einfache Anführungszeichen als Attributwerttrenner benützen.

                  http://www.w3.org/TR/html401/intro/sgmltut.html#h-3.2.2

                  Aber dann ist doch das ' ein "HTML-eigenes Zeichen" und müßte auch als solches aufgezählt werden?

                  Nein. Es ist kein HTML-eigenes-Zeichen, so wie du es meinst. Die Verwendung von  » ' « als Attributwerttrenner kommt aus SGML (und HTML ist eine SGML-Anwendung) und ist optional (empfohlen wird aber »"«).
                  D.h. du kannst »name='inhhalt'« oder »name="inhhalt"« verwenden.
                  Klar, man kann darüber rätseln warum im HTML nur das »"« als _benannte_ HTML-Entity »&quot;« definiert wurde. Aber es ist nunmal so.

                  Weil es u.U. maskiert werden muß, wenn man Benutzereingaben ausgibt.

                  Nicht desto trotz: du kannst selbstverständlich auch » ' « als Entity notieren (wie jedes anderen Zeichen auch) wenn du es für die Ausgabe so brauchst, aber eben nicht als benannte Entity, sondern als nummerische Entity: »&#39;«.

                  Er erfährt ja über HTML und XHTML, aber für Lesefaulheit können wir nichts. Wenn jemand nicht lesen will, ist es egal wo wir die Infos unterbringen, der wird sie so oder so nicht finden. Außerdem wäre es verwirrend wenn wir Mitten von HTML plötzlich Dinge über XHTML erzählen würden.

                  Das Argument verstehe ich. Aber man muß auf der anderen Seite doch auch bedenken, daß die Metazeichen einer Sprache ein sicherheitskritischer und damit sehr wichtiger Bereich sind und wenn man den Anspruch hat, die Entwicklung besserer und sicherer Webseiten unterstützen zu wollen, kann man an dieser Stelle doch mal ein Zugeständnis machen.

                  Nein, das können wir nicht. &apos; ist als Entity nunmal nicht für und in HTML definiert. Es beim HTML zu erwähnen wäre also nicht nur ein fachlicher Fehler, sondern würde nur dazuführen dass die meisten das "X" überlesen würden und sich später ärgern und beschweren, dass die Doku fehlerhaft sei.

                  Schließlich wird es ja auch mit der Ergänzung keine vollständige Aufzählung der Metazeichen von XHTML geben,

                  Ich weiss nicht was du meinst (es gibt ja nur 5 solche Entities für XHTML), aber bitte verlange jetzt nicht, dass ich dir sofort die komplette neue Seite präsentiere. Ich habe gesagt, dass wir dies in der "Unterschiede"-Seite berücksichtigen werden und wir werden uns dabei sicher bemühen, dies so verständlich wie möglich zu machen.

                  Oder schließe ich da wieder von mir auf andere? ;)

                  http://de.selfhtml.org/html/xhtml/unterschiede.htm ;-)

                  Grüße
                  Thomas

                  1. Hallo nochmal,

                    Aber dann ist doch das ' ein "HTML-eigenes Zeichen" und müßte auch als solches aufgezählt werden?

                    Nein. Es ist kein HTML-eigenes-Zeichen, so wie du es meinst.

                    Ich glaube, da liegt der Kern meines Mißverstehens. HTML-eigene Zeichen sind nach Definition vermutlich diejenigen, für die HTML einen eigenen Namen hat (benannte Entities).

                    Ich habe den Begriff im Gegensatz dazu so aufgefaßt, daß es Zeichen sind, die in HTML eine bestimmte Bedeutung haben (Metazeichen?) und daher unter Umständen maskiert werden müssen (angelehnt an den Text, der in SELFHTML dazu steht: "Wenn in Ihrem Text Zeichen vorkommen, die in HTML eine bestimmte Bedeutung haben, müssen Sie diese Zeichen maskieren.").

                    Nun, ' hat in HTML eine besondere Bedeutung und muß unter Umständen maskiert werden, nämlich wenn man es in einen Attributwert schreibt, der mit ' umschlossen ist. Aus diesem Grund würde dieses Zeichen doch also in eine Liste passen, die überschrieben ist mit: "Wenn in Ihrem Text Zeichen vorkommen, die in HTML eine bestimmte Bedeutung haben, müssen Sie diese Zeichen maskieren.", oder? Es wäre doch im Gegenteil sogar fahrlässig, wenn wichtige Zeichen in solch einer Liste fehlen, da es zu Sicherheitslücken führen kann.

                    (Zugegeben, das Semikolon hat auch eine bestimmte Bedeutung in HTML, muß aber dennoch nicht maskiert werden. Insofern ist der Satz vielleicht sowieso nicht zu 100% korrekt.)

                    Weil es u.U. maskiert werden muß, wenn man Benutzereingaben ausgibt.

                    Nicht desto trotz: du kannst selbstverständlich auch » ' « als Entity notieren (wie jedes anderen Zeichen auch) wenn du es für die Ausgabe so brauchst, aber eben nicht als benannte Entity, sondern als nummerische Entity: »&#39;«.

                    Ja, das ist klar. Das benanntes Entity als solches ist mir nun wirklich nicht so wichtig. :)

                    Grüße - Matthias

                    1. hi,

                      (Zugegeben, das Semikolon hat auch eine bestimmte Bedeutung in HTML

                      nein.

                      gruß,
                      wahsaga

                      --
                      "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
                      1. Hallo Wahsaga,

                        suboptimale Antwort: "nein"

                        Bessere Antwort: "Das Semikolon mag zwar Entities abschließen, man kann aber dennoch nicht davon sprechen, daß es eine bestimmte Bedeutung in HTML hat, da ..."

                        (Bitte "..." noch ergänzen.)

                        Danke - Matthias ;)

                        1. hi,

                          suboptimale Antwort: "nein"

                          tja, eine nicht mal suboptimale aussage ging halt voraus :-)

                          gruß,
                          wahsaga

                          --
                          "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
                    2. Hallo,

                      HTML-eigene Zeichen sind nach Definition vermutlich diejenigen, für die HTML einen eigenen Namen hat (benannte Entities).

                      Nun ja, korrekt wäre wenn wir bei den HTML-eigene-Zeichen von Zeichen sprechen die (sonst) für/in Markup-Deklarationen benuzt werden. ;-)
                      Zusätzlich gib es in HTML auch die sog. benannte Entities.

                      Ich habe den Begriff im Gegensatz dazu so aufgefaßt, daß es Zeichen sind, die in HTML eine bestimmte Bedeutung haben (Metazeichen?) und daher unter Umständen maskiert werden müssen

                      Das ist korrekt. ;-)

                      Nun, ' hat in HTML eine besondere Bedeutung und muß unter Umständen maskiert werden, nämlich wenn man es in einen Attributwert schreibt, der mit ' umschlossen ist.

                      Das ist zwar korrekt und wie gesagt es ist zulässig Attributwerte mit »'« zu trennen (wobei das »'« nur als Alternative genannt wird), aber sowohl die SGML- als auch die HTML-Spez. verwenden durchgängig »"« als Attributwerttrenner.
                      Die HTML-Spez sagt dazu "Single quote marks can be included within the attribute value when the value is delimited by double quote marks, and vice versa."
                      Also name="dies ist ein 'text'" oder name='dies ist ein "text"'

                      »»Aus diesem Grund würde dieses Zeichen doch also in eine Liste passen, die überschrieben ist mit: "Wenn in Ihrem Text Zeichen vorkommen, die in HTML eine bestimmte Bedeutung haben, müssen Sie diese Zeichen maskieren.", oder? Es wäre doch im Gegenteil sogar fahrlässig, wenn wichtige Zeichen in solch einer Liste fehlen, da es zu Sicherheitslücken führen kann.

                      Ich verstehe zwar deine Argumente, sehe die Sache aber anders. SELFHTML ist ja keine Spezifikation und so muss es ja auch nicht auf jede Kleinigkeit eingehen. Die gängige Praxis ist die Verwendung von »"« als Attributwertbegrenzer, und zudem ist das »'« nicht wirklich wichtig. Wenn es im Normalen Text vorkommt darf es problemlos als »'« geschrieben werden. Wogegen <,> und & auch im normalen Text besser maskiert werden sollten.

                      (Zugegeben, das Semikolon hat auch eine bestimmte Bedeutung in HTML, muß aber dennoch nicht maskiert werden. )

                      Es hat weder in HTML  noch in XHTML eine besondere Bedeutung, alleinstehend ist es ein schlichtes Interpunktionszeichen. Und manchmal darf man es sogar als Entity-Begrenzer weglassen (obwohl davon schwer abgeraten wird, siehe das zweite "Note" in http://www.w3.org/TR/html401/charset.html#h-5.3 oder die zweite "Anmerung" in http://www.edition-w3.de/TR/1999/REC-html401-19991224/charset.html#h-5.3

                      Grüße
                      Thomas