使用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,则会保留空白 - 但这不是解决方案的选项
答案 0 :(得分:3)
XSLT 2.0指出,当源是从经过DTD或模式验证的文档构造的时,仅在元素内容中的空格在到达XSLT处理器之前被忽略/去除。因此,当XSLT看到它时,没有空格。如果您希望空格很重要,则需要将内容模型声明为混合内容。