【发布时间】:2019-01-07 12:19:33
【问题描述】:
我有以下 XML
<?xml version="1.0"?>
<R>
<M>
<H>1</H>
<B>1</B>
</M>
<M>
<H>1</H>
<B>2</B>
</M>
<M>
<H>1</H>
<B>3</B>
</M>
<M>
<H>1</H>
<B>4</B>
</M>
</R>
如果我们假设'M'是主节点,'H'是标题,'B'是主体,我希望只有一个'M'节点和单个'H'和所有'B'节点它。
基本上我想将所有“B”节点移动到第一个“M”节点并删除所有其他“M”和“H”标签。
谁能帮我实现这个目标。
预期的输出是:
<?xml version="1.0"?>
<R>
<M>
<H>1</H>
<B>1</B>
<B>2</B>
<B>3</B>
<B>4</B>
</M>
</R>
这是我当前的 XSLT 脚本:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output indent="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="/*">
<xsl:copy>
<R>
<xsl:apply-templates select="@*|M/*" />
<xsl:apply-templates select="@*|M/B" />
</R>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
【问题讨论】:
-
您的样式表当前显示为 1.0 版,但是您可以使用 XSLT 2.0 吗?对于这样的分组问题,使用 XSLT 2.0 及更高版本要简单得多。谢谢。
标签: xml xslt transformation