Thomas J.S.: Zeichen in Zeichenkette zählen

Beitrag lesen

Hallo,

weiss jemand wie man die Anzahl eines bestimmten Zeichens in XSL herausfinden kann?

Mein Problem:

<TEXT>Das ist ein langer Text und der kann
auch Linefeeds enthalten, wie hier
und diese Lienbfeeds muss ich zählen.
Könnt ihr mir
einen Tipp geben wie sich das mit XSL bewerkstelligen
lässt?</TEXT>

Ich muss nun herausfinden wieviele Linefeeds (&#10;) sich im o.g. Text befindet. In dem Falle müsste ich die Zahl 5 erhalten... Eine Idee?

Geht nur mit einem recursiven Template:

<xsl:template match="TEXT">
 <xsl:call-template name="countCR">
     <xsl:with-param name="counter" select="0"/>
  <xsl:with-param name="text" select="."/>
 </xsl:call-template>
</xsl:template>

<xsl:template name="countCR">
 <xsl:param name="counter"/>
 <xsl:param name="text" />
 xsl:choose
  <xsl:when test="contains($text, '&#xA;')">
   <xsl:variable name="mbCounter" select="$counter + 1"/>
   <xsl:call-template name="countCR">
    <xsl:with-param name="text" select="substring-after($text, '&#xA;')" />
    <xsl:with-param name="counter" select="$mbCounter" />
   </xsl:call-template>
  </xsl:when>
  xsl:otherwise
   <xsl:value-of select="$counter" />
  </xsl:otherwise>
 </xsl:choose>
</xsl:template>

Grüße
Thomas

--
Surftip: kennen Sie schon Pipolino's Clowntheater?
http://www.clowntheater-pipolino.net/