2011-09-02 128 views
0

我需要从输入XML替换回车。XSLT查找并替换回车

输入如下:

  <Answer> 
      <Label>Notes/Comments</Label> 
      <Value>Q 
          WERTYU IOPASDFGHJKLZXCVBNM 
          QWERTYUIOPASDF GHJKLZXCVBNM 
          QWERTYU IOPASDFGHJKLZXCVBNM 
          QWERTYUIOPASDFGHJ KLZXCVBNM 
          QWERTYU IOPASDFGHJKLZXCVBNM 
          QWERTYUIOPASDFGH JKLZXCVBNM 
          QWERTYUIOPASDF GHJKLZXCVBNM 
          QWERTYUIOP ASDFGHJKLZXCVBNM 
          QWERTYU IOPASDFGHJ KLZXCVBNM 
          QWERTY UIOPAS DFGHJKLZX CVBNM 
          QWERTYUIO PASDFGHJ KLZXC VBNM 
          </Value> 
      <Iteration>0</Iteration> 
      <DataType>TEXT</DataType> 
     </Answer> 

我尝试使用下面的函数删除回车:

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

调用它,如下所示:

 <xsl:when test="Label='Notes/Comments'">    
         <xsl:element name="Comments"> 
          <xsl:call-template name="string-replace-all"> 
           <xsl:with-param name="text" select="Value" /> 
           <xsl:with-param name="replace">&#xA;</xsl:with-param> 
           <xsl:with-param name="by" select="'. '" /> 
          </xsl:call-template>     
      </xsl:element> 
     </xsl:when> 

但到目前为止,没有成功。我希望这只是我传递的字符(&#xA;)不正确,但我无法正常工作。

UPDATE

事实证明在这种情况下,删除不仅仅是回车更多的空白字符是可以接受的,因此正常化空间()满足我的要求。

+0

为什么不'normalize-space()'? –

+1

@empo - 这实际上完美的作品。看起来我正在大量复杂的情况。 – Fishcake

+0

@empo:'normalize-space()'除了CR之外更多的去除。当它发生变化时,@Fishcake在他的问题中不确切(或改变了主意)。 –

回答

3

您是否检查过除&#xA;之外没有&#xD;