2016-06-28 16 views
2

我正在做一個xml文檔的XSL轉換,它的結構如下。換行符<br>在XSLT中丟棄的xml

<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/>丟失。在該文件中,我只得到

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

任何人都可以請讓我知道爲什麼是<br/>丟棄?

謝謝..

+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