У меня есть следующий 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>