2014-11-27 2 views
1

работает с xslt 1.0 im, пытаясь заменить символ «:» для пробела, перед этим мне нужно игнорировать символы до первого появления «:». Пример:xslt заменить строку

Наличие: 07: 090126: 00006591 :::

Я хочу получить.

090126 00006591.

Im пытается с этими двумя шаблонами, но им не в состоянии его получения идеальной.

<xsl:param name="requestor"/> 
     <xsl:call-template name="string-replace"> 
      <xsl:with-param name="string" select="substring-after($requestor,':')" /> 
      <xsl:with-param name="replace" select=':' /> 
      <xsl:with-param name="with" select=' ' /> 

     </xsl:call-template> 

</xsl:template> 






<xsl:template name="string-replace"> 
<xsl:param name="string" /> 
<xsl:param name="replace" /> 
<xsl:param name="with" /> 

<xsl:choose> 
    <xsl:when test="contains($string, $replace)"> 
     <xsl:value-of select="substring-before($string, $replace)" /> 
     <xsl:value-of select="$with" /> 
     <xsl:call-template name="string-replace"> 
      <xsl:with-param name="string" select="substring-after($string,$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="$string" /> 
    </xsl:otherwise> 
</xsl:choose> 

Может кто-нибудь помочь?

Это линии не работает:

<xsl:with-param name="replace" select=':' /> 
<xsl:with-param name="with" select=' ' /> 

Regards1!

+0

Для замены определенного одного символа с другим одного символа с использованием 'перевода (подстрока-после ($ запрашивающего,«:»),«:» , '') 'должен делать. –

+0

Это решение работает для меня !! :) Спасибо! – user3270648

ответ

0

Вы должны использовать разделители вокруг строковых литералов:

<xsl:call-template name="string-replace"> 
    <xsl:with-param name="string" select="substring-after($requestor,':')" /> 
    <xsl:with-param name="replace" select="':'" /> 
    <xsl:with-param name="with" select="' '" /> 

</xsl:call-template> 
Смежные вопросы