Konrad Rudolph: Darstellung von Bildern & Links in XML

Hallo,

Ich schreibe gerade an einer Spezifikation für eine Programmiersprache und lege diese Specs als XML ab, da das praktisch für mich zu parsen ist.
Dabei dachte ich mir aber: wenn ich das eh in XML habe, dann kann ich es ja gleich auch so publizieren, also habe ich vor, mir dazu ein DTD und ein CSS zu schreiben.

Ich möchte -- obwohl technisch kein Problem -- _kein_ XSLT dafür verwenden!
Da stellt stellen sich mir zwei Fragen:

1- wie stellt man Bilder dar?
2- wie macht man Links "klickbar" (und programmiert eine Reaktion)?

und schließlich und endlich: wie macht das XHTML? In den DTD von XHTML 1.0 ist das nämlich nicht spezifiziert und funktioniert trotzdem. Komisch?

Also: (wie) geht das mit XML?

Gruß,
KonRad -

--
Warum der Staat (nicht) töten darf :: polithink.org -
the politicultural e-zine :: http://www.polithink.org
  1. Hallo,

    Also: (wie) geht das mit XML?

    XML beschreibt Dokumentenstrukturen. Wie ein Benutzeragent die XML-Elemente und Attribute konkret umsetzt, muss entsprechend vereinbart werden.

    Der naheliegendste Ansatz fuer Vektorgrafiken in XML-Notation ist SVG, wobei sich Rastergrafiken (GIF, JPEG, PNG) ebenfalls einbinden lassen (<image xlink:href="..." ... />).

    Fuer Links gibt es die XLink-Spezifikation. In SVG kann man Links als <a xlink:href="..."><text ...>...</text></a> formulieren.

    MfG, Thomas

    --
    SVG - Learning By Coding
    http://svglbc.datenverdrahten.de/
    1. Hi,

      Der naheliegendste Ansatz fuer Vektorgrafiken in XML-Notation ist SVG, wobei sich Rastergrafiken (GIF, JPEG, PNG) ebenfalls einbinden lassen (<image xlink:href="..." ... />).

      ach, Bilder gehen auch mit XLink? Ok.

      Fuer Links gibt es die XLink-Spezifikation. In SVG kann man Links als <a xlink:href="..."><text ...>...</text></a> formulieren.

      ;o) na, SVG werde ich wohl eher nicht verwenden, es sei denn, ich werde auch gerichtete Graphen in das Doc einfügen, das geht ja dank OpenOffice recht einfach.

      Aber danke auf jeden Fall.
      Bleibt nur noch eine Frage: wie schafft es XHTML, das ohne XLink-Verwendung hinzubekommen? Schummeln die? Jedenfalls sehe ich in XHTML(-DTD) nirgendwo einen Verweis auf XLink o.ä.

      Gruß,
      KonRad -

      --
      Warum der Staat (nicht) töten darf :: polithink.org -
      the politicultural e-zine :: http://www.polithink.org
  2. Hallo,

    Zu men was Thomas gesagt hat: zur Zeit unterstützt nur Mozilla (in einerger Massen) XLink.
    Eine gute Beispielseite ist http://www.mozilla.org/newlayout/xml/xml-devcon/books/books.xml

    Wobei für images auch das HTML-Element genommen wird.
    Oder generell: http://www.mozilla.org/newlayout/xml/

    »»und schließlich und endlich: wie macht das XHTML? In den DTD von XHTML 1.0 ist das nämlich nicht spezifiziert und funktioniert trotzdem. Komisch?

    XHTML ist HTML (leidglich die Syntax ist nach XML) und HTML wird eben von Browser interprätiert.

    Grüße
    Thomas

    1. Hi,

      Zu men was Thomas gesagt hat: zur Zeit unterstützt nur Mozilla (in einerger Massen) XLink.

      Alles was mir dazu einfällt: I damn don' care. ;-)

      danke für die Beispiele!

      »»und schließlich und endlich: wie macht das XHTML? In den DTD von XHTML 1.0 ist das nämlich nicht spezifiziert und funktioniert trotzdem. Komisch?

      XHTML ist HTML (leidglich die Syntax ist nach XML) und HTML wird eben von Browser interprätiert.

      soll das heißen: XHTML schummelt? Oder wird das durch das Namespacing geregelt?
      Ok, dann nächste Frage: wie klappt das mit den Namespaces? Wenn ich auf den Link gehe (xmlns von XHTML-Docs), komme ich lediglich zu einem absolut nichtssagenden Dokument. Das wird ja wohl kaum die Namespace-Definition sein?

      Gruß,
      KonRad -

      --
      Warum der Staat (nicht) töten darf :: polithink.org -
      the politicultural e-zine :: http://www.polithink.org
      1. Hallo,

        XHTML ist HTML (leidglich die Syntax ist nach XML) und HTML wird eben von Browser interprätiert.

        soll das heißen: XHTML schummelt?

        Nein, HTML schummelt nicht. ;-)
        Wie gesagt, man sollte sich nicht vom X in XHTML  beirren lassen. Es ist nach wie vor HTML.

        Ok, dann nächste Frage: wie klappt das mit den Namespaces? Wenn ich auf den Link gehe (xmlns von XHTML-Docs), komme ich lediglich zu einem absolut nichtssagenden Dokument. Das wird ja wohl kaum die Namespace-Definition sein?

        Jein. Namespaces dienen nur dazu Elemente voneinander unterschieden zu können. Z.B. buch:titel html:titel beide Elemente hiessen 'titel', der Namensraumpräfix ordnet diese Elemente dem entsprechenden Namensraum zu. Es ist aber keines Wegs nötig, dass hinter der Namensraum-URL auch tatsächlich was steht. So könnte man auch  xmlns:xlink="http://www.mydomain.org/blabla" schreiben.
        Namensraum hat also mit einem Dokument in dieser Hinsicht nichts zu tun.

        Da aber XLink eben eine Standard ist interpretieren Browser ihn (ok, zur Zeit nur Mozilla und auch nicht vollständig). XLink ist in dieser Hinsicht nichts anderes als eine Sammlung von Arrtibuten die man beliebigen Elementen zuweisen kann.
        Die Interpretation erfolgt in diesem Fall tatsächlich durch den Namensraum. Ebenso in den Beispielen der Namensraum 'html'.
        Wenn der Browser mit diesen Namensräumen was anfangen kann, interpretiert en die zugehörigen Elemente.

        Grüße
        Thomas

        1. soll das heißen: XHTML schummelt?

          Nein, HTML schummelt nicht. ;-)
          Wie gesagt, man sollte sich nicht vom X in XHTML  beirren lassen. Es ist nach wie vor HTML.

          also, Mozilla macht da sehr wohl einige Unterschiede. XHTML wird sehr viel strikter geparst (wenn man es als application/xml+xhtml angibt) und schränkt z.B. das "laxe" DOM ein.

          Ok, dann nächste Frage: wie klappt das mit den Namespaces? Wenn ich auf den Link gehe (xmlns von XHTML-Docs), komme ich lediglich zu einem absolut nichtssagenden Dokument. Das wird ja wohl kaum die Namespace-Definition sein?

          Jein. Namespaces dienen nur dazu Elemente voneinander unterschieden zu können. Z.B. buch:titel html:titel beide Elemente hiessen 'titel', der Namensraumpräfix ordnet diese Elemente dem entsprechenden Namensraum zu. Es ist aber keines Wegs nötig, dass hinter der Namensraum-URL auch tatsächlich was steht. So könnte man auch  xmlns:xlink="http://www.mydomain.org/blabla" schreiben.
          Namensraum hat also mit einem Dokument in dieser Hinsicht nichts zu tun.

          ok. Und wieso dann diese komische Identifikation über eine URL? Wäre es nicht sinnvoller, zu schreiben xmlns:xlink="<XLINK-Identifier>"? Na, sehr theoretisch, aber wenn sich in einem Dokument ein Link verbirgt denke ich halt, der hat da auch was zu suchen und steht da nicht nur aus Gaudi.

          Da aber XLink eben eine Standard ist interpretieren Browser ihn (ok, zur Zeit nur Mozilla und auch nicht vollständig). XLink ist in dieser Hinsicht nichts anderes als eine Sammlung von Arrtibuten die man beliebigen Elementen zuweisen kann.
          Die Interpretation erfolgt in diesem Fall tatsächlich durch den Namensraum. Ebenso in den Beispielen der Namensraum 'html'.
          Wenn der Browser mit diesen Namensräumen was anfangen kann, interpretiert en die zugehörigen Elemente.

          ok, danke. Das wäre geklärt.
          Dann noch eine (allerletzte ;) Frage:

          ich habe in meinem DTD folgende Deklaration:

          \\ <!ELEMENT link ANY>
          <!ATTLIST link
              link:type   (simple)    "simple"
              link:href   CDATA       #IMPLIED

          ///

          wenn ich jetzt in meiner XML-Datei Folgendes schreibe:

          \\ <link link:href="http://hier_lang">Link</link>
          ///

          dann müßte doch " link:type="simple" " automatisch vom Parser "ergänzt" werden, da ich einen Defaultwert deklariert habe. Wird's aber nicht! In obigem Fall erkennt der Moz mit das nicht als Link, ich muß bei jedem Link-Tag explizit " link:type="simple" " dazuschreiben.

          Gruß,
          KonRad -

          --
          Warum der Staat (nicht) töten darf :: polithink.org -
          the politicultural e-zine :: http://www.polithink.org
          1. Hallo,

            Nein, HTML schummelt nicht. ;-)
            Wie gesagt, man sollte sich nicht vom X in XHTML  beirren lassen. Es ist nach wie vor HTML.

            also, Mozilla macht da sehr wohl einige Unterschiede. XHTML wird sehr viel strikter geparst (wenn man es als application/xml+xhtml angibt) und schränkt z.B. das "laxe" DOM ein.

            XHTML wird nur im Zusammenhag mit XML-Syntax überprüft.
            Die DOM-Interpretation hat damit nichts zu tun bzw. nur im bezu zu XML-Syntax. Die in XHTML verwendete Element sind nach wie vor HTML-elemente.

            ok. Und wieso dann diese komische Identifikation über eine URL?

            Das habe ich ja bereits gesagt: "Namespaces dienen nur dazu Elemente voneinander unterschieden zu können."

            »»Wäre es nicht sinnvoller, zu schreiben xmlns:xlink="<XLINK-Identifier>"?

            Aber genau das passiert, die URL ist genau das was du "XLINK-Identifier" nennst. Durch den Namesraum-URL werden die Elemente u. Attribute einem bestimmten Namensraum zugeordnet.
            Der Namesraumpräfix dient als Abkürzung und wird dann vom Parser aufgelöst.
            Vielleicht hilft es zum Verständnis wenn du die Spez. durchliest http://www.w3.org/TR/REC-xml-names/
            Es wäre ein wenig umständlich wenn man immer sowas schreiben müsste
            <{http://www.mydomain.org/buch}titel>

            »»Na, sehr theoretisch, aber wenn sich in einem Dokument ein Link verbirgt denke ich halt, der hat da auch was zu suchen und steht da nicht nur aus Gaudi.

            Ja, aber was hat das mit dem Ganzen zu tun?
            Außerdem: "Link" ist eine Idee, ob das Element in XML a, link, verweis, verknüpfung, blabla, ost sonst wie heisst spielt keine Rolle.

            Dann noch eine (allerletzte ;) Frage:

            ich habe in meinem DTD folgende Deklaration:

            \\ <!ELEMENT link ANY>
            <!ATTLIST link
                link:type   (simple)    "simple"
                link:href   CDATA       #IMPLIED

            ///
            wenn ich jetzt in meiner XML-Datei Folgendes schreibe:

            \\ <link link:href="http://hier_lang">Link</link>
            ///

            dann müßte doch " link:type="simple" " automatisch vom Parser "ergänzt" werden, da ich einen Defaultwert deklariert habe. Wird's aber nicht!

            Nichtvalidierde Parser sind nicht verpflichtet Vorgabewerte aus der DTD zu unterstützten (validierende schon) und Mozilla hat keinen validierenden XML-Parser.
            Deine XML-Dateien wären bei dieser DTD aber so oder so nciht gültig. Du muss auch den Namesraum in der DTD defineiren: http://aktuell.de.selfhtml.org/artikel/xml/namensraeume/index.htm

            »»In obigem Fall erkennt der Moz mit das nicht als Link, ich muß bei jedem Link-Tag explizit " link:type="simple" " dazuschreiben.

            siehe oben, außerdem da solltest du wohl eher
            <!ATTLIST link
               xlink:type   (simple)    "simple"
               xlink:href   CDATA       #IMPLIED

            verwenden.

            Grüße
            Thomas

            1. Nichtvalidierde Parser sind nicht verpflichtet Vorgabewerte aus der DTD zu unterstützten (validierende schon) und Mozilla hat keinen validierenden XML-Parser.

              schade, aber verständlich.

              Deine XML-Dateien wären bei dieser DTD aber so oder so nciht gültig. Du muss auch den Namesraum in der DTD defineiren: http://aktuell.de.selfhtml.org/artikel/xml/namensraeume/index.htm

              ah, danke für die Info. Ist auch logisch, irgendwie ...

              Gruß,
              KonRad -

              --
              Warum der Staat (nicht) töten darf :: polithink.org -
              the politicultural e-zine :: http://www.polithink.org