2011-09-22 5 views

答えて

66

非常に簡単な解決策(つまり、限り、あなたの文字列値にスペースを持っていないと動作します):

translate(normalize-space(translate('aa::bb::cc',':',' ')),' ',',') 
  1. 翻訳「:」に "
  2. normalize-space()" 複数の崩れ空白文字を1つの空白に変換する」
  3. 「」を「、」に変換する「

より堅牢なソリューションをrecursive templateを使用することです:

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

あなたはこのようにそれを使用することができます:

<xsl:call-template name="replace-string"> 
    <xsl:with-param name="text" select="'aa::bb::cc'"/> 
    <xsl:with-param name="replace" select="'::'" /> 
    <xsl:with-param name="with" select="','"/> 
</xsl:call-template> 
-1

あなたはこの

文法を使用することができます: - fn:tokenize(string,pattern)

Exa mple:tokenize("XPath is fun", "\s+")
結果:( "XPath"、 "is"、 "fun")

+2

この質問はXSLT 1.0とタグ付けされています。あなたの答えにはXSLT 2.0が必要です。 –

関連する問題