[XSL|SP2010] Template Rückgabewert

kickerxy123

Erfahrenes Mitglied
#1
Guten Tag zusammen,

ich habe mal wieder ein Problem in Verbindung mit Sharepoint 2010 und XSL 1.0 (2.0 steht nicht zur Verfügung).

Ich möchte folgendes erreichen:
in einem String sollen alle Vorkommen ersetzt werden. Beispiel:


Inputstring: "Bla bla test bla test test bla"
Aufgabe: Ersetze alle "test" durch "blub"

Das Problem: Mit der XSL Funktion "translate" kann ich nur einzelne Buchstaben ersetzen und nicht ganze Strings ersetzen lassen.
Daher wollte ich ein Template rekursiv durchlaufen lassen, dass mittels Substring und contains die Vorkommen ersetzt:

Code:
<xsl:template name="replaceSign" >
		<xsl:param name="input" />
		<xsl:param name="replace" />
		<xsl:param name="with" />
			<xsl:choose>
				<xsl:when test="contains($input, $replace)">  
					<xsl:call-template name="replaceSign">
						<xsl:with-param name="input" select="concat(substring-before($input, $replace), $with, substring-after($input, $replace))" />
						<xsl:with-param name="replace" select="$replace" />
						<xsl:with-param name="with" select="$with" />
					</xsl:call-template>
				</xsl:when>
				<xsl:otherwise>
					<xsl:value-of select="$input" />
                                                                            <!--hier angekommen = fertig -->
				</xsl:otherwise>
			</xsl:choose>
	</xsl:template>
Nur wie kann ich das Ergebnis dieses Templates jetzt zurückgeben? Geht das überhaupt? Oder gibt es eine andere Möglichkeit?
Mein derzeitiger Aufruf erfolgt so:
Code:
<xsl:template name="test">
...
<xsl:call-template name="replaceSign">
<xsl:with-param name="input" select="DiesisteinTestString" />
<xsl:with-param name="replace" select = "ei" />
<xsl:with-param name="with" select="ie" />
</xsl:call-template>
<!--hier möchte ich nun das Ergebnis haben -->
...
</xsl:template>
Ich hoffe ihr könnt mir helfen...

Vielen Dank und mfg
kickerxy
 

kickerxy123

Erfahrenes Mitglied
#2
Problem hat sich bereits gelöst :)

Hier die Lösung:

Code:
			   		<xsl:variable name="ergebnis">
				   		<xsl:call-template name="replaceSign">
							<xsl:with-param name="input" select="@testfeld" />
							<xsl:with-param name="replace" select="'ei'"  />
							<xsl:with-param name="with" select="'ie"	  />		   				
				   		</xsl:call-template>
			   		</xsl:variable>