Performance
Torsten
- xsl
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
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
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
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
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
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
Danke für die Tips, werde noch ein wenig an dem Projekt "basteln".
Gruß
Torsten
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.