Hallo Gemeinde,
der Inhalt des folgenden XML
<?xml version="1.0" encoding="utf-8" ?>
<docs>
<row title="Titel a" teaser="Teaser AAAAA" imgsrc="a.gif" />
<row title="Titel b" teaser="Teaser CCCCC" imgsrc="b.gif" />
<row title="Titel c" teaser="Teaser BBBBB" imgsrc="c.gif" />
</docs>
soll via XSLT so ausgegeben werden:
<html><body>
<table border="1">
<tr><td colspan="2"><b>Titel a</b></td></tr>
<tr>
<td valign="top"><img src="a.gif"></td>
<td>
Teaser AAAAA<br><br>
Titel b<br>
Titel c
</td>
</tr>
<table>
</body></html>
Dabei handelt es sich um drei Artikel, von denen der erste vollständig angeteasert wird und auf die restlichen Artikel nur mittels des Titels verwiesen wird.
Problem: Im XSLT gibt es eine Verschachtelung von Element mit position() = 1 (Vollständig angeteasert) und den folgenden Elementen für die position() > 1 gilt:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="//docs">
<div style="border:1px solid red">
<xsl:apply-templates select="row"/>
</div>
</xsl:template>
<xsl:template match="docs/row[position() = 1]">
<table border="1">
<tr><td colspan="2"><b><xsl:value-of select="@title"/></b></td></tr>
<tr>
<td valign="top"><img src="{@imgsrc}"/></td>
<td>
<xsl:value-of select="@teaser"/><br/><br/>
<xsl:apply-templates select="row"/> <!-- ?????? -->
</td>
</tr>
</table>
</xsl:template>
<xsl:template match="docs/row[position() > 1]">
<xsl:value-of select="@title"/><br/>
</xsl:template>
</xsl:stylesheet>
Wie kann das unterste template in das andere unter den genannten Bedingungen eingefügt werden? Gerne auch ganz andere Ansätze !
Dank und Gruss
Polarbear