Thomas J.S.: Temporärer Ergebnisbaum in Variable

Beitrag lesen

Hallo,

ich habe Probleme damit, den temporären Ergebnisbaum auszulesen, der zu Testzwecken folgendermaßen erstellt wird:

<xsl:variable name="figure-list">
<xsl:for-each select="//figure">
<tmp>
<caption><xsl:value-of select="caption" /></caption>
</tmp>
</xsl:for-each>
</xsl:variable>

  
Das ist so korrekt.  
  
  

> Im Template liefert mir `<xsl:value-of select="$figure-list" />`{:.language-xml} nun zwar den Inhalt aller <figure>s (das Anlegen dieser Liste funktioniert offensichtlich), allerdings erhalte ich mit `<xsl:value-of select="$figure-list/tmp[1]" />`{:.language-xml} oder ähnlichen Versuchen, auf die einzelnen Elemente zuzugreifen stets ein leeres Ergebnis.  
>   
  
Es sollte so etwas sein:  
<xsl:value-of  select="$figure-list/tmp[1]/caption" /> denn du hast ja noch <caption> da drinn (wobei das an sich auch ohne funktioniert).  
  
~~~xml
  
<content>  
	<figure id="schuhkarton">  
		<src>bilder/schuhkarton.jpg</src>  
		<caption>Ein Schuhkarton</caption>  
	</figure>  
	<figure id="schuhkarton">  
		<src>bilder/schuhkarton.jpg</src>  
		<caption>xxxxx Ein Schuhkarton</caption>  
	</figure>  
	<figure id="schuhkarton">  
		<src>bilder/schuhkarton.jpg</src>  
		<caption>yyyyyyyyyyyy Ein Schuhkarton</caption>  
	</figure>  
	<text>...</text>  
	<figure id="schuhkarton">  
		<src>bilder/schuhkarton.jpg</src>  
		<caption>zzzzzzzzzzzz Ein Schuhkarton</caption>  
	</figure>  
</content>  
  
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">  
	<xsl:output method="xml" indent="yes" />  
	<xsl:variable name="figure-list">  
		<xsl:for-each select="//figure">  
			<tmp>  
				<caption><xsl:value-of select="caption" /></caption>  
			</tmp>  
		</xsl:for-each>  
	</xsl:variable>  
	<xsl:template match="/">  
		<abcd>  
			<xsl:value-of  select="$figure-list/tmp[2]/caption" />  
		</abcd>  
	</xsl:template>  
</xsl:stylesheet>  

Ergebnis:
<abcd>xxxxx Ein Schuhkarton</abcd>

Grüße
Thomas