Я хочу обернуть значение 5 в значение 7 в одном вызове узла СТРАНА с использованием XSLT
Пример XML-документа -
<root>
<root1>
<root2>
<value1>somevalue</value1>
<value2>somevalue</value2>
<value3>somevalue</value3>
<value4>somevalue</value4>
<value5>Australia</value5>
<value6>India</value6>
<value7>USA</value7>
<value8>somevalue</value8>
<value9>somevalue</value9>
<value10>somevalue</value10>
</root2>
</root1>
</root>
Выходной XML -
<root>
<root1>
<root2>
<value1>somevalue</value1>
<value2>somevalue</value2>
<value3>somevalue</value3>
<value4>somevalue</value4>
<COUNTRY>
<value5>Australia</value5>
<value6>India</value6>
<value7>USA</value7>
</COUNTRY>
<value8>somevalue</value8>
<value9>somevalue</value9>
<value10>somevalue</value10>
</root2>
</root1>
</root>
Код, который я сейчас использую -
xquery version "1.0-ml";
declare variable $doc := document {
<root>
<root1>
<root2>
<value1>somevalue</value1>
<value2>somevalue</value2>
<value3>somevalue</value3>
<value4>somevalue</value4>
<value5>Australia</value5>
<value6>India</value6>
<value7>USA</value7>
<value8>somevalue</value8>
<value9>somevalue</value9>
<value10>somevalue</value10>
</root2>
</root1>
</root>
};
declare variable $grouping-xslt := <xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes" />
<xsl:template match="root">
<xsl:copy>
<xsl:for-each-group select="*" group-adjacent="not(self::value5 | self::value6 | self::value7)">
<xsl:choose>
<xsl:when test="current-grouping-key()">
<xsl:copy-of select="current-group()"/>
</xsl:when>
<xsl:otherwise>
<country>
<xsl:copy-of select="current-group()"/>
</country>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each-group>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>;
xdmp:xslt-eval($grouping-xslt, $doc)
У меня возникли некоторые проблемы при формировании шаблона относительно root
.
Есть предложения?