首页 > 解决方案 > 是否可以使用 xslt 保留第一个打开标签和最后一个关闭标签?

问题描述

我们可以编写代码来使用 xslt 保留第一个打开标记和最后一个关闭标记吗?

示例代码如下所示:

示例输入 xml:

<jobId>
    <bov>text</bov>
    <grade>text</grade>
</jobId>
<jobId>
    <placeholder>text</placeholder>
</jobId>

预期输出xml:

<jobId>
    <bov>text</bov>
    <grade>text</grade>
    <placeholder>text</placeholder>
</jobId>

正如添加根元素后评论中所建议的那样,我能够生成预期的输出 xml。

修改后输入xml:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="5.xsl" ?>
<Root>
    <jobId>
        <bov>text</bov>
        <grade>text</grade>
    </jobId>
    <jobId>
        <placeholder>text</placeholder>
    </jobId>
</Root>

XSLT 如下所示:

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <jobId>
            <xsl:for-each select="Root/jobId" >
                <xsl:copy-of select="*"/>
            </xsl:for-each>
        </jobId>
    </xsl:template>
</xsl:stylesheet>

标签: xmlxsltxslt-2.0

解决方案


如评论中所述,您的样式表可以简化为:

<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/Root">
    <jobId>
        <xsl:copy-of select="jobId/*"/>
    </jobId>
</xsl:template>

</xsl:stylesheet>

推荐阅读