1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

[XSL|SP2010] Template Rückgabewert

Dieses Thema im Forum "XML Technologien" wurde erstellt von kickerxy123, 25. Oktober 2012.

  1. kickerxy123

    kickerxy123 Erfahrenes Mitglied

    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 (Text):
    1. <xsl:template name="replaceSign" >
    2.         <xsl:param name="input" />
    3.         <xsl:param name="replace" />
    4.         <xsl:param name="with" />
    5.             <xsl:choose>
    6.                 <xsl:when test="contains($input, $replace)">  
    7.                     <xsl:call-template name="replaceSign">
    8.                         <xsl:with-param name="input" select="concat(substring-before($input, $replace), $with, substring-after($input, $replace))" />
    9.                         <xsl:with-param name="replace" select="$replace" />
    10.                         <xsl:with-param name="with" select="$with" />
    11.                     </xsl:call-template>
    12.                 </xsl:when>
    13.                 <xsl:otherwise>
    14.                     <xsl:value-of select="$input" />
    15.                                                                             <!--hier angekommen = fertig -->
    16.                 </xsl:otherwise>
    17.             </xsl:choose>
    18.     </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 (Text):
    1. <xsl:template name="test">
    2. ...
    3. <xsl:call-template name="replaceSign">
    4. <xsl:with-param name="input" select="DiesisteinTestString" />
    5. <xsl:with-param name="replace" select = "ei" />
    6. <xsl:with-param name="with" select="ie" />
    7. </xsl:call-template>
    8. <!--hier möchte ich nun das Ergebnis haben -->
    9. ...
    10. </xsl:template>
    Ich hoffe ihr könnt mir helfen...

    Vielen Dank und mfg
    kickerxy
     
  2. kickerxy123

    kickerxy123 Erfahrenes Mitglied

    Problem hat sich bereits gelöst :)

    Hier die Lösung:

    Code (Text):
    1.                     <xsl:variable name="ergebnis">
    2.                         <xsl:call-template name="replaceSign">
    3.                             <xsl:with-param name="input" select="@testfeld" />
    4.                             <xsl:with-param name="replace" select="'ei'"  />
    5.                             <xsl:with-param name="with" select="'ie"      />                       
    6.                         </xsl:call-template>
    7.                     </xsl:variable>
     
Die Seite wird geladen...