2011-09-02 5 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는 그의 질문에 정확하지 않았고 (또는 마음이 바뀌었다). –

답변