Stefan Meier: ASP & XML

Hallo Leute,

ich erstelle via ASP XML-Dateien, die mit Datenbankinhalten gefüllt werden. Diese werden dann via XSL clientseitig zu HTML transformiert. Aufgrund der höheren Kompatibilität möchte ich aber die Transformierung serverseitig durchführen. Wie realisiere ich das am performantesten ? Mir ist bisher nur eingefallen, die XMLs via ASP zu generieren, auf der Platte abzuspeichern und dann mit

<%
  Set XMLDoc = Server.CreateObject("Microsoft.XMLDOM")
  Set XSLDoc = Server.CreateObject("Microsoft.XMLDOM")
  XMLDoc.async = false
  XMLDoc.load(Server.MapPath("test.xml"))
  XSLDoc.async = false
  XSLDoc.load(Server.MapPath("test.xsl"))
  Response.Write(XMLDoc.transformNode(XSLDoc))
%>

zu transformieren. Gibt es die Möglichkeit die Funktion load mit einem String aus der Datenbank zu füttern ? Gibt es vielleicht noch eine komplett andere Variante ?

Vielen Dank schonmal im vorraus.

Gruss, Stefan

  1. Hi Stefan,

    Gibt es die Möglichkeit die Funktion load mit einem String aus der Datenbank zu füttern ?

    Mit load geht das nicht, aber dafür ist die Funktion loadXML vorhanden. Allerdings nimmt loadXML nur einen String, der in UTF-16 oder UCS-2 kodiert ist. Da dein XML aus der Datenbank kommt, sollte es eigentlich keine Schwierigkeit sein.

    Du kannst es übrigens noch ein bißchen beschleunigen, wenn du statt der ProgID Microsoft.XMLDOM die ProgID MSXML2.DOMDocument.4.0 benutzt, und das Property NewParser auf True setzt. Also so:

    Dim xmlDoc
      set xmlDoc = Server.CreateObject( "MSXML2.DOMDocument.4.0" )
      xmlDoc.setProperty "NewParser", True
      xmlDoc.async = false

    Dadurch wird MSXML4 statt MSXML3 oder MSXML 2.6 benutzt, und der schnellere Parser eingesetzt. Zusätzlicher Effekt ist, dass du nicht mehr auf W3C-konforme XSL-Transformationen umschalten musst, die alten, auf einem Working Draft basierenden XSLPattern sind nicht mehr enthalten. Eventuell musst du ein bißchen deine XSL-Dateien ändern, aber das solltest du eh machen. XSLPattern sollte man nicht mehr verwenden, und wird in Zukunft nicht mehr unterstützt.

    Achja, MSXML4 muss natürlich auch auf deinem Server installiert sein.

    Gruß,
    Martin