2016-06-28 8 views
2

以下のような構造を持つxml文書に対してXSL変換を行っています。改行<br> in xml XSLTで破棄

<text_collection> 
    <text key="score_1"> Score 1 <br/> Good. </text> 
    <text key="score_2"> Score 2 <br/> Poor. </text> 
</text_collection> 

私のXSLTは

<xsl:template mode="codes" match="text"> 
    <li> 
     <xsl:value-of select="."/> 
    </li> 
</xsl:template> 

あるシンプルですが、私が直面しています問題は、HTMLが作成されたとき<br/>が欠落していることです。文書では、私は誰もが<br/>が破棄される理由を私に教えてもらえのみ

<ul> 
    <li> Score 1 Good. </li> 
    <li> Score 2 Poor. </li> 
    </ul> 

を取得しますか?

おかげ..

+0

申し訳ありませんが、ラインブレーク 'br'は質問で逃しました。変換後に改行 '
'がありません。 – user3122561

答えて

1

代わりの:

<xsl:value-of select="."/> 

使用:

<xsl:copy-of select="node()"/> 

これは、出力ツリーにテキストと要素の両方のノードを転送します。

+0

これはmichael.hor257kで動作しました – user3122561

1

xsl:value-ofコピーしてテキストが、それにネストされた要素をコピーしません。 。

はたとえば、あなたが

<xsl:copy-of select="./br"/>  

以前に選択したすべてのテキストの後に改行を達成するために(これを行うことができますしかし、あなたが同様に書くかもしれないとして、それは、役に立たない:

<br/> 
ドキュメント内で直接

可能な場合、私は、XMLドキュメントの再構築になります。あなたはあなたの<text>要素の下<Lines>を追加することができます。その後、各行にvalue:ofを入力し、必要に応じて改行してください。

+0

あなたの編集によって物事がより明確になりました。ありがとう、Ulf – DAB

+1

"*あなたのXML文書の再構築を検討します*"それは必要ではありません。 XSLTは、あらゆるXML文書を完全に扱うことができます。 –

+0

ありがとう、マイケル。私は何年もXSLTを使い続けてきましたが、node()については完全に忘れました。以下のソリューションが正しい答えです。 – DAB

関連する問題