Martin Bischoff: ApacheModuleXSLT kompiliert nicht

Hallo Leute.

Ich möchte serverseitig XML nach HTML wandeln um dann dieses auszuliefern. Der Server ist ein Dual-Xenon der (leider) unter Windows2000 zu laufen hat. Zum Apache v2.0.44 habe ich mir xalan-c-1.4 und xerces-c2_1_0 heruntergeladen.

Um die Transformationen zum Laufen zu bekommen muss, laut Anleitung, die Datei ApacheModuleXSLT.dll über LoadModule eingebunden werden. Davor muss sie allerdings noch kompiliert werden.

Und hier ist das Problem. Obwohl ich die Änderungen an den VC++ Libraries wie beschrieben durchgeführt habe, entdeckt VisualStudio beim Kompilieren 96 Fehler und 52 Warnungen. Zumindest etwas in der Größenordnung.

Die Xerxespfade habe ich eingebunden, nur die auf die Apachesourcen konnte ich nicht finden (mein erstes Mal mit VisualStudio). Allerdings ist das wohl nicht der wirkliche Grund für die vielen Fehler, da die zugehörigen Meldungen Syntax Fehler etc. lauten. Ach ja, ich benutze das deutsche VisualStudio 6.0 mit SP5

Kann mir jemand sagen was ich falsch mache, bzw. kann mir jemand die fertig kompilierte Datei schicken? Es sei denn das verstösst gegen irgendwelche Rechte und/oder Lizenzen.

Danke und Gruß
  Martin

  1. hallo Martin,

    Ich möchte serverseitig XML nach HTML wandeln um dann dieses auszuliefern.

    Ich bin mir keineswegs sicher, ob ich dich richtig verstehe. Was möchtest du denn hier "wandeln"? Ich kann mir eher vorstellen, daß du mit Hilfe von XML  -  vielleicht irgendwelchen Vorlagen  -  HTML-Dokumente erstellen lassen möchtest. Schau dir dazu mal an, wie das mit der Apache-Dokumentation realisiert wird. Die hast du auch lokal zum Auseinandernehmen. Ist nicht ganz leicht nachzubauen, aber das dürfte ein gutes Beispiel dafür sein, wie aus XML heraus HTML-Dokumente zusammengeklebt werden können.

    Der Server ist ein Dual-Xenon der (leider) unter Windows2000 zu laufen hat. Zum Apache v2.0.44 habe ich mir xalan-c-1.4 und xerces-c2_1_0 heruntergeladen.

    Die 2.0.44 läuft unter Windwos eigentlich gut. Xalan und Xerces sind Apache-Projekte, die man sich ruhig mal anschauen sollte, aber ich glaube, die brauchst du gar nicht. In http://xml.apache.org/xalan-c/faq.html kannst du lesen: "Xerces-C++ is a validating XML parser written in a portable subset of C++. Xerces-C++ makes it easy to give your application the ability to read and write XML data"

    Um die Transformationen zum Laufen zu bekommen muss, laut Anleitung, die Datei ApacheModuleXSLT.dll über LoadModule eingebunden werden.

    Welche Anleitung meinst du? "XalanTransform uses the XalanTransformer class and the associated C++ API to apply an XSL stylesheet file to an XML document file and write the transformation output to either an output file or to a stream. XalanTransform takes command-line arguments for the XML document to be transformed, the XSL stylesheet to apply, and an optional output file argument. If you omit the third argument, XalanTransform writes the transformation output to a stream that is sent to standard out (the console)" (http://xml.apache.org/xalan-c/samples.html.
    Wenn ich das richtig lese und verstehe, hat es mit deiner Aufgabenstellung nichts zu tun.

    Und hier ist das Problem. Obwohl ich die Änderungen an den VC++ Libraries wie beschrieben durchgeführt habe, entdeckt VisualStudio beim Kompilieren 96 Fehler und 52 Warnungen. Zumindest etwas in der Größenordnung.

    Das können je nach Kompilierlauf noch mehr oder auch ein paar weniger sein. Die "Projekt-files", die du mit den Apache-Sourcen mitgeliefert bekommst, sind leider ziemlich lieblos und fehlerhaft zusammengeschustert. Ich habe es mehrfach versucht, mir meinen Indianer (mit VStudio) selber neu zu übersetzen und habe es bisher noch nicht fehlerfrei geschafft.

    Ach ja, ich benutze das deutsche VisualStudio 6.0 mit SP5

    Ich gelegentlich auch.

    Kann mir jemand [...] die fertig kompilierte Datei schicken?

    Selbst wenn ich eine hätte, würde das wenig Sinn machen, weil ich schließlich für mein eigenes System kompiliere.

    Es sei denn das verstösst gegen irgendwelche Rechte und/oder Lizenzen.

    Nicht, so weit es den Apache angeht. Einschränkungen kann es aufgrund des Compilers VC6 geben, da muß ich nochmal nachlesen.

    Grüße aus Berlin

    Christoph S.

    1. hallo Martin,

      Ich möchte serverseitig XML nach HTML wandeln um dann dieses auszuliefern.
      Ich bin mir keineswegs sicher, ob ich dich richtig verstehe. Was möchtest du denn hier "wandeln"? Ich kann mir eher vorstellen, daß du mit Hilfe von XML  -  vielleicht irgendwelchen Vorlagen  -  HTML-Dokumente erstellen lassen möchtest.

      So etwas soll ich auch machen. Ich war vielleicht etwas zu kurz gestern abend. Also ausführlich: Ich bin gerade bei einem Projekt bei dem Ergebnisse der Experimente in XML-Dateien abgespeichert werden. Diese sollen nun (unter anderem) dazu verwendet werden eine bzw. mehrere Webseite zu den einzelnen Experimenten zu erstellen. Sprich mit XSLT aus diesen XML-Dateien HTML-Dateien erstellen. Da das ja nicht jeder Client irgendwie so toll beherrscht wollte ich es dem Server überlassen. Und in SelfHTML habe ich gelesen dass Xalan genau jenes macht.

      Die 2.0.44 läuft unter Windwos eigentlich gut.

      Bei mir auch. :-)

      Xalan und Xerces sind Apache-Projekte, die man sich ruhig mal anschauen sollte, aber ich glaube, die brauchst du gar nicht. In http://xml.apache.org/xalan-c/faq.html kannst du lesen: "Xerces-C++ is a validating XML parser written in a portable subset of C++. Xerces-C++ makes it easy to give your application the ability to read and write XML data"

      Xerces brauche ich wohl für Xalan, jedenfalls nach http://xml.apache.org/xalan-c/getstarted.html#download "If you do not already have it, you must also download the Xerces-C++ 2.1.0 build as indicated below."

      Um die Transformationen zum Laufen zu bekommen muss, laut Anleitung, die Datei ApacheModuleXSLT.dll über LoadModule eingebunden werden.
      Welche Anleitung meinst du? "XalanTransform uses the XalanTransformer class and the associated C++ API to apply an XSL stylesheet file to an XML document file and write the transformation output to either an output file or to a stream. XalanTransform takes command-line arguments for the XML document to be transformed, the XSL stylesheet to apply, and an optional output file argument. If you omit the third argument, XalanTransform writes the transformation output to a stream that is sent to standard out (the console)" (http://xml.apache.org/xalan-c/samples.html.
      Wenn ich das richtig lese und verstehe, hat es mit deiner Aufgabenstellung nichts zu tun.

      Ich bezog mich auf die Datei ApacheMod.html (bzw. ApacheMod.xml) die im Samples-Ordner von Xalan-c zu finden ist. Kurz gesagt wird dort beschrieben wie man diese ApacheModuleXSLT.dll so in den Apache als Modul einbinden kann, dass bei einem Aufruf einer HTML-Seite diese direkt aus der XML-Datei durch eine XSLT-Datei erzeugt wird. Also eigentlich genau was ich wollte, die XML (und XSLT) Dateien liegen auf dem Server und durch Klicken auf ein Experiment wird die dazugehörige HTML-Seite erzeugt und ausgeliefert. Es wäre so einfach wenn ich die .dll kompiliert bekommen würde.

      Xalan in Java geschrieben wird wahrscheinlich so etwas ähnliches machen, allerdings habe ich nicht wirklich kapiert wie man das Servlet einbinden muss.

      Wobei ich inzwischen wahrscheinlich vom on-the-fly Erzeugen abkomme, da die Daten eher statisch sind. Sprich wenn ein neues Experiment reinkommt werden einmal die HTML-Dateien erzeugt und fertig ist die Sache. Wobei es natürlich schön wäre wenn es auch anders klappen würde.

      Grüße aus Manchester
        Martin