Mr. Miagi: Datentransfer HTML / XML / XSL

Hallo miteinander,

ich habe eine große Aufgabe vor mir:
Ich habe eine Touchpadoberfläche ein Kabel und eine Maschine mit SoftSPS.

Die Eingabe erfolgt über eine html-Maske, welche die Daten dann über eine XSL in eine XML einschreibt. Denn jene SPS kann nur aus einer XML auslesen.

Ich habe mir mittlerweile Kenntnisse über html, bisl xml und sogar php angeeignet, aber jetzt mit XSL usw, steig ich aus :(

Kann mir das jemand bildlich erklären wie ich vorgehen muss und mir mit einfachen Beispielen erklären wie ich pö a pö diese "wiederbeschreibbaren" (je nachdem welche Knöpfe ich drücke) XML Felder baue und was die XSL damit zu tun hat???

Ich sag schon mal danke für eure Hilfe !!

  1. Hallo,

    ich kanns mir gerade nicht so recht vorstellen... Du überträgst doch die HTML-Maske nicht wieder zurück zum "Server" sondern Formularfelder, oder?

    Viele Grüße
    Siri

    1. Hallo Siri,

      also die Oberfläche soll auf einen Touchlaptop aufgebaut werden. (html)
      Dort werden dann je nachdem Knöpfe gedrückt und die daraus generierten Daten sollen in eine XML geschrieben werden.
      Aus dieser XML kann die SPS lesen und dann (je nachdem) starten.

      Insofern lautet die Antwort auf deine Frage glaube ich ja ^^

      1. Hallo,

        Dort werden dann je nachdem Knöpfe gedrückt und die daraus generierten Daten sollen in eine XML geschrieben werden.
        Aus dieser XML kann die SPS lesen und dann (je nachdem) starten.

        Insofern lautet die Antwort auf deine Frage glaube ich ja ^^

        Dann generier dir doch eine XML (mit PHP kann ich dir da leider nicht helfen). Bring die übermittelten Daten in eine für dich strukturierte Form und bau das XML Element für Element zusammen. Wenn ich das richtig verstehe, dann ist XSL in dem Fall nicht das richtige Mittel der Wahl. Ich nehme an, du kennst die Struktur des geforderten XML?

        Viele Grüße
        Siri

        1. Hallo Siri,

          ehrlich gesagt hab ich von Tuten und Blasen keine Ahnung ^^ Wie gesagt ich kann in html basteln, checke auch wie eine xml da bisl damit zu tun hat und kenne paar php Befehle.

          Ich hab weder Ahnung von Formularfelder etc. noch irgendeine Ahnung wie ich die Aufgabe angehen soll.

          Ich suche hier halt insofern Hilfe, dass mir jemand erklären kann wie die html,xml,xsl etc. zusammenhängen und was wohin geliefert werden muss.
          Ich verstehe, dass man z.b. zu Dokumentenbeginn eine ref Zeile angibt, so dass z.b. ne html weiss, dass es eine CSS gibt.
          Ich verstehe folglich die Verknüpfungen nicht und wie ich am besten diese Kommunikation herstelle.

          Ich hoffe du kannst mir dabei ein wenig helfen.

          Viele Grüße,

          Mr. Miagi

          1. Hallo,

            ehrlich gesagt hab ich von Tuten und Blasen keine Ahnung ^^ Wie gesagt ich kann in html basteln, checke auch wie eine xml da bisl damit zu tun hat und kenne paar php Befehle.

            Ganz schlechte Voraussetzungen...

            Ich hab weder Ahnung von Formularfelder etc. noch irgendeine Ahnung wie ich die Aufgabe angehen soll.
            Ich suche hier halt insofern Hilfe, dass mir jemand erklären kann wie die html,xml,xsl etc. zusammenhängen und was wohin geliefert werden muss.

            Das würde wohl den Rahmen hier sprengen. Ich kann dir nur sagen, das XSL in der Regel dazu benutzt wird, XML-Daten in eine andere Form zu transferieren (z.B. HTML). Da HTML auch eine XML-Variante sein kann, sollte das auch in die andere Richtung funktionieren. Allerdings würde das voraussetzen, dass deine Benutzereingaben im HTML stehen (zumindest im DOM).

            Aber du wirst nicht darum herumkommen, dich gründlich einzulesen. Zumal sehr unkalr ist, wie dein System generell aufgebaut ist.

            Viele Grüße
            Siri

            1. Hallo Siri,

              naja ich lese mich schon seit mehreren Tagen ein und versuche mir dabei wirklich mehr als nur Mühe zu geben. Ich möchte aber nicht in die falsche Richtung laufen oder etwas aufbauen, was mir z.b. nicht hilft. Daher Frage ich natürlich erst nach dem groben Ablauf der beteiligten Dokumente (html,xml etc..) um dann konkrete Fragen stellen zu können.

              Ich versuche dir mal mein System zu erklären:

              Das Display soll zu einem Fahrsimulator gehören. Dort möchte ich auf einer HTML Oberfläche meine Sprache wählen, sowie den Film den ich schauen will. (Übertragung html -> xml). Am Bedienpanel wir der Startknopf gedrückt. (Auslesen SPS -> xml), der Film, auf dem 2.Bildschirm im Simulator soll dann startbereit sein, so dass dieser dann startet, sobald die Insassen ebenfalls den Startknopf drücken.

              1. HTML Oberfläche (+CSS): kein Problem
              2. XML Basis bauen: kein problem
              3. die oben beschriebene Kommunikation (von dir glaub mit Formularfelder beschrieben): Problem

              Manchmal ist es frustrierend solch ein Projekt aufgedrückt zu bekommen, wenn man kein Programmierer ist :(

              1. Hi,

                so ganz verstehe ich dein Problem nicht, aber ich ahne es ...

                1. HTML Oberfläche (+CSS): kein Problem
                2. XML Basis bauen: kein problem
                3. die oben beschriebene Kommunikation (von dir glaub mit Formularfelder beschrieben): Problem

                Manchmal ist es frustrierend solch ein Projekt aufgedrückt zu bekommen, wenn man kein Programmierer ist :(

                wer macht denn sowas?

                Also, extrem simplifizierte Vorgehensweise. Das kann man schöner machen, nur das Prinzip.

                1. du baust dir das HTML-Formular. Das kannst du ja. Den Formularelementen (z.b. input) bist du EINDEUTIGE Namen.

                z.b.

                  
                <form name="config_form" method="post" action="deinphpskript.php">  
                <input type="text" name="film_nr" />  
                <input type="text" name="sprache"  />  
                <input type="submit" value="XML generieren" />  
                </form>  
                
                

                (ob input-Elemente das richtige sind, bezweifle ich mal. Besser wären vermutlich select-Elemente.)

                  
                <form name="config_form" method="post" action="deinphpskript.php">  
                  
                <select name="film_nr">  
                <option value="3">Flugzeugsimulation 3</option>  
                <option value="2">Flugzeugsimulation 2</option>  
                </select>  
                  
                <select name="sprache">  
                <option value="de">deutsch</option>  
                <option value="en">englisch</option>  
                </select>  
                  
                <input type="submit" value="XML generieren" />  
                </form>  
                  
                
                

                Das ist geschafft! Das Formular seht. Was passiert nun, wenn du auf den Submit-Button mit der Beschriftung "XML generieren" klickst?

                Vermutlich bekommst du einen 404-Error, weil dieses Skript "deinphpskript.php" nicht existiert, oder wenn es bereits existiert, der Pfad dorthin nicht stimmt. Das musst du also gewährleisten.

                1. Lege das Skript mit dem Namen "deinphpskript.php" in einem Verzeichnis deiner Wahl an. Es muss via http erreichbar sein, sprich, du musst es (vereinfacht gesagt) mit deinem Browser aufrufen können. Lege es also dorthin, wo dein HTML-Dokument mit dem Formular liegt, welches wir in 1) gebaut haben.

                Die Daten werden also (via der HTTP-Methode POST) an dein Skript geschickt, wenn du auf den Button deines Formulars klickts.

                der Inhalt deines Testscripts namens deinphpskript.php

                  
                <?php  
                  
                print_r($_POST);  
                exit;  
                
                

                was siehst du? Nichts? Dann hast du was falsch gemacht.
                Du siehst was? Dann siehst du jetzt einen assoziativen Array mit Key-Value-Paaren. Im Idealfall.
                Der Key, der Schlüssel des Arrayelements, zeigt jeweils den Namen deines HTML-Formularfeldes an.
                der Value, der Wert des Arrayelements, zeigt jeweils den WERT deines HTML-Formularfeldes an.
                Abgefahren, was? Geschnallt?

                Probier das solange, bis du was siehst. Wenn du was siehst, bzw. DAS siehst, was du sehen willst, klappt die Übertragung von deinem HTML-Formular all the way back auf die Serverseite, wo dein PHP-Script liegt und die Wert entgegennimmt. Du bist kurz davor, aus diesen Werten ein XML zu erstellen

                1. Du hast es geschafft, du hast den $_POST Array vor dir liegen und du siehst haargenau die Werte darin, die du abgesendet hast. Nun willst du ein XML-File generieren. Dazu gibt es ne Menge Möglichkeiten, ich zeige dir die ALLERSIMPELSTE. Vorsicht, um Sicherheit, Validierung und so weiter musst du dich selbst kümmern. Ich gehe in diesem kleinen Exkurs davon aus, dass die Werte so sind, wie sie sein sollten.

                Wir machen das hier alles simpel. Also, du hast jetzt deine gewählte Sprache z.b. hier drin:

                  
                $_POST["sprache"];  
                
                

                diesen Wert kannst du dir zum Beispiel (ich höre schon die Wölfe heulen) umkopieren....ja, kopier das mal um, damit du siehst, was du machst. Und jetzt gibt das umkopierte aus.

                  
                $sprache = $_POST["sprache"];  
                echo $sprache;  
                
                

                Was steht da? Hoffentlich "de" oder "en", wie du es im Formularfeld hinterlegt hast.
                Ich denke, das Prinzip ist klar. Also, bauen wir ein XML.

                Ganz simpel macht man das so, und zwar man baut sich einen String zusammen.

                  
                $xmlString = '';  
                $xmlString .= "<xml>";  
                $xmlString .= "<configuration>";  
                $xmlString .= "<sprache>";  
                $xmlString .= $sprache; // hier dein umkopierter Wert!!!  
                $xmlString .= "</sprache>";  
                $xmlString .= "<film>";  
                $xmlString .= $film_nr; // hier dein anderer umkopierter Wert!!!  
                $xmlString .= "</film>";  
                $xmlString .= "</configuration>";  
                $xmlString .= "</xml>";  
                
                

                diesen String speicherst du jetzt dorthin, wo du ihn haben willst. Nämlich in eine Datei.
                Speichern in PHP macht man vielleicht so:

                  
                $filename = "pfad/zu/deiner/neuen/xmldatei.xml";  
                  
                file_put_contents($filename, $xmlString);  
                
                

                ist alles nicht getestet. Soll ja nur ein kleines Verständnisproblem lösen. Unter pfad/zu/deiner/neuen/ solle jetzt eine Datei namens xmldatei.xml liegen. Diese kann dann dein Programm dort abholen und weiterverarbeiten.

                viele Grüße
                moko

          2. Hallo,

            ehrlich gesagt hab ich von Tuten und Blasen keine Ahnung ^^ Wie gesagt ich kann in html basteln, checke auch wie eine xml da bisl damit zu tun hat und kenne paar php Befehle.

            Ich hab weder Ahnung von Formularfelder etc. noch irgendeine Ahnung wie ich die Aufgabe angehen soll.

            da kann man ja nur hoffen, dass die SPS nicht mehr als einen Lego-Roboter steuern soll.

            Gruß, Jürgen