2

在使用 xsl:copy-of 转换以下 xml 时 - 我的转换丢失了原始文档的格式 - 我根本不希望它触及原始文档。从字面上看,只是复制节点 - 原封不动

源 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,则保留空格 - 但这不是解决方案的选项

4

1 回答 1

3

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

于 2013-04-16T22:01:39.137 回答