My XSLT is like:
<!DOCTYPE stylesheet [
<!ENTITY hyphen "<xsl:text>-</xsl:text>">
<!ENTITY cr "<xsl:text>
</xsl:text>">
]>
<xsl:stylesheet id="test"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ext="http://exslt.org/common"
exclude-result-prefixes="ext"
version="1.0">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:variable name="vc_NDCROI" select="'NDC05'" />
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="node()|@*" mode="mPass2">
<xsl:copy>
<xsl:apply-templates select="node()|@*" mode="mPass2"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/">
<xsl:variable name="vrtfPass1Result">
&cr;
<xsl:comment>ACS&T
Receipt Confirmation
</xsl:comment>
&cr;
<xsl:element name="Batch">
<xsl:element name="ASN">
<xsl:for-each
select="dcsextractdata/dataheaders/dataheader[record_type = 'ORH']">
<xsl:apply-templates select="." mode="orh_receipt" />
</xsl:for-each>
</xsl:element>
</xsl:element>
</xsl:variable>
<xsl:apply-templates mode="mPass2"
select="ext:node-set($vrtfPass1Result)/*" />
</xsl:template>
<xsl:template match="/*[local-name()='Batch']" mode="mPass2">
&cr;
<Batch xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsl:copy-of select="node()|@*"/>
</Batch>
</xsl:template>
<xsl:template match="dataheader" mode="orh_receipt">
<xsl:element name="BatchReferences">
<xsl:element name="SenderCode"><xsl:value-of select="site_user_def_type_7"/></xsl:element>
<xsl:element name="ReceiverCode"><xsl:value-of select="client_user_def_type_7" /> </xsl:element>
</xsl:element>
<xsl:element name="Supplier">
<xsl:element name="EanCode"><xsl:value-of select="client_name" /> </xsl:element>
</xsl:element>
<xsl:element name="Customer">
<xsl:element name="EanCode"></xsl:element>
<xsl:element name="EDI1Code"></xsl:element>
<xsl:element name="EDI2Code"></xsl:element>
<xsl:element name="EDI3Code"></xsl:element>
<xsl:element name="EDI4Code"></xsl:element>
</xsl:element>
<xsl:element name="Consignee">
<xsl:element name="EanCode"><xsl:value-of select="add_user_def_type_1" /> </xsl:element>
</xsl:element>
<xsl:choose>
<xsl:when test="user_def_chk_1 != 'Y'">
<xsl:element name="Consignor">
<xsl:element name="EanCode"></xsl:element>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="Consignor">
<xsl:element name="EanCode">5060133990239</xsl:element>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
<xsl:element name="DeliverFrom">
<xsl:element name="EanCode"></xsl:element>
</xsl:element>
<xsl:element name="DeliverTo">
<xsl:element name="EanCode"><xsl:value-of select="add_user_def_type_1" /> </xsl:element>
</xsl:element>
<xsl:element name="DocumentNumber"><xsl:value-of select="user_def_type_1" /> </xsl:element>
<xsl:element name="DocumentDate"><xsl:value-of select="creation_date" /> </xsl:element>
<xsl:element name="ShippingDate"><xsl:value-of select="creation_date" /> </xsl:element>
<xsl:choose>
<xsl:when test="user_def_chk_1 != 'Y'">
<xsl:element name="Carrier">
<xsl:element name="SuppliersCode"></xsl:element>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="Carrier">
<xsl:element name="SuppliersCode">5060133990239</xsl:element>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
<xsl:element name="OrderNumber">
<xsl:element name="Customers"><xsl:value-of select="order_id" /> </xsl:element>
</xsl:element>
<xsl:element name="OrderDate">
<xsl:element name="Customers"><xsl:value-of select="order_date" /> </xsl:element>
</xsl:element>
<xsl:element name="ShipmentNumber"><xsl:value-of select="user_def_type_2" /> </xsl:element>
<xsl:element name="PickListNumber"><xsl:value-of select="user_def_type_3" /> </xsl:element>
<xsl:element name="Package">
<xsl:element name="Markings">
<xsl:element name="Barcode"><xsl:value-of select="user_def_type_1" /> </xsl:element>
</xsl:element>
</xsl:element>
<xsl:for-each select="datalines/dataline[record_type = 'ORL']" >
<xsl:apply-templates select="." mode="lines" />
</xsl:for-each>
<xsl:template match="dataline" mode="lines">
<xsl:element name="Product">
<xsl:element name="LineNumber"><xsl:value-of select="user_def_num_1" /> </xsl:element>
<xsl:element name="EANCode"><xsl:value-of select="ean" /> </xsl:element>
<xsl:element name="SuppliersCode"><xsl:value-of select="sku_id" /> </xsl:element>
<xsl:element name="Quantity">
<xsl:element name="Amount"><xsl:value-of select="qty_shipped" /> </xsl:element>
</xsl:element>
<xsl:element name="CreationDate">0001-01-01</xsl:element>
<xsl:element name="ExpiresDate"></xsl:element>
<xsl:element name="CustomerPalStatus"><xsl:value-of select="condition_id" /> </xsl:element>
<xsl:element name="Markings">
<xsl:element name="Barcode"><xsl:value-of select="batch_id" /> </xsl:element>
<xsl:element name="InitialPalletQty"></xsl:element>
<xsl:element name="Batch"><xsl:value-of select="batch_id" /> </xsl:element>
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:template>
</xsl:stylesheet>
I have loop for lines , I have package tag starting from before marking tag and right now package tag is closing after marking tag but should be close after product tag and before ASN close tag.Please help.
I need package start before marking only and end before before ASN close tag.