У меня есть следующий входной XML, и я хочу добавить родительский тег (элементы) и поместить все элементы внутри него, я новичок в XSLT. Я попробовал приведенную ниже трансформацию, но не получил требуемый вывод:
Input.xml
<rootnode>
<header>
<head1>Food</head1>
<head2>Vegetables</head2>
</header>
<item>
<i1>Tomato</i1>
<i2>100</i2>
</item>
<item>
<i1>Brinjal</i1>
<i2>50</i2>
</item>
<item>
<i1>carrots</i1>
<i2>10</i2>
</item>
</rootnode>
Мой XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/rootnode">
<rootnode>
<xsl:apply-templates />
</rootnode>
</xsl:template>
<xsl:template match="/rootnode/header">
<xsl:copy-of select="."/>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="rootnode/item">
<items>
<xsl:copy-of select="."/>
<xsl:apply-templates />
</items>
</xsl:template>
<xsl:template match="text()" />
</xsl:stylesheet>
Выходной XML:
<?xml version="1.0" encoding="UTF-8"?>
<rootnode xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<header>
<head1>Food</head1>
<head2>Vegetables</head2>
</header>
<items>
<item>
<i1>Tomato</i1>
<i2>100</i2>
</item>
</items>
<items>
<item>
<i1>Brinjal</i1>
<i2>50</i2>
</item>
</items>
<items>
<item>
<i1>carrots</i1>
<i2>10</i2>
</item>
</items>
</rootnode>
Требуемый вывод:
<rootnode>
<header>
<head1>Food</head1>
<head2>Vegetables</head2>
</header>
<items>
<item>
<i1>Tomato</i1>
<i2>100</i2>
</item>
<item>
<i1>Brinjal</i1>
<i2>50</i2>
</item>
<item>
<i1>carrots</i1>
<i2>10</i2>
</item>
</items>
</rootnode>
Я хочу иметь родительский тег (элементы) для всех элементов в коллекции, но мой xslt создает родительский тег для каждого элемента. Можеткто-нибудь, пожалуйста, помогите мне здесь.