首页 > 解决方案 > 如何从 XSL 输出缩进中排除某些元素?

问题描述

我需要转换一个 xml 文档,并且我希望输出被格式化,所以我使用<xsl:output indent="yes" />. 但我希望特定元素不缩进。例如,我的 xml(经过任何转换,如删除元素等)的格式如下:

<root><code><run><formula>xyz</formula></code></root>

<xsl:output indent="yes" />我得到这样的输出:

<root>
<code>
<run>
<formula>xyz</formula>
</run>
</code>
</root>

我正在寻找这样的输出:

<root>
<code>
<run><formula>xyz</formula></run>
</code>
</root>

基本上我不想<run>(和里面的元素)格式化。

这可以用 XSL 完成吗?或者我需要在 XSL 转换之后解析文件,以删除 \n after<run>和 before </run>

(注意:我的 xml 很大,有数百个元素。上面只是一个例子)(注意 2:我使用的是 java。因此 java 标签)

标签: javaxmlxslt

解决方案


XSLT 3.0 允许您说<xsl:output indent="yes" suppress-indentation="run"/>. 为此,您需要切换到 XSLT 3.0 处理器,这在 Java 世界中意味着 Saxon。


推荐阅读