2011-09-02 135 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;