xml

XML-Ecke

Struktur in den Content!

XML für die Bildergalerie

Eine von vielen Möglichkeiten für das Einbinden von XML-Daten in eine dynamische Webseite ist das Spry-Framework von Adobe. Es stellt eine Reihe von JavaScript-Dateien bereit, mit Funktionen für eine breite Palette von AJAX-Techniken (Asynchronous JavaScript and XML) – die asynchrone Eigenschaft besteht darin, dass Daten für eine Webseite im Hintergrund geladen werden und dann sofort bereitstehen, wenn sie mit einem Mausklick angefordert werden.

Die Funktionsweise des Spry-Frameworks veranschaulicht eine Bildergalerie mit den beiden Bestandteilen eines Thumbnail-Mosaiks und eines Hauptfensters für die größere Darstellung eines Fotos:


Die Pfadangaben zu den Thumbnails werden hier ebenso aus einer XML-Datei geholt wie das zugehörige Bild in der vergrößerten Darstellung und die aus den Stichwort-Tags des Fotos gebildete Bildzeile darunter:

<gallery>
 
<photos>
 
<photo
 path = "anacamptis_papilionaceae.jpg"
 width = "800"
 height = "532"
 thumbpath = "anacamptis_papilionaceae.jpg"
 thumbwidth = "120"
 thumbheight = "80"
 rating = ""
 categories = "Anacamptis papilionaceae,Italien: Monte Gargano,"
 caption = "" >
</photo>
 
...
 
</photos>
 
</gallery>

Nach diesem Muster kann man die XML-Datei zur Bildergalerie selbst erstellen – jedes Bild bekommt ein Element <photo> mit unterschiedlichen Attributen – denkbar wären etwa noch Attribute wie Aufnahmedatum oder Fotograf. Wer das zu den neueren Photoshop-Versionen dazu gehörende Adobe-Programm Bridge verwendet, kann die Erstellung der XML-Datei auch einem kleinen Skript überlassen.

Anschließend wird die XML-Datei namens gallery.xml in den Header der Webseite eingefügt und als Spry-Datensatz mit der Bezeichnung ds1 definiert. Nach der Datei wird hier auch angegeben, ab welchem XML-Knoten die Daten ausgelesen werden sollen: “gallery/photos/photo”:

<script type="text/javascript">
<!--
var ds1 = new Spry.Data.XMLDataSet("gallery.xml", "gallery/photos/photo");
//-->
</script>

Um die XML-Daten mit den Javascript-Anweisungen ansprechen zu können, werden die beiden zentralen Javascript-Dateien des Frameworks eingebunden, die bei Adobe als Bestandteil des Spry-Frameworks heruntergeladen werden können:

<script src="SpryAssets/xpath.js" type="text/javascript"></script>
<script src="SpryAssets/SpryData.js" type="text/javascript"></script>

Im Body der Webseite werden dann zwei div-Bereiche untergebracht, einer für die Thumbnails und einer für das große Bildfenster (deren Position wird mit Hilfe von CSS und “position: absolute;” festgelegt):

 
<body>
   <div id="thumbContainer" spry:region="ds1"> 
   <img src="thumbs/{@thumbpath}" spry:repeat="ds1" spry:setrow="ds1" class="thumbs" onclick="ds1.setCurrentRow('{ds_RowID}');"/>
   </div>
   <div id="main" spry:detailregion="ds1"> 
   <img src="{@path}"><br/>{@categories}
   </div>
</body>

Hier werden die src-Attribute der beiden img-Tags aus der XML-Datei geholt, mit der Anweisung “thumbs/{@thumbpath}” bzw. “{@path}” (die Thumbnails liegen in einem Ordner namens “thumbs”, die Bilder für die vergrößerte Darstellung liegen im gleichen Ordner wie die HTML-Datei). Die Funktion onClick im “thumbContainer”-div ermöglicht das interaktive Verhalten, so dass im “main”-div das jeweils angeklickte Bild erscheint. Darunter werden die Stichwort-Tags für das Bild aufgeführt – alternativ kann man hier auch andere Photo-Attribute aus der XML-Datei aufführen.

Das Spry-Framework enthält auch eine Reihe von Ajax-Funktionen für visuelle Effekte, um die Bildergalerie noch wirkungsvoller in Szene zu setzen. Die fertige Web-Anwendung kann mit der AIR-Technik von Adobe auch als Desktop-Applikation gestaltet werden – das will ich dann demnächst versuchen.

Einen Kommentar schreiben

Copyright © 2010 by: XML-Ecke - Lizenz: Creative Commons BY-NC-SA.