我正在使用xsl转换xml。我从Oracle数据库获取xml。当我转换时,我无法以实际存储的格式查看数据。在特定节点中,使用的换行符是看到的在xml中但是当我转换时我无法看到换行符。在particluar节点中的所有内容都显示在一行中。
有人可以帮我解决如何在xml ???
中包含已存在的换行符由于 RAGHAV
答案 0 :(得分:1)
如上所述,如果您使用的是MSXML,请检查它是否配置为保留空格。
同时检查样式表是否使用<xsl:strip-space>
。
此外,如果您使用的是XSLT 2.0,则默认情况下,对于在DTD或模式中定义的元素具有仅元素内容,空白被剥离。
此外,当然你的样式表代码可以使用空白文本节点,而不是将它们复制到输出中。
答案 1 :(得分:0)
XML和派生类压缩空格,所以对解析器来说,它们并不重要。 但是,一些解析器可以选择保留空白区域。 在MSXML中,将DomDocument的preserveWhiteSpace属性设置为true。
答案 2 :(得分:0)
尝试使用此转换:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:preserve-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
如果仍未显示换行符,则表示XML解析器正在剥离所有仅限空格的文本节点。阅读文档如何调用解析器以便禁止此默认操作 - 就像Deanna对MSXML的回答中所建议的那样。
如果上述转换的结果确实包含换行符,那么您在代码中执行了一些您未向我们展示的内容,这会导致不显示这些换行符。