I have created additional nodes before InvoiceItem
in the following input XML:
<?xml version="1.0" encoding="UTF-8"?>
<data>
<InvNum>
<InvNum>10001</InvNum>
<BatchNumber>
<BatchNumber>201400013002</BatchNumber>
<SeqNumber>
<add>ADDITIONAL NODE1</add>
<add>ADDITIONAL NODE2</add>
<SeqNumber>2</SeqNumber>
<InvoiceItem>
<a>122223</a>
<b>111</b>
</InvoiceItem>
</SeqNumber>
</BatchNumber>
</InvNum>
<InvNum>
<InvNum>10002</InvNum>
<BatchNumber>
<BatchNumber>201400013002</BatchNumber>
<SeqNumber>
<add>ADDITIONAL NODE3</add>
<add>ADDITIONAL NODE4</add>
<SeqNumber>2</SeqNumber>
<InvoiceItem>
<a>123</a>
<b>456</b>
</InvoiceItem>
<InvoiceItem>
<a>33</a>
<b>99</b>
</InvoiceItem>
</SeqNumber>
</BatchNumber>
</InvNum>
</data>
using the following stylesheet:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:rpt="Invoice"
exclude-result-prefixes="rpt">
<xsl:strip-space elements="*"/>
<xsl:output indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="data/InvNum">
<Invoice>
<xsl:apply-templates select="BatchNumber/BatchNumber"/>
<xsl:apply-templates select="BatchNumber/SeqNumber/SeqNumber"/>
<xsl:apply-templates select="InvNum"/>
<xsl:apply-templates select="BatchNumber/SeqNumber"/>
</Invoice>
</xsl:template>
<xsl:template match="InvNum/BatchNumber">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="BatchNumber/SeqNumber">
<xsl:apply-templates select="*[not(self::SeqNumber)]"/>
</xsl:template>
</xsl:stylesheet>
it outputs:
<?xml version="1.0" encoding="utf-8"?>
<data>
<Invoice>
<BatchNumber>201400013002</BatchNumber>
<SeqNumber>2</SeqNumber>
<InvNum>10001</InvNum>
<add>ADDITIONAL NODE1</add>
<add>ADDITIONAL NODE2</add>
<InvoiceItem>
<a>122223</a>
<b>111</b>
</InvoiceItem>
</Invoice>
<Invoice>
<BatchNumber>201400013002</BatchNumber>
<SeqNumber>2</SeqNumber>
<InvNum>10002</InvNum>
<add>ADDITIONAL NODE3</add>
<add>ADDITIONAL NODE4</add>
<InvoiceItem>
<a>123</a>
<b>456</b>
</InvoiceItem>
<InvoiceItem>
<a>33</a>
<b>99</b>
</InvoiceItem>
</Invoice>
</data>