MudGuard: XSL if

Beitrag lesen

Hi,

<xsl:apply-templates select="document('Test.xml')//Element"/>

Also wird das Template für alle "Element"-Elemente jeweils aufgerufen.

<xsl:template match="Element">
<xsl:if test="position() &gt; 5">
  <xsl:apply-templates />
</xsl:if>

Für das 6. bis letzte "Element"-Element wird apply-templates für die Kind-Elemente ausgeführt.

<xsl:if test="position() &lt;= 5">
  <p>Keine Elemente!</p>
</xsl:if>

Für die ersten 5 wird also "<p>Keine Elemente!</p>" ausgegeben.

Du erhältst also bis zu 5 mal "<p>Keine Elemente!</p> gefolgt von was auch immer das apply-templates für das 6. bis letzte "Element"-Element ergibt.

Du willst aber:
Wenn die Anzahl (count())  5 oder weniger ist, "<p>Keine Elemente!</p>" ausgeben (5 sind keine?), sonst das apply-templates.

Ich würde hier statt zwei if ein choose machen:
xsl:choose
  <xsl:when test="count(document('Test.xml')//Element) &lt;= 5">
    <p>Keine Elemente!</p>
  </xsl:when>
  xsl:otherwise
    <xsl:apply-templates select="document('Test.xml')//Element"/>
  </xsl:otherwise>
</xsl:choose>

cu,
Andreas

--
Warum nennt sich Andreas hier MudGuard?
O o ostern ...
Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.