在XSLT中丢弃的xml中的换行符

时间:2016-06-28 07:55:10

标签: xml xslt-1.0

我正在对xml文档进行XSL转换,其结构如下所示。

<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/>被丢弃了?

谢谢..

2 个答案:

答案 0 :(得分:1)

xsl:value-of复制您的文字,但不会复制其中的嵌套元素。

例如,您可以执行此操作(在您之前选择的所有文本之后实现换行符。

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

但是你可能会写下来,这将毫无用处。

<br/>

直接在您的文档中。

如果可能的话,我会考虑重构您的XML文档。您可以在<Lines>元素下添加<text>。然后,您可以获取value:of每行,并根据需要通过换行符跟踪它。

答案 1 :(得分:1)

而不是:

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

使用:

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

这会将文本和元素节点都传输到输出树。