如何从XSL输出缩进中排除某些元素?

时间:2019-07-10 17:58:53

标签: java xml xslt

我需要转换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在<run>之后和</run>之前?

(注意:我的xml很大,包含数百个元素。以上仅是示例) (注2:我正在使用java。因此是java标记)

1 个答案:

答案 0 :(得分:0)

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