首页 > 解决方案 > 我们如何在没有空格和缩进 XSLT2.0 的情况下删除空白行

问题描述

我正在尝试删除空白行而不去除空格和缩进,因为我的要求是缩进 XML。任何人都可以帮助我吗?

输入 XML

<?xml version="1.0" encoding="UTF-8"?>
<Export>
<bio id="b0001">

<p>Maciej</p>
</bio>
<funding-group>

<award-group>
<funding-source>
<named-content content-type="funder-name">Narodowe</named-content>
<named-content content-type="funderidentifier">501100004281</named-content>
</funding-source>
<award-id>/19/B/HS4/</award-id>
<award-id>3</award-id>
</award-group>
</funding-group>
</Export>

预期结果

<?xml version="1.0" encoding="UTF-8"?>
<Export>
<bio id="b0001">
<p>Maciej</p>
</bio>
<funding-group>
<award-group>
<funding-source>
<named-content content-type="funder-name">Narodowe Centrum Nauki</named-content>
<named-content content-type="funderidentifier">10.13039/501100004281</named-content>
</funding-source>
<award-id>/19/B/HS4/</award-id>
<award-id>3</award-id>
</award-group>
</funding-group>
</Export>

XSLT我已经尝试过这个 xsl,但是如果我运行这个 xsl 然后生成 XML 单行,它就不能正常工作。

    <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">
    <xsl:output method="xml" omit-xml-declaration="no"/>
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="//text()">
        <xsl:value-of select="translate(.,'&#xA;&#xD;', '')"/>
    </xsl:template>

</xsl:stylesheet>

标签: xslt-2.0

解决方案


推荐阅读