Lemi: Tag Checker

hallo

gibt es ein tool dass ein xml dokument auf die end-tags durchchecken und auch selber schliessen kann, falls ein end-tag nicht korrekt geschlossen oder beschädigt worden ist?

z.b.
<Marke>Audi</Marke>  anstelle von <Marke>Audi /Marke>

kann mir jemand ein tool empfehlen? danke für die antwort(en) im voraus.

  1. Hallo,

    gibt es ein tool dass ein xml dokument auf die end-tags durchchecken und auch selber schliessen kann, falls ein end-tag nicht korrekt geschlossen oder beschädigt worden ist?

    Checken, ob Tags geschlossen sind tut jeder XML-Parser, aber woher soll denn ein Tool wissen, wann es ein Tag schließen soll, wenn es kein End-Tag findet?

    Gruß
    Franz

    PS: Falls du so ein Wundermachinchen doch noch findest oder selbst zusammenbaust, nehme ichs allerdings gerne ;-)

  2. Hi,

    z.b.
    <Marke>Audi</Marke>  anstelle von <Marke>Audi /Marke>

    Oioioi - das klingt nach massiver künstlicher Intelligenz.
    Viel Spaß beim Implementieren.

    Dein Beispiel klingt übrigens so, als würdest Du einen Ansatz über
    den Hamming-Abstand zwischen Wunsch und Realität versuchen wollen.
    Der mag in diesem Falle tatsächlich funktionieren, ist aber im
    Allgemeinen auch nur "advanced Kristallkugel".

    Viele Grüße
          Michael

    1. Hi,

      z.b.
      <Marke>Audi</Marke>  anstelle von <Marke>Audi /Marke>

      Oioioi - das klingt nach massiver künstlicher Intelligenz.
      Viel Spaß beim Implementieren.

      Für genau den Fehler, und _nur_ den fehler geht folgendes Flexscript:

      --snip endtagcomplete.l ---

      %{
      #include <stdio.h>
      #include <stdlib.h>
      /*
      lex.yy.c: In function yy\_get\_next\_buffer': lex.yy.c:3719: warning: implicit declaration of function read'
      Urgh, shut up! ;-) */
      #include <unistd.h>
      %}
      %option 8bit fast align
      %%
      <INITIAL><<EOF>>        {
                                      return YY_NULL;
                              }
      <INITIAL>"/"/[^/>]*>      {
                              if(*(--yytext) != '<'){
                                  printf("</");
                              } else {
                                 yytext++;
                                 printf("%s",yytext);
                              }
                              BEGIN(INITIAL);
                        }
      ---snap endtagcomplete.l ---

      Dein Beispiel klingt übrigens so, als würdest Du einen Ansatz über
      den Hamming-Abstand zwischen Wunsch und Realität versuchen wollen.
      Der mag in diesem Falle tatsächlich funktionieren, ist aber im
      Allgemeinen auch nur "advanced Kristallkugel".

      Im Besonderen hier ist es das "halting problem". ;-)

      Aber es kann ja sein, daß der/die liebe Lemi immer den gleichen Fehler reinhaut beim schnellen Schreiben.
      So wie ich meist "meherere" anstatt "mehrere" schreibe, wenn's flott gehen soll ;-)

      so short

      Christoph Zurnieden

      PS: die Optionen oben sind für den GNU-Lexer Flex.

    2. Hi,

      z.b.
      <Marke>Audi</Marke>  anstelle von <Marke>Audi /Marke>

      Oioioi - das klingt nach massiver künstlicher Intelligenz.
      Viel Spaß beim Implementieren.

      Dein Beispiel klingt übrigens so, als würdest Du einen Ansatz über
      den Hamming-Abstand zwischen Wunsch und Realität versuchen wollen.
      Der mag in diesem Falle tatsächlich funktionieren, ist aber im
      Allgemeinen auch nur "advanced Kristallkugel".

      Viele Grüße
            Michael

      Hi Michael

      genau so eine wunderantwort habe ich erwartet. es ist mir bewusst das es unmöglich scheint, aber man weis ja nie... oder? ;)

      überigens die tags werden nicht durch "künstlich" intelligente individuen beschädigt. die datenreinhackdamen arbeiten mit einem uralten system. diese daten werden dann importiert von einem anderem system. bevor diese daten dann wieder in ein anderes system (webserver) exportiert werden, sollten diese dokus mit einem SUPERCOOL-XMLENDTAGCHECKER auf herz und nieren überprüft werden, ggf. geflickt...

      keep cool

      1. Hi,

        überigens die tags werden nicht durch "künstlich" intelligente
        individuen beschädigt.

        ich meinte es genau anders herum.

        Programme sind ja generell nicht 'intelligent', sondern einfach
        Anweisungsfolgen (etc.) des Programmierers.
        Alles, was mehr tun soll als das, was der Programmierer naheliegender-
        weise vorgesehen hat, muß _unheimlich_ viel mehr tun als ein Trivial-
        programm - der Aufwand zur Prüfung allgemeiner gegenüber spezifischen
        Fehlern steigt ins Unermeßliche.

        Der Ansatz, den man dafür verwendet, wenn man es trotzdem versucht,
        wird allgemein als "künstlichen Intelligenz" bezeichnet - ein Programm,
        das nicht wirklich intelligent ist, aber Effekte hervorruft, als wäre
        es intelligent.
        Beispielsweise, indem es nacheinander eine große Zahl möglicher Fehler
        prüft (und nicht nur den einen beschriebenen) und beim Antreffen mehre-
        rer Möglichkeiten (das ist nämlich das Hauptproblem!) gemäß irgend eines
        Verfahrens entscheidet, was es für "den Fehler" hält.

        Der Hamming-Abstand zwischen zwei Worten ist eine mathematische "Ähn-
        lichkeitsfunktion" - und die Annahme, der Fehler liege dort vor, wo
        ein Nicht-Tag einem fehlenden Tag möglichst ähnlich ist, wird in vielen
        Fällen richtig raten ("advanced Kristallkugel") Aber manchmal eben auch
        nicht.

        Codierungstheorie ist überhaupt ein lustiges Thema - es gibt tatsächlich
        _fehlerkorrigierende_ Codes, also Mechanismen, die ähnlich wie Prüfsummen
        arbeiden, aber so viel mehr zusätzliche Informationen in die Daten hinein-
        stecken, daß Du am Ende nicht nur erkennen kannst, _daß_ etwas falsch
        ist, sondern sogar, _was_ falsch ist. Allerdings unter der Annahme, daß
        nicht mehr als eine limitierte Anzahl von Fehlern aufgetreten ist ...
        und je mehr Fehler Du abfangen willst, um so mehr Information mußt Du
        in die Daten mit hinein packen.
        Der Aufwand dabei wird relativ schnell immens hoch - aber in einem Szena-
        rio, in dem ganz bestimmte Fehler statistisch sehr wahrscheinlich sind
        (z. B. einzelne Bit-Kipper in einem Speicher oder auf einer Leitung),
        lassen sich auf diese Weise sehr zuverlässig, d. h. mit einer hervorra-
        genden Trefferrate, finden. Deshalb funktioniert beispielsweise Daten-
        übertragung grundsätzlich auch auf fehlerbehafteten Leitungen ...

        Viele Grüße
              Michael

        1. ... ups ...

          arbeiden,

          nein, ich rede mich jetzt nicht auf einen Übertragungsfehler heraus. ;-)

          Ich verfluche viel lieber die fehlende Posting-Preview-Funktion ...

          Viele Grüße
                Michael