2010-12-13 6 views
2

Ich verwende eine "Auswahl" -Site-Spalte mit aktivierter Mehrfachprüfungsoption, damit Benutzer ein Listenelement mit mehreren Auswahlmöglichkeiten aus der Spalte markieren können.Sharepoint XSL - Pausenzeichenfolge in Komponententeile

Diese Spalte steuert dann ein Design-Feature in einem Webpart für Inhaltsabfragen an - wobei die Spaltenauswahl angehängt wird, um einen Image-Dateinamen zu erstellen.

  • Choice1
  • Choice2
  • auswahl3
  • choice4

wird

<img src="http://mysite/content-Choice1.jpg /> 

Das Problem, das ich habe ist, dass die XSL-Parser einen String zugeführt wird, das hat Semikolons (;) und Hashes (#) trennen die Auswahlwerte. Wenn alle vier Optionen aktiviert, so würde die Zeichenkette in den XSLT-Parser zugeführt werden:

;#Choice1;#Choice2;#Choice3;#Choice4 

Wie kann ich durch den Strang arbeiten und trennen Sie die Wahl in ein eigenen XSL-Variable?

Ich habe verschiedene Teilstring-vor-Funktionen ausprobiert, aber ich kann nichts arbeiten.

+0

Allgemein 'xslt' Fragen sollten die Eingangsquelle gewünschte Ausgabe und Beziehung. Diese Frage bezieht sich auf ein bestimmtes XSLT-Framework. Als allgemeine XSLT-Frage lautet die Antwort, dass es keine Möglichkeit für "Wie kann ich die Zeichenfolge durcharbeiten und jede Auswahl in ihre eigene XSL-Variable trennen?". Sie könnten einen temporären Ergebnisbaum (mit Erweiterungsfunktionen für XSLT 1.0) erstellen, der Elemente für jeden "Choice" -String enthält. Siehe Fragen zum Tokenizing in XSLT. –

Antwort

2

Ich würde empfehlen, JavaScript zu verwenden, um die Zeichenfolge zu analysieren und dementsprechend das Bild mit JavaScript anzuzeigen.

+1

Hiya - das XSL wird in MOSS geparst, bevor es die Seite erreicht. Daher würde ich eine serverseitige XSLT-Lösung bevorzugen, die auf der Seite nachbearbeitet. – MrFidge

+0

Gehen Sie mit der Frederic-Antwort dann :) –

+0

Sie können [Javascript in der XSL eingebettet haben] (http://www.w3.org/TR/xslt11/#ecmascript-binding) – rds

2

Da XPath 1.0 die Funktion tokenize() nicht unterstützt, müssen Sie die gesamte Arbeit selbst erledigen. Zum Beispiel können Sie die <img> Elemente rekursiv aus der Auswahl erzeugen:

<xsl:template name="RecurseConvertChoicesToImages"> 
    <xsl:param name="choices" /> 

    <xsl:variable name="token" 
     select="substring-before($choices, ';#')" /> 
    <xsl:variable name="nextToken" 
     select="substring-after($choices, ';#')" /> 

    <xsl:if test="$token"> 
     <img src="http://mysite/content-{$token}.jpg" /> 
    </xsl:if> 
    <xsl:if test="$nextToken"> 
     <xsl:call-template name="RecurseConvertChoicesToImages"> 
      <xsl:with-param name="choices" select="$nextToken" /> 
     </xsl:call-template> 
    </xsl:if> 
</xsl:template> 
+0

Mochte Ihre Antwort –

+0

@Ashutosh Singh, wenn Sie mögen die Antwort, klicken Sie auf "Diese Antwort ist nützlich" Pfeil nach oben. – rds