4.1.3  XSLT Streaming

Bei grossen, flach strukturierten Datenmengen gibt es zwei Möglichkeiten:
1.

FĂŒr einfache Sammel- und Auswertungsaufgaben schreibt man sich am besten einen kleinen Parser, z.B. mit der Pythonsgmllib â†—↗.

2.

FĂŒr komplexere Aufgaben, in denen man nicht an jeder Stelle ĂŒber den ganzen XML Baum navigiert und sich die Werte zusammensuchen suchen muss, kann man die Streaming Funktion des Saxon XSLT Prozessors verwenden.

XSLT Streaming ist in der XSLT Version 3.0 â†—↗ neu hinzugekommen und in der kommerziellen Saxon-EE Lösung von Michael Kay â†—↗ implementiert. Bei dieser Methode wird kein Eingabebaum im Speicher aufgebaut, was zu einer drastischen Performanzsteigerung fĂŒhrt.
Es gibt ein paar Regeln, die man bei der Verarbeitung großer Datenmengen ĂŒber die Streaming Funktionen beachten sollte:
  • Bei einer XPATH Auswertung sollte nur ein einfacher Ausdruck mit höchstens einer konsumierenden Selektion gegeben sein. Konsumieren heißt, dass vom Kontextknoten aus eine Knotenmenge abwĂ€rts selektiert wird. Dagegen bleibt die Information bzgl. der Ancestor-Achse erhalten.
  • Bei einer Selektion sollte man aber darauf achten nur atomare Werte auszuwĂ€hlen.
  • Knotenmengen, die ĂŒber die Streaming Option eingelesen wurden, können nicht einer Funktion ĂŒbergeben werden. Sie sind auch nicht einer Variablen zuweisbar.
  • "Crawler”-AusdrĂŒcke, wie //section sind nicht nicht zu verwenden, ebenso ein rekursiver Abstieg mit Selektion, wie bspw. mit einem apply-templates Call.
Zu Beginn der Streaming-Aktion kann man sich auf konventionelle Art und Weise TeilbĂ€ume, die nicht so performanzlastig aufgebaut werden, in einer Variablen abspeichern und im Verlauf der Streaming-Verarbeitung z.B. fĂŒr einen Vergleich auswerten.
Previous Page Next Page
Version: 92
Dec 26 2020