私はXSLTを使用してXML要素のテキストコンテンツを解析しています。このテキストに改行が含まれていますが、正しく解析できないようです。私はテキストを切り詰めるためにオンラインで見つけたコードを使用しています。ここにコードの関連部分があります。XSLTでは、要素のテキストコンテンツを行に分割するにはどうすればよいですか?
<xsl:variable name="first">
<xsl:value-of select="substring-before($source, $newline)"/>
</xsl:variable>
<xsl:variable name="rest">
<xsl:value-of select="substring-after($source, $newline)"/>
</xsl:variable>
これは、$ restを自分自身にプッシュするrecusriveテンプレートの一部です。
問題は、コードサンプルが$ newlineを定義していないことです。 $ newlineを 's'のような文字に設定した場合、テキストはちょうど上に分割されます(例えば、入力が「再」と「再」に変わります)。しかし、$ newlineを改行文字に設定しようとすると、それは

または 
です。それは永遠に再帰し、私にスタックオーバーフローを与えます。また改行のENTITYを定義しようとしましたが、違いはありません。
入力には、各行の最後に普通のCR/LFがあります(Windowsのボックスにあります)。
誰かが私が間違っていることを知っているか、アプローチを提案していますか?
おかげで、 Mathijs
申し訳ありませんが、私は新しい行の文字について言及していませんでした。「0x0d 0x0a」はASCII CR + LFです。だから$ newline = "0x0d 0x0a"ベスト、ピーター – Peter
これは、私が必要なものではない等しい長さのチャンクにそれを切り刻む。私が実際に達成したいのは、どれが最長であるかを見つけることです。 –
$ newlineを0x0d0x0という値に設定すると、$ firstと$ restの両方が空になります。 \ nまたは\ n \ rに設定した場合と同じです。または、私が –