Hallo,
»» Das kommt darauf an ob du mit XSLT 2.0 arbeiten kannst. Dort gäbe es Möglichkeiten die Bilder alle in einer Variable zu laden und so auf sie zurückgreifen.
Ich hab ein bißchen nachgelesen, um herauszufinden, wie das funktionieren könnte. Allerdings sprang mir mit meinen bescheidenen Erfahrung zum Thema XSLT nur die schon in XSLT 1.0 vorhandene Funktion key ins Auge. Das war's wohl nicht, was Du in eine Variable laden wolltest. Naja, wie auch immer ...
Könntest Du ein Beispiel dafür geben, welche Lösung Dir zu diesem Problem vorschwebte?
In XSLT 2.0 ist es möglich in Variablen temporäre bäume zu speichern und dann auf diesem Baum zuzugrifen.
Hier mal sehr grob geschildert wir das gehen könnte. Das ist hier wirklich nur eine Skizze, zwar könnte es so auch funktionieren, aber wenn man das XML kennt, kämen vermutlich auch andere Möglichkeiten in Betracht.
<xsl:variable name="bilder">
<xsl:for-each select="//bild">
<tempbild name="{@name}" src="{@src}" id="{@id}">
<xsl:attribute name="number">
<xsl:number count="multiple" />
</xsl:attribute>
</tempbild>
</xsl:for-each>
</xsl:variable>
<xsl:template match="bild">
<xsl:variable name="bildid" select="@id" />
<xsl:value-of select="$bilder/tempbild[@id = $bildid]/@number"></xsl:value-of>
</xsl:template>
<xsl:template match="bildreferenz">
<xsl:variable name="bildid" select="@id" />
<xsl:value-of select="$bilder/tempbild[@id = $bildid]/@number"></xsl:value-of>
</xsl:template>
Mit xsl:key könnte ich einen Index über alle Abbildungen des Kapitels erstellen, in dem sie nach ihrer ID, die auch für die Referenzierung benutzt wird, unterschieden werden. Nun kriege ich mit key() zwar die Abbildung mit einer bestimmten ID, habe aber keine Idee, wie ich die Information gewinnen kann, um die wievielte Abbildung es sich im Kapitel handelt. Also nicht viel anders, als hätte ich einfach id() benutzt.
Hm....das könnte man noch herausfinden, aber wenn ich dich richtig verstanden habe, geht es dir ja nicht nur um "viel vieles Bild bist du in Kapitel"?
Grüße
Thomas