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">
</xsl:with-param>
<xsl:with-param name="by" select="'. '" />
</xsl:call-template>
</xsl:element>
</xsl:when>
그러나 지금까지 성공하지 못했습니다. 나는 그것이 통과하고있는 그 캐릭터 (

)가 올바르지 않길 바랄뿐입니다. 그러나 나는 그것을 작동시킬 수 없습니다.
UPDATE 그냥 캐리지 리턴 이상의 공백 문자를 제거,이 경우 나오는 것에 따라
허용했다 그래서 정상화 공간을() 내 요구 사항을 충족합니다.
왜 'normalize-space()'가 아닌가? –
@empo - 실제로는 완벽하게 작동합니다. 나는 그 상황을 복잡하게 생각하는 것보다 굉장히 보였던 것 같다. – Fishcake
@empo :'normalize-space()'는 CR보다 더 많은 것을 제거합니다. 그것이 나왔을 때, @Fishcake는 그의 질문에 정확하지 않았고 (또는 마음이 바뀌었다). –