Paul Brunner: xslt-Funktionen

Hallo,

wer hat Erfahrung mit den xslt-Funktionen unter php und weiss wie man die funktion xslt_process() anspricht?

Die offizielle(?) Dokumentation und die zugehörigen Beispiele unter php.net ist offensichtlich nicht korrekt/nicht aktuell.

Wer kennt einen aktuelleren Artikel oder hat zufällig eine funktionierenden Codeschnipsel rumliegen.

xslt-extension: sablotron 0.90
php 4.1.2
apache 1.3.23

Danke Paul

  1. Hallo,

    wer hat Erfahrung mit den xslt-Funktionen unter php und weiss wie man die funktion xslt_process() anspricht?

    Die offizielle(?) Dokumentation und die zugehörigen Beispiele unter php.net ist offensichtlich nicht korrekt/nicht aktuell.

    Wer kennt einen aktuelleren Artikel oder hat zufällig eine funktionierenden Codeschnipsel rumliegen.

    $xsltref=xslt_create() or die(xslt_error());

    $ergebnis=xslt_process($xsltref,$xsldatei,$xmldatei) or die(xslt_error());

    if($ergebnis)
      {
        print $ergebnis;
      }
      else
      {
        print "Die Transformation war nicht erfolgreich.\n";
      }

    @xslt_free($xsltref);

    MfG, Thomas

    1. Nachtrag:

      $ergebnis=xslt_process($xsltref,$xsldatei,$xmldatei) or die(xslt_error());

      Erst die XML-Datei und danach die XSL-Datei angeben (also s <--> m tauschen).

      MfG, Thomas

    2. Nööö, so gehts leider nich.

      Zur Vorgeschichte:
      Bisher lief das ganze unter php4.0.4 mit folgender Syntax wunderbar:

      xslt_process($xmlstring, $xslstring, $resultstring)

      kein create, kein Handler und keine Dateinamen
      nur der Inhalt als String.

      Jetzt hab ich die Syntax umgestellt:

      $xh = xslt_create();
      xslt_set_base($xh, "http://localhost/_labor/xml_test/sample/");
      $result = xslt_process($xh, 'versuch.xml', 'versuch.xsl');
      print $result;
      xslt_free($xh);

      ...und auf einmal sind die selben xml-Dateien nicht mehr well-formed:
      Fehlermeldung: Warning:  Sablotron error on line 1: XML parser error 4: not well-formed (invalid token)

      Also falscher Code oder falsche Configuration?

      Paul

      1. Hallo,

        Zur Vorgeschichte:
        Bisher lief das ganze unter php4.0.4 mit folgender Syntax wunderbar:

        xslt_process($xmlstring, $xslstring, $resultstring)

        kein create, kein Handler und keine Dateinamen
        nur der Inhalt als String.

        Ja, kenne ich auch noch so.

        Jetzt hab ich die Syntax umgestellt:

        $xh = xslt_create();
        xslt_set_base($xh, "http://localhost/_labor/xml_test/sample/");
        $result = xslt_process($xh, 'versuch.xml', 'versuch.xsl');
        print $result;
        xslt_free($xh);

        ...und auf einmal sind die selben xml-Dateien nicht mehr well-formed:
        Fehlermeldung: Warning:  Sablotron error on line 1: XML parser error 4: not well-formed (invalid token)

        Also falscher Code oder falsche Configuration?

        So funktioniert es bei mir:

        <?php

        $xh = xslt_create();
        $result = xslt_process($xh, './xmldocs/buecher.xml','./xmldocs/buecher.xsl');
        print $result;
        xslt_free($xh);

        ?>

        MfG, Thomas

        1. Es schein als ob die neue xslt-extension die mit php4.1.2 kommt unter Windows nicht richtig will.

          Also falscher Code oder falsche Configuration?

          Hast du schon mal mit den letzten beiden Parameteren zur Übergabe von Attributen und Parametern gearbeitet?

          Paul

          1. Hallo,

            Es schein als ob die neue xslt-extension die mit php4.1.2 kommt unter Windows nicht richtig will.

            Sollte wie beschrieben funktionieren. Vielleicht wird der Pfad zu den Dateien nicht gefunden.

            Hast du schon mal mit den letzten beiden Parameteren zur Übergabe von Attributen und Parametern gearbeitet?

            Bisher haben mir Transformationen auf Dateiebene genuegt, aber die weiteren Moeglichkeiten sollten sich mit http://www.php.net/manual/en/function.xslt-process.php erschließen lassen. Im Wesentlichen geht es ja nur darum, mit XML- bzw. XSL-Inhalt gefuellte Variablen (Arrays) an den XSLT-Prozessor zu uebergeben.

            MfG, Thomas

            1. Hallo,

              »»Vielleicht wird der Pfad zu den Dateien nicht gefunden.

              Das Problem war mit xslt_set_base() schnell gelöst.

              Bisher haben mir Transformationen auf Dateiebene genuegt, aber die weiteren Moeglichkeiten sollten sich mit http://www.php.net/manual/en/function.xslt-process.php erschließen lassen.

              Mit der alten Syntax gings jedenfalls nicht. Das war der Grund wieso ich auf die neue Version umgestiegen und auf die Probleme gestossen bin. Egal ich habe jetzt entnervt wieder downgegradet auf 4.0.6 und muss jetzt nach einer anderen Möglichlichkeit suchen Parameter für eine Selektion in eine xml-Datei zu schmuggeln.

              Danke für die Anregungen
              Paul