Torsten: Performance

Hallo,

gibt es allgemeine Tipps oder Mööglichkeiten, die Performance einer über Xalan generierten HTML-Datei aus xml und xslt zu verbessern?
Durch die Länge der xml-Datei und den Techniken aus dem xslt ist die HTML 10 MB groß geworden :-(
Hab aber schon mehrmals geschaut, kann im sheet nix weglassen.

Gibt es da allgemeine Dinge zur Performanceverbesserung?

Gruß
Torsten

  1. Hi,

    gibt es allgemeine Tipps oder Mööglichkeiten, die Performance einer über Xalan generierten HTML-Datei aus xml und xslt zu verbessern?
    Durch die Länge der xml-Datei und den Techniken aus dem xslt ist die HTML 10 MB groß geworden :-(
    Hab aber schon mehrmals geschaut, kann im sheet nix weglassen.
    Gibt es da allgemeine Dinge zur Performanceverbesserung?

    Ohne zu wissen, wie die einzelnen Dateien (XML, XSLT, HTML) aussehen, kann man da schwer was sagen.

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hallo Andreas,

      zum posten sind die Dateien leider zu lang. das xml-file hat um die 10000 Zeilen, das xslt-sheet um die 2700 und die html seite noch vielmehr.

      Was kann ich da nun tun?

      MFG
      Torsten

      1. Hi,

        um welche Art Daten handelt es sich denn? Gib doch mal ein paar Beispiel-Elemente und passende XSL-Anweisungen.

        Kannst Du das Ergebnis nicht zwischenspeichern (Cache) und auf mehrere HTML-Seiten verteilen?

        MfG
        Danny

        1. Hallo,

          das Problem ist dass das sheet dynamisch reagieren muß und ich so "gezwungen" wurden bin, viele Select-Boxen auf Wunsch ein bzw. auszublenden, um dem Nutzer so dynamische Select-Boxen vorzugaukeln.

          Dazu nutze ich in xslt die Techniken des ...not(following-sibling::...) und not(preceding-sibling::...) und wo das nicht geht setzte ich Java-Script ein. Dies ist notwendig, weil ich aus dem xml-file Attribute zum füllen von 5 aufeinander bauenden Select-Boxen benötige. Bei entsprechender Auswahl wird dann ein ganz bestimmter "Datensatz" von vielen ausgeblendeten eingeblendet.
          Dementsprechend lang ist auch die erzeugt html-Datei geworden.

          Ein Beispiel für eine solche Selection:

          <root>
                <form action="" name="formname">
                 <select size="1" id="allcgname" name="auswahlname" onChange="GoName(this.options[this.selectedIndex].value)" style="width:170px; background-color:#FFFFC1; font-size:9pt; font-family:Arial,sans-serif;">
                  <option value="[ select ! ]">[ select ! ]</option>
                 </select>
                        <select size="1" id="Version_Name" name="auswahlnameversion" onChange="GoName(this.options[this.selectedIndex].value)" style="width:170px; background-color:#FFFFC1; font-size:9pt; font-family:Arial,sans-serif; display:none">
                  <option selected="selected" value="[ select ! ]">[ select ! ]</option>
                  <xsl:for-each select=".../.../...">
                   <xsl:if test="@Version='...'">
                    <xsl:if test="not(preceding-sibling::.../@...=@...)">
                     <xsl:copy-of select="."/>
                     <xsl:variable name="vname" select="@..."/>
                     <option value="{$vname}"><xsl:value-of select="@..."/></option>
                    </xsl:if>
                   </xsl:if>
                  </xsl:for-each>
                 </select>
                       </form>
               </root>

          Ich hoffe das kann dir weiterhelfen.

          MFG
          Torsten

          1. Mhmmm... Wirkt sehr kompliziert. Mir ist immer noch nicht klar, wozu man auf einer einzigen Webseite 10 MB an Select-Boxen braucht...

            Kannst Du das nicht irgendwie anders lösen, mit JSP oder PHP? Wenns für ein Intranet ist, kannst Du bestimmt auch iframes verwenden und jede Select-Box in einen eigenen Frame packen, damit nicht jedes Mal die komplette Seite aufgebaut werden muss.

            Dann noch zwei Tipps zur Verkürzung des HTML-Quellcodes:

            GoName(this.options[this.selectedIndex].value)

            könntest Du kürzen auf GoName(this), d.h. das komplette Objekt an die Funktion geben, in der Du dann den Wert ausliest.

            Die Style-Attribute könntest Du in eine externe CSS-Datei verlagern, was in der jetzigen Version bestimmt mehrere 100 KB spart.

            MfG
            Danny

            1. Danke für die Tips, werde noch ein wenig an dem Projekt "basteln".

              Gruß
              Torsten

      2. Hallo,

        zum posten sind die Dateien leider zu lang. [...] das xslt-sheet um die 2700 und die html seite noch vielmehr.

        Dann hast du definitiv was falsch gemacht ;-)
        Als Lesetipp: (Tips to make you a better XSLT programmer)http://www-106.ibm.com/developerworks/library/x-xslt5.html?open&l=xmllst03,t-gr,p=XSLT-tips1

        Du kannst auch einigen Benchmakr-Test für deinen XSL-Sheet durchführen:
        http://www.datapower.com/xmldev/xsltmark.html
        http://xmlbench.sourceforge.net/

        Grüße
        Thomas

        PS: ob deine XML-Datei wirklich 10Tsd Zeilen lang sei muss, kann man so nicht beurteilen.