Может кто-нибудь помочь мне с этим сценарием как можно скорее?
Входной XML:
<dataXML>
<Items>
<itemLine>
<lineNo>1</lineNo>
<lineRefNo>001</lineRefNo>
<lineDes>test1</lineDes>
</itemLine>
<itemLine>
<lineNo>2</lineNo>
<lineRefNo>001</lineRefNo>
<lineDes>test2</lineDes>
</itemLine>
<itemLine>
<lineNo>3</lineNo>
<lineRefNo>002</lineRefNo>
<lineDes>test3</lineDes>
</itemLine>
<itemLine>
<lineNo>4</lineNo>
<lineRefNo>002</lineRefNo>
<lineDes>test4</lineDes>
</itemLine>
<itemLine>
<lineNo>5</lineNo>
<lineRefNo>002</lineRefNo>
<lineDes>test5</lineDes>
</itemLine>
<itemLine>
<lineNo>6</lineNo>
<lineRefNo>003</lineRefNo>
<lineDes>test6</lineDes>
</itemLine>
</Items>
Я перегруппировал строки позиций на основе LineRefNo
Преобразование xsl:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:variable name="totalLine" select="count(dataXML/Items/itemLine)" />
<Root>
<xsl:value-of select="concat('<','test','>')" disable-output-escaping="yes"/>
<xsl:for-each select="dataXML/Items/itemLine">
<xsl:choose>
<xsl:when test="lineRefNo != preceding-sibling::itemLine[1]/lineRefNo">
<xsl:value-of select="concat('</','test','>')" disable-output-escaping="yes"/>
<xsl:value-of select="concat('<','test','>')" disable-output-escaping="yes"/>
<item>
<xsl:value-of select="concat('Line No : ',position())" />,<xsl:value-of select="lineRefNo" />
</item>
<xsl:if test="$totalLine = position()">
<xsl:value-of select="concat('</','test','>')" disable-output-escaping="yes"/>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<item>
<xsl:value-of select="concat('Line No : ',position())" />,<xsl:value-of select="lineRefNo" />
</item>
<xsl:if test="$totalLine = position()">
<xsl:value-of select="concat('</','test','>')" disable-output-escaping="yes"/>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</Root>
</xsl:template>
</xsl:stylesheet>
Примечание: Пожалуйста, избегайте '>' и '<' в преобразовании xslt, где используются теги Test и Item </p>
Он преобразует входной XML как показано ниже
**Result :**
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<test>
<item>Line No : 1,001</item>
<item>Line No : 2,001</item>
</test>
<test>
<item>Line No : 3,002</item>
<item>Line No : 4,002</item>
<item>Line No : 5,002</item>
</test>
<test>
<item>Line No : 6,003</item>
</test>
</Root>
**Expected Result:**
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<test>
<item>Line No : 1,001</item>
<item>Line No : 2,001</item>
</test>
<test>
<item>Line No : 1,002</item>
<item>Line No : 2,002</item>
<item>Line No : 3,002</item>
</test>
<test>
<item>Line No : 1,003</item>
</test>
</Root>
Заранее благодарен