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>

ご覧のとおり、すべてを1行にまとめています-私の目的のために、空白を保持する必要があります(きれいな印刷はオプションではありません)

私の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>

更新: OK - ソース ファイルの DTD を削除すると空白が保持されることがわかりましたが、これは解決策のオプションではありません

4

1 に答える 1

3

XSLT 2.0 では、ソースが DTD またはスキーマで検証されたドキュメントから構築される場合、要素のみのコンテンツの空白は XSLT プロセッサに到達する前に無視/削除されると規定されています。したがって、XSLT がそれを認識するまでに空白はありません。空白を意味のあるものにしたい場合は、コンテンツ モデルを混合コンテンツとして宣言する必要があります。

于 2013-04-16T22:01:39.137 に答える