Hallo,
Du meinst also:
- if: <xsl:if test="Article/testelement[. = 'UPE']">
in diesem soll immer sreenonly und <hr> angezeigt werden- if: <xsl:if test="Article/testelement[. = 'DU']">
auch in diesem soll immer sreenonly und <hr> angezeigt werden
...
x. if: ....
in diesem soll zwar screenonly aber nicht <hr> angezeigt werden.Ja, zu 90% haben wir es. Aber noch nicht ganz. Das Element
Ich verstehe.
In dem Fall hilf du, wenn du überpfüst ob eine nächste "Gruppe" von Artikel gibt. Also im:
<xsl:if test="Article/testelement[. = 'DU']">
...
<xsl:for-each select="Article[testelement[. = 'DU']]">
...
<xsl:if test="position() = last()">
<div class="screenonly">
<p class="backtotop" align="right">
<a href="#top">Back to top</a>
</p>
</div>
</xsl:if>
</xsl:for-each>
<!-- hier jetzt die Abfrage für die nächste Gruppe -->
<xsl:if test="//Article[testelement[. = 'DU']]">
<hr noshade="noshade" />
</xsl:if>
</xsl:if>
Diese Afrage dann in djeden if einbauen und immer natürlich auf die nächste Gruppe prüfen.
Aber ... du wirst mich hasse dafür ;-) ...
Da du jetzt alle XMLs quasi in einer Datei hast, gäbe es weitaus bessere und effizientere Möglichkeiten für die Gruppierung und das dann mit nur einem Template. Sortieren z.B. nach dem ABC oder nach einem nummerischen Kriterum kann man auch.
z.B.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="topics" match="Article" use="testelement"/>
Und dann statt die Bisherige if-Abfragen einfach:
------------
<xsl:for-each select="Article[generate-id() = generate-id(key('topics', testelement)[1])]">
<xsl:sort select="testelement" />
<a class="cap0{position()}" name="cap0{position()}" />
<h2>
<!-- <a class="h2" href="http://bupmain.de" target="_blank">User Productivity</a> -->
</h2>
<xsl:for-each select="key('topics', testelement)">
<h3>
<a target="_blank" href="{link}">
<xsl:value-of select="titel" />
</a>
</h3>
<p>
<xsl:value-of select="abstract" />
</p>
<div class="screenonly">
<p class="backtotop" align="right">
<a href="#top">Back to top</a>
</p>
</div>
</xsl:for-each>
<xsl:if test="not(position() = last())">
<hr noshade="noshade" />
</xsl:if>
</xsl:for-each>
---------------
Beim auskommentierten <a> kannst du etwas ausgeben, was du aus dem Article heruaslesen kannst, oder du kannst eine Reihe von when-Abfragen machen:
--------------
<xsl:for-each select="Article[generate-id() = generate-id(key('topics', testelement)[1])]">
<xsl:variable name="t" select="testelement" />
<xsl:sort select="testelement" />
<a class="cap0{position()}" name="cap0{position()}" />
xsl:choose
<xsl:when test="$t = 'UPE'"> <a class="h2" href="..." target="_blank">User Productivity</a>
</xsl:when>
<xsl:when test="$t = 'HT'">
<a class="h2" href="" target="_blank">HT ... </a>
</xsl:when>
...
</xsl:choose>
... der Rest wie Oben ...
--------------
Wenn allerdings die Reihenfolge (also z.B. UPE, ABC, DU) fest vorgeben ist, geht das nicht so gut.
Grüße
Thomas