http://onion.net/2010/compression/zip

extract (xlink : string, [fromDataSource : boolean]) : nodeset

Mit Hilfe der Methode »extract()« lässt sich eine Liste der Inhalte einer beliebigen .zip-Datei erzeugen.

Parameter

Der Parameter »xlink« erwartet einen XLink zu der .zip-Datei im System. Wird die Methode direkt auf dem Objekt ausgeführt, in dem die .zip-Datei gespeichert ist, besteht der XLink lediglich aus der onion.net ID.

Der Parameter »fromDataSource« ist wie immer optional und hält implizit den Wert »true()«. Somit wird indiziert, dass sich die zu ladende .zip-Datei auf dem Datenobjekt befindet, auf dem die Methode ausgeführt wird. Wurde ein XLink auf eine binäre Methode angegeben, die die .zip-Datei erzeugt, so muss dem Parameter »fromDataSource« der Wert »false()« übergeben werden.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:zip="http://onion.net/2010/compression/zip" xmlns:onion="http://onionworks.net/2004/data" version="1.0">
<xsl:template match="/">
<xsl:variable name="zipEntries" select="zip:extract(zipFile, true())" />
</xsl:template>
</xsl:stylesheet>
Liste der Inhalte einer .zip-Datei ermitteln

Die Variable »zipEntries« enthält nun ein Nodeset mit allen Inhalten der .zip-Datei. Das XML ist flach, das heißt die Inhalte werden in einer Ebene dargestellt, auch wenn Sie im .zip selber in Ordnern abgelegt sind. Diese Hierarchie findet sich dann in den Zugriffspfaden wieder (s.u.).

Der Rückgabewert der Methode »extract()« bzw. der mögliche Inhalte der Variablen »zipEntries« aus dem obigen Beispiel, wird im Folgenden dargestellt.

<zipArchive>
<entry fileExtension=".html" size="1895" name="index.html" />
<entry fileExtension=".jpg" size="2650" name="images\logo.jpg" />
</zipArchive>

Jede echte Datei in der .zip-Datei wird mit einem <entry>-Element repräsentiert. Im Attribut »name« findet sich der Pfad zur Datei innerhalb der .zip-Datei. Im obigen Beispiel ist die Datei »logo.jpg« innerhalb des .zip im Ordner »images« gespeichert.