2009-06-16 15 views
0

Ich kann XML nicht bearbeiten, ich möchte nur XML-Daten in einer XSLT-Datei ändern.XML-Wert in XSLT ersetzen

<xsl:value-of select="Name" disable-output-escaping="yes"/> 

Der Wert von XML-Daten ist "Northfield Bancorp Inc.(MHC)" und ich möchte es ersetzen mit "Northfield Bancorp Inc." (entfernen "MHC").

Gibt es eine Funktion in XSLT, die das suchen und ersetzen kann?

Antwort

5

Wenn es nur die „(MHC)“ am Ende der Zeichenfolge, die Sie entfernen möchten, ist dies tun würde:

<xsl:value-of select=" 
    substring-before(
    concat(Name, '(MHC)'), 
    '(MHC)' 
) 
" /> 

Wenn Sie dynamisch ersetzen möchten, können Sie eine Funktion wie folgt schreiben:

<xsl:template name="string-replace"> 
    <xsl:param name="subject"  select="''" /> 
    <xsl:param name="search"  select="''" /> 
    <xsl:param name="replacement" select="''" /> 
    <xsl:param name="global"  select="false()" /> 

    <xsl:choose> 
    <xsl:when test="contains($subject, $search)"> 
     <xsl:value-of select="substring-before($subject, $search)" /> 
     <xsl:value-of select="$replacement" /> 
     <xsl:variable name="rest" select="substring-after($subject, $search)" /> 
     <xsl:choose> 
     <xsl:when test="$global"> 
      <xsl:call-template name="string-replace"> 
      <xsl:with-param name="subject"  select="$rest" /> 
      <xsl:with-param name="search"  select="$search" /> 
      <xsl:with-param name="replacement" select="$replacement" /> 
      <xsl:with-param name="global"  select="$global" /> 
      </xsl:call-template> 
     </xsl:when> 
     <xsl:otherwise> 
      <xsl:value-of select="$rest" /> 
     </xsl:otherwise> 
     </xsl:choose> 
    </xsl:when> 
    <xsl:otherwise> 
     <xsl:value-of select="$subject" /> 
    </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 

Welche aufrufbar sein würde, wie:

<xsl:call-template name="string-replace"> 
    <xsl:with-param name="subject"  select="Name" /> 
    <xsl:with-param name="search"  select="'(MHC)'" /> 
    <xsl:with-param name="replacement" select="''" /> 
    <xsl:with-param name="global"  select="true()" /> 
</xsl:call-template>