2009-12-17 2 views
2

Я хотел бы, чтобы удалить разрыв строки, который следует весь текст, который говорит См Экспонат "XSL Удалить разрыв строки из текста

нежелательную разрыв строки, как показано на notepadd ++:

alt text http://img13.imageshack.us/img13/9803/clcflinebreak.png

Это то, что я до сих пор?!

<xsl:template match="p"> 
<!-- output everything but the See the exhibit text should have the line break removed --> 

</xsl:template> 

Любые идеи Благодаря

ответ

1
 <!-- Get text. Replace all “break with “ --> 
     <xsl:variable name="linebreak"> 
      <xsl:text> 
</xsl:text> 
     </xsl:variable> 
     <xsl:variable name="text"> 
      <xsl:call-template name="replace-string"> 
       <xsl:with-param name="text" select="."/> 
       <xsl:with-param name="replace" select="concat('“',$linebreak)" /> 
       <xsl:with-param name="with" select="string('“')"/> 
      </xsl:call-template> 
     </xsl:variable> 


     <xsl:value-of select="$text"/> 
+7

И где было бы 'заменить-string' шаблон? –

11

Если вы используете ваше преобразование для создания вывода HTML, самый простой подход, как правило:

<xsl:value-of select="normalize-space($text)"/> 

normalize-space полосы начальной и конечных пробела, и заменяют пробеги нескольких пробельных символов в строке с одиночное пространство.

Чтобы удалить точно завершающую CR/LF пары:

<xsl:choose> 
    <xsl:when test="substring(., string-length(.)-1, 2) = '&#xD;&#xA;'"> 
     <xsl:value-of select="substring(., 1, string-length(.)-2)"/> 
    </xsl:when> 
    <xsl:otherwise> 
     <xsl:value-of select="."/> 
    </xsl:otherwise> 
</xsl:choose> 
+4

+1 для «нормализации пространства» - просто спас меня от целой боли –

Смежные вопросы