XSLT副本 - 不保留空格

时间:2013-04-16 16:59:50

标签: xml xslt

使用xsl转换下面的xml:copy-of - 我的转换失去了origianl文档的格式 - 我根本不希望它触及原始文件。直截了当地复制节点 - 未触动

源XML

  <flow>
    <flow>
      <material><mattext fontface="Arial"><p style="white-space: pre-wrap"><font size="11">The moon is the only extraterrestrial body to be visited by humans?</font></p></mattext>
</material>
    </flow>

我得到了这个结果

<flow><flow><material><mattext fontface="Arial" texttype="text/plain"><p style="white-space: pre-wrap"><font size="11">The moon is the only extraterrestrial body to be visited by humans?</font></p></mattext></material></flow>

正如你所看到它把它全部放在一行 - 为了我的目的,我需要保留空白(漂亮的打印不是一个选项)

我的XSL看起来像这样

<xsl:for-each-group select="qti:item" group-adjacent="(position()-1)">

<!-- Output the file-->
<xsl:result-document  href="{$filename}">
<questtag>
<!-- Output the contents-->
<xsl:copy-of select="current-group()"/>
</questtag>
</xsl:result-document>
</xsl:for-each-group>

更新:好的 - 我发现如果删除源文件DTD,则会保留空白 - 但这不是解决方案的选项

1 个答案:

答案 0 :(得分:3)

XSLT 2.0指出,当源是从经过DTD或模式验证的文档构造的时,仅在元素内容中的空格在到达XSLT处理器之前被忽略/去除。因此,当XSLT看到它时,没有空格。如果您希望空格很重要,则需要将内容模型声明为混合内容。