<?xml version="1.0"?>
<xsl:stylesheet version="1.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" xmlns:agile="http://www.oracle.com/webfolder/technetwork/xml/plm/2013/09/">
	<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
	<xsl:template match="/">
		<!-- Template to create the XML structure if the CO contains atleast one MES impacted affected item -->
		<xsl:variable name="catflag">
			<xsl:call-template name="MESItemTemplate"/>
		</xsl:variable>
		<xsl:if test="$catflag='true'">
			<xsl:apply-templates select="agile:AgileData/agile:ChangeOrders/agile:CoverPage"/>
		</xsl:if>
		<xsl:if test="$catflag='false'">
			<xsl:element name="IGNORE">
				<xsl:text>Change not relevant to MES</xsl:text>
			</xsl:element>
		</xsl:if>
	</xsl:template>
	<!-- Template to check if the CO contains atleast one MES impacted affected item -->
	<xsl:template name="MESItemTemplate">
		<xsl:value-of select="count(agile:AgileData/agile:ChangeOrders/agile:AffectedItems[((agile:ItemProductLines!='Non Product') and (((agile:ItemType='Part') and (agile:ItemCategory=('Electrical|Assembly/Kit','Electrical|Component','Electrical|PCA','Electrical|Top Level Assy','Electro-Mechanical|Assembly/Kit','Electro-Mechanical|Component','Electro-Mechanical|Top Level Assy','Mechanical|Assembly/Kit','Mechanical|Component','Mechanical|Top Level Assy','Packaging','Product Labeling|Labels','Product Labeling|IFU','Software/Firmware|Product','Electrical|EFT','Mechanical|EFT','Electro-Mechanical|EFT','Software/Firmware|EFT','Service|EFT')))or ((agile:ItemType='Manufacturing Process') and (agile:ItemCategory=('Process Documentation|Mfg Work Instructions|Assembly','Process Documentation|Mfg Work Instructions|Test Procedure','Process Documentation|Process WI','Process Documentation|Results Sheets|Inspection','Process Documentation|Results Sheets|Test','Process Documentation|Traveler - Systems','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 Harmonic Ace Insert','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 5MM','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 8MM','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 Suction Irrigator','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 Vespa','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 Vessel Sealer','Process Documentation|Traveler - Instruments|Traveler - Ins Is4000 Stapler')))))]) &gt; 0"/>
	</xsl:template>

	<!-- CO Cover Page Attributes -->
	<xsl:template match="agile:CoverPage">
		<xsl:element name="ChangeOrder">
			<xsl:element name="ChangeOrder_Info">
				<xsl:element name="Change_Number">
					<xsl:value-of select="agile:Number"/>
				</xsl:element>
				<xsl:element name="Description">
					<xsl:value-of select="agile:DescriptionOfChange"/>
				</xsl:element>
				<xsl:element name="Status">
					<xsl:choose>
						<xsl:when test="agile:ChangeType='NCO' and agile:Status='Final Processing'">
							<xsl:text>Submitted</xsl:text>
						</xsl:when>
						<xsl:when test="agile:ChangeType='NCO' and agile:Status='Implemented'">
							<xsl:text>Released</xsl:text>
						</xsl:when>
						<xsl:otherwise>
							<xsl:value-of select="agile:Status"/>
						</xsl:otherwise>
					</xsl:choose>
				</xsl:element>
				<xsl:element name="Type">
					<xsl:value-of select="agile:ChangeType"/>
				</xsl:element>
				<xsl:element name="Planned_Effectivity">
					<xsl:value-of select="../agile:PageTwo/agile:Date02"/>
				</xsl:element>
				<xsl:element name="Status_Date">
					<xsl:value-of select="agile:DateReleased"/>
				</xsl:element>
				<xsl:element name="ChangeOriginator">
					<xsl:value-of select="agile:Originator"/>
				</xsl:element>
			</xsl:element>
			<xsl:apply-templates select="../agile:AffectedItems"/>
			<xsl:if test="(../../agile:Parts/agile:BOM) or (../../agile:Documents/agile:BOM)">
				<xsl:apply-templates select="../agile:AffectedItems/agile:Redlines"/>
			</xsl:if>
		</xsl:element>
	</xsl:template>

	<!-- Affected Items/Material Master Attribute details -->
	<xsl:template match="agile:AffectedItems">
		<xsl:variable name="itemcat">
			<xsl:value-of select="agile:ItemCategory"/>
		</xsl:variable>
		<xsl:variable name="prodline">
			<xsl:value-of select="agile:ItemProductLines"/>
		</xsl:variable>
		<xsl:variable name="itemtype">
			<xsl:value-of select="agile:ItemType"/>
		</xsl:variable>
		<xsl:variable name="catflag">
			<xsl:choose>
				<xsl:when test="(($prodline!='Non Product') and ((($itemtype='Part') and ($itemcat=('Electrical|Assembly/Kit','Electrical|Component','Electrical|PCA','Electrical|Top Level Assy','Electro-Mechanical|Assembly/Kit','Electro-Mechanical|Component','Electro-Mechanical|Top Level Assy','Mechanical|Assembly/Kit','Mechanical|Component','Mechanical|Top Level Assy','Packaging','Product Labeling|Labels','Product Labeling|IFU','Software/Firmware|Product','Electrical|EFT','Mechanical|EFT','Electro-Mechanical|EFT','Software/Firmware|EFT','Service|EFT')))or (($itemtype='Manufacturing Process') and ($itemcat=('Process Documentation|Mfg Work Instructions|Assembly','Process Documentation|Mfg Work Instructions|Test Procedure','Process Documentation|Process WI','Process Documentation|Results Sheets|Inspection','Process Documentation|Results Sheets|Test','Process Documentation|Traveler - Systems','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 Harmonic Ace Insert','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 5MM','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 8MM','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 Suction Irrigator','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 Vespa','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 Vessel Sealer','Process Documentation|Traveler - Instruments|Traveler - Ins Is4000 Stapler')))))">
					<xsl:value-of select="'true'"/>
				</xsl:when>
				<xsl:otherwise>
					<xsl:value-of select="'false'"/>
				</xsl:otherwise>
			</xsl:choose>
		</xsl:variable>
		<xsl:choose>
			<xsl:when test="$catflag='true'">
				<xsl:element name="MaterialMaster">
					<xsl:element name="Item_Number">
						<xsl:value-of select="agile:ItemNumber"/>
					</xsl:element>
					<xsl:element name="Old_Rev">
						<xsl:value-of select="agile:OldRev"/>
					</xsl:element>
					<xsl:element name="New_Rev">
						<xsl:value-of select="agile:NewRev"/>
					</xsl:element>
					<xsl:element name="Planned_Effectivity_Date">
						<xsl:value-of select="../agile:PageTwo/agile:Date02"/>
					</xsl:element>
					<xsl:element name="Item_Type">
						<xsl:value-of select="agile:ItemType"/>
					</xsl:element>
					<xsl:element name="Material_Type">
						<xsl:value-of select="agile:ItemP2List21"/>
					</xsl:element>
					<xsl:element name="Item_Category">
						<xsl:value-of select="agile:ItemCategory"/>
					</xsl:element>
					<xsl:element name="Description">
						<xsl:value-of select="agile:ItemDescription"/>
					</xsl:element>
					<xsl:element name="Product_Line">
						<xsl:value-of select="agile:ItemProductLines"/>
					</xsl:element>
					<xsl:element name="Lifecycle_Phase">
						<xsl:value-of select="agile:LifecyclePhase"/>
					</xsl:element>
					<xsl:element name="BuildInMES">
						<xsl:value-of select="agile:ItemP2List26"/>
					</xsl:element>
					<!-- Based on the Item Type fetch page two attributes -->
					<xsl:variable name="itemType">
						<xsl:value-of select="agile:ItemType"/>
					</xsl:variable>
					<xsl:variable name="itemnum">
						<xsl:value-of select="agile:ItemNumber"/>
					</xsl:variable>
					<xsl:variable name="rev">
						<xsl:value-of select="agile:NewRev"/>
					</xsl:variable>
					<xsl:variable name="rightparen">(</xsl:variable>
					<xsl:variable name="leftparen">)</xsl:variable>
					<xsl:choose>
						<xsl:when test="$itemType='Part'">
							<xsl:apply-templates select="../../agile:Parts">
								<xsl:with-param name="itemnum" select="$itemnum"/>
								<xsl:with-param name="rev" select="concat($rightparen,$rev,$leftparen)"/>
							</xsl:apply-templates>
						</xsl:when>
						<xsl:otherwise>
							<xsl:apply-templates select="../../agile:Documents">
								<xsl:with-param name="itemnum" select="$itemnum"/>
								<xsl:with-param name="rev" select="concat($rightparen,$rev,$leftparen)"/>
							</xsl:apply-templates>
						</xsl:otherwise>
					</xsl:choose>
				</xsl:element>
			</xsl:when>
		</xsl:choose>
	</xsl:template>

	<!-- Fetch Page Two attributes for Parts -->
	<xsl:template match="agile:Parts">
		<xsl:param name="itemnum"/>
		<xsl:param name="rev"/>
		<xsl:if test="(agile:TitleBlock/agile:Number=$itemnum) and (contains(agile:TitleBlock/agile:Rev,$rev))">
			<xsl:element name="DHR_Tracking_Req">
				<xsl:value-of select="agile:PageTwo/agile:List04"/>
			</xsl:element>
			<xsl:element name="UM">
				<xsl:value-of select="agile:PageTwo/agile:List03"/>
			</xsl:element>
			<xsl:element name="Backflush_Location">
				<xsl:value-of select="agile:PageTwo/agile:List18"/>
			</xsl:element>
			<xsl:element name="Total_Shelf_Life_Days">
				<xsl:value-of select="agile:PageTwo/agile:Text11"/>
			</xsl:element>
			<xsl:element name="Min_Shelf_Life_Days">
				<xsl:value-of select="agile:PageTwo/agile:Text12"/>
			</xsl:element>
			<xsl:element name="IQC_Results_Recording_Req">
				<xsl:value-of select="agile:PageTwo/agile:List15"/>
			</xsl:element>
			<xsl:element name="SamplingPlan"/>
		</xsl:if>
	</xsl:template>

	<!-- Fetch Page Two Attributes for Documents -->
	<xsl:template match="agile:Documents">
		<xsl:param name="itemnum"/>
		<xsl:param name="rev"/>
		<xsl:if test="(agile:TitleBlock/agile:Number=$itemnum) and (contains(agile:TitleBlock/agile:Rev,$rev))">
			<xsl:element name="DHR_Tracking_Req"/>
			<xsl:element name="UM"/>
			<xsl:element name="Backflush_Location"/>
			<xsl:element name="Total_Shelf_Life_Days"/>
			<xsl:element name="Min_Shelf_Life_Days"/>
			<xsl:element name="IQC_Results_Recording_Req"/>
			<xsl:element name="SamplingPlan">
				<xsl:value-of select="agile:PageTwo/agile:List05"/>
			</xsl:element>
		</xsl:if>
	</xsl:template>

	<!-- Fetch first level BOM Details for items whose Product Line != Non Product and Item Category is equal to one of the MES identified item categories -->
	<xsl:template match="agile:Redlines">
		<xsl:variable name="itemcat">
			<xsl:value-of select="../agile:ItemCategory"/>
		</xsl:variable>
		<xsl:variable name="prodline">
			<xsl:value-of select="../agile:ItemProductLines"/>
		</xsl:variable>
		<xsl:variable name="itemtype">
			<xsl:value-of select="../agile:ItemType"/>
		</xsl:variable>
		<xsl:variable name="catflag">
			<xsl:choose>
				<xsl:when test="(($prodline!='Non Product') and ((($itemtype='Part') and ($itemcat=('Electrical|Assembly/Kit','Electrical|Component','Electrical|PCA','Electrical|Top Level Assy','Electro-Mechanical|Assembly/Kit','Electro-Mechanical|Component','Electro-Mechanical|Top Level Assy','Mechanical|Assembly/Kit','Mechanical|Component','Mechanical|Top Level Assy','Packaging','Product Labeling|Labels','Product Labeling|IFU','Software/Firmware|Product','Electrical|EFT','Mechanical|EFT','Electro-Mechanical|EFT','Software/Firmware|EFT','Service|EFT')))or (($itemtype='Manufacturing Process') and ($itemcat=('Process Documentation|Mfg Work Instructions|Assembly','Process Documentation|Mfg Work Instructions|Test Procedure','Process Documentation|Process WI','Process Documentation|Results Sheets|Inspection','Process Documentation|Results Sheets|Test','Process Documentation|Traveler - Systems','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 Harmonic Ace Insert','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 5MM','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 8MM','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 Suction Irrigator','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 Vespa','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 Vessel Sealer','Process Documentation|Traveler - Instruments|Traveler - Ins Is4000 Stapler')))))">
					<xsl:value-of select="'true'"/>
				</xsl:when>
				<xsl:otherwise>
					<xsl:value-of select="'false'"/>
				</xsl:otherwise>
			</xsl:choose>
		</xsl:variable>
		<xsl:choose>
			<xsl:when test="$catflag='true'">
				<xsl:choose>
					<xsl:when test="($itemtype='Part') and (agile:RedlinedBOMRow)">
						<xsl:element name="ParentProduct">
							<xsl:element name="ParentProduct_Info">
								<xsl:element name="BOM_Number">
									<xsl:value-of select="../agile:ItemNumber"/>
								</xsl:element>
								<xsl:element name="Revision_Number">
									<xsl:value-of select="../agile:NewRev"/>
								</xsl:element>
								<xsl:variable name="bomnum">
									<xsl:value-of select="../agile:ItemNumber"/>
								</xsl:variable>
								<xsl:variable name="conum">
									<xsl:value-of select="../../agile:CoverPage/agile:Number"/>
								</xsl:variable>
								<xsl:element name="BOM">
									<xsl:for-each select="agile:RedlinedBOMRow">
										<xsl:call-template name="BOMRedline">
											<xsl:with-param name="bomnum" select="$bomnum"/>
										</xsl:call-template>
									</xsl:for-each>
								</xsl:element>
							</xsl:element>
						</xsl:element>
					</xsl:when>
					<xsl:otherwise>
						<xsl:if test="agile:RedlinedBOMRow">
							<xsl:element name="ParentProduct">
								<xsl:element name="ParentProduct_Info">
									<xsl:element name="BOM_Number">
										<xsl:value-of select="../agile:ItemNumber"/>
									</xsl:element>
									<xsl:element name="Revision_Number">
										<xsl:value-of select="../agile:NewRev"/>
									</xsl:element>
									<xsl:variable name="bomnum">
										<xsl:value-of select="../agile:ItemNumber"/>
									</xsl:variable>
									<xsl:variable name="conum">
										<xsl:value-of select="../../agile:CoverPage/agile:Number"/>
									</xsl:variable>
									<xsl:element name="BOM">
										<xsl:for-each select="agile:RedlinedBOMRow">
											<xsl:call-template name="BOMRedline">
												<xsl:with-param name="bomnum" select="$bomnum"/>
											</xsl:call-template>
										</xsl:for-each>
									</xsl:element>
								</xsl:element>
							</xsl:element>
						</xsl:if>
					</xsl:otherwise>
				</xsl:choose>
			</xsl:when>
		</xsl:choose>
	</xsl:template>

	<!-- Fetch Redline information for each BOM Component -->
	<xsl:template name="BOMRedline">
		<xsl:param name="bomnum"/>
		<!-- Fetch components of BOM whose Product Line != Non Product and Item Category is equal to one of the MES identified item categories -->
		<xsl:variable name="itemcat">
			<xsl:value-of select="agile:AgileData/agile:ChangeOrders/agile:AffectedItems/agile:Redlines/agile:RedlinedBOMRow/agile:RedlinedBOMRowCurrent/agile:ItemCategory"/>
		</xsl:variable>
		<xsl:variable name="prodline">
			<xsl:value-of select="agile:AgileData/agile:ChangeOrders/agile:AffectedItems/agile:Redlines/agile:RedlinedBOMRow/agile:RedlinedBOMRowCurrent/agile:ItemProductLines"/>
		</xsl:variable>
		<xsl:variable name="itemtype">
			<xsl:value-of select="agile:AgileData/agile:ChangeOrders/agile:AffectedItems/agile:Redlines/agile:RedlinedBOMRow/agile:RedlinedBOMRowCurrent/agile:ItemType"/>
		</xsl:variable>
		<xsl:variable name="catflag">
			<xsl:choose>
				<xsl:when test="(($prodline!='Non Product') and ((($itemtype='Part') and ($itemcat=('Electrical|Assembly/Kit','Electrical|Component','Electrical|PCA','Electrical|Top Level Assy','Electro-Mechanical|Assembly/Kit','Electro-Mechanical|Component','Electro-Mechanical|Top Level Assy','Mechanical|Assembly/Kit','Mechanical|Component','Mechanical|Top Level Assy','Packaging','Product Labeling|Labels','Product Labeling|IFU','Software/Firmware|Product','Electrical|EFT','Mechanical|EFT','Electro-Mechanical|EFT','Software/Firmware|EFT','Service|EFT')))or (($itemtype='Manufacturing Process') and ($itemcat=('Process Documentation|Mfg Work Instructions|Assembly','Process Documentation|Mfg Work Instructions|Test Procedure','Process Documentation|Process WI','Process Documentation|Results Sheets|Inspection','Process Documentation|Results Sheets|Test','Process Documentation|Traveler - Systems','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 Harmonic Ace Insert','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 5MM','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 8MM','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 Suction Irrigator','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 Vespa','Process Documentation|Traveler - Instruments|Traveler - Ins IS4000 Vessel Sealer','Process Documentation|Traveler - Instruments|Traveler - Ins Is4000 Stapler')))))">
					<xsl:value-of select="'true'"/>
				</xsl:when>
				<xsl:otherwise>
					<xsl:value-of select="'false'"/>
				</xsl:otherwise>
			</xsl:choose>
		</xsl:variable>
		<xsl:choose>
			<xsl:when test="$catflag='true'">
				<xsl:variable name="redlineaction">
					<xsl:value-of select="@RedlineAction"/>
				</xsl:variable>
				<xsl:variable name="currrowitemnum">
					<xsl:value-of select="current()/agile:RedlinedBOMRowCurrent/agile:ItemNumber"/>
				</xsl:variable>
				<xsl:variable name="currrowrev">
					<xsl:value-of select="current()/agile:RedlinedBOMRowCurrent/agile:ItemRev"/>
				</xsl:variable>
				<xsl:variable name="currrowop">
					<xsl:value-of select="current()/agile:RedlinedBOMRowCurrent/agile:FindNum"/>
				</xsl:variable>
				<xsl:variable name="currrowparallelop">
					<xsl:value-of select="current()/agile:RedlinedBOMRowCurrent/agile:BomText02"/>
				</xsl:variable>
				<xsl:variable name="currrowseq">
					<xsl:value-of select="current()/agile:RedlinedBOMRowCurrent/agile:BomText01"/>
				</xsl:variable>
				<xsl:variable name="currrowqty">
					<xsl:value-of select="current()/agile:RedlinedBOMRowCurrent/agile:Qty"/>
				</xsl:variable>
				<xsl:variable name="currrowcat">
					<xsl:value-of select="current()/agile:RedlinedBOMRowCurrent/agile:ItemCategory"/>
				</xsl:variable>
				<xsl:element name="Component">
					<xsl:element name="Item_Number">
						<xsl:choose>
							<!-- For Added, Unchanged action, fetch Current BOM Redline Row -->
							<xsl:when test="$redlineaction =('Added','Unchanged')">
								<xsl:value-of select="current()/agile:RedlinedBOMRowCurrent/agile:ItemNumber"/>
							</xsl:when>
							<!-- For Deleted action, fetch Previous BOM Redline Row -->
							<xsl:when test="$redlineaction='Deleted'">
								<xsl:value-of select="current()/agile:RedlinedBOMRowPrevious/agile:ItemNumber"/>
							</xsl:when>
							<!-- For Changed action, when current item number row is greater than Zero , fetch Current BOM Redline Row -->
							<xsl:when test="($redlineaction='Changed' and string-length($currrowitemnum) &gt; 0)">
								<xsl:value-of select="current()/agile:RedlinedBOMRowCurrent/agile:ItemNumber"/>
							</xsl:when>
							<!-- For other actions, fetch Previous BOM Redline Row -->
							<xsl:otherwise>
								<xsl:value-of select="current()/agile:RedlinedBOMRowPrevious/agile:ItemNumber"/>
							</xsl:otherwise>
						</xsl:choose>
					</xsl:element>
					<xsl:element name="Action">
						<xsl:choose>
							<xsl:when test="$redlineaction='Added'">
								<xsl:value-of select="'A'"/>
							</xsl:when>
							<xsl:when test="$redlineaction='Deleted'">
								<xsl:value-of select="'D'"/>
							</xsl:when>
							<xsl:when test="$redlineaction='Changed'">
								<xsl:value-of select="'U'"/>
							</xsl:when>
							<xsl:otherwise>
								<xsl:value-of select="'NA'"/>
							</xsl:otherwise>
						</xsl:choose>
					</xsl:element>
					<xsl:element name="Revision_Number">
						<xsl:choose>
							<xsl:when test="$redlineaction =('Added','Unchanged')">
								<xsl:value-of select="current()/agile:RedlinedBOMRowCurrent/agile:ItemRev"/>
							</xsl:when>
							<xsl:when test="$redlineaction='Deleted'">
								<xsl:value-of select="current()/agile:RedlinedBOMRowPrevious/agile:ItemRev"/>
							</xsl:when>
							<xsl:when test="($redlineaction='Changed' and string-length($currrowrev) &gt; 0)">
								<xsl:value-of select="current()/agile:RedlinedBOMRowCurrent/agile:ItemRev"/>
							</xsl:when>
							<xsl:otherwise>
								<xsl:value-of select="current()/agile:RedlinedBOMRowPrevious/agile:ItemRev"/>
							</xsl:otherwise>
						</xsl:choose>
					</xsl:element>
					<xsl:element name="OP">
						<xsl:choose>
							<xsl:when test="$redlineaction =('Added','Unchanged')">
								<!-- Logic to transfer 4 digit OP code based on OP Code lenght -->
								<xsl:choose>
									<xsl:when test="string-length(current()/agile:RedlinedBOMRowCurrent/agile:FindNum)=1">
										<xsl:value-of select="concat('000',current()/agile:RedlinedBOMRowCurrent/agile:FindNum)"/>
									</xsl:when>
									<xsl:when test="string-length(current()/agile:RedlinedBOMRowCurrent/agile:FindNum)=2">
										<xsl:value-of select="concat('00',current()/agile:RedlinedBOMRowCurrent/agile:FindNum)"/>
									</xsl:when>
									<xsl:when test="string-length(current()/agile:RedlinedBOMRowCurrent/agile:FindNum)=3">
										<xsl:value-of select="concat('0',current()/agile:RedlinedBOMRowCurrent/agile:FindNum)"/>
									</xsl:when>
									<xsl:otherwise>
										<xsl:value-of select="current()/agile:RedlinedBOMRowCurrent/agile:FindNum"/>
									</xsl:otherwise>
								</xsl:choose>
							</xsl:when>
							<xsl:when test="$redlineaction='Deleted'">
								<xsl:choose>
									<xsl:when test="string-length(current()/agile:RedlinedBOMRowPrevious/agile:FindNum)=1">
										<xsl:value-of select="concat('000',current()/agile:RedlinedBOMRowPrevious/agile:FindNum)"/>
									</xsl:when>
									<xsl:when test="string-length(current()/agile:RedlinedBOMRowPrevious/agile:FindNum)=2">
										<xsl:value-of select="concat('00',current()/agile:RedlinedBOMRowPrevious/agile:FindNum)"/>
									</xsl:when>
									<xsl:when test="string-length(current()/agile:RedlinedBOMRowPrevious/agile:FindNum)=3">
										<xsl:value-of select="concat('0',current()/agile:RedlinedBOMRowPrevious/agile:FindNum)"/>
									</xsl:when>
									<xsl:otherwise>
										<xsl:value-of select="current()/agile:RedlinedBOMRowPrevious/agile:FindNum"/>
									</xsl:otherwise>
								</xsl:choose>
							</xsl:when>
							<xsl:when test="($redlineaction='Changed' and string-length($currrowop) &gt; 0)">
								<xsl:choose>
									<xsl:when test="string-length(current()/agile:RedlinedBOMRowCurrent/agile:FindNum)=1">
										<xsl:value-of select="concat('000',current()/agile:RedlinedBOMRowCurrent/agile:FindNum)"/>
									</xsl:when>
									<xsl:when test="string-length(current()/agile:RedlinedBOMRowCurrent/agile:FindNum)=2">
										<xsl:value-of select="concat('00',current()/agile:RedlinedBOMRowCurrent/agile:FindNum)"/>
									</xsl:when>
									<xsl:when test="string-length(current()/agile:RedlinedBOMRowCurrent/agile:FindNum)=3">
										<xsl:value-of select="concat('0',current()/agile:RedlinedBOMRowCurrent/agile:FindNum)"/>
									</xsl:when>
									<xsl:otherwise>
										<xsl:value-of select="current()/agile:RedlinedBOMRowCurrent/agile:FindNum"/>
									</xsl:otherwise>
								</xsl:choose>
							</xsl:when>
							<xsl:otherwise>
								<xsl:choose>
									<xsl:when test="string-length(current()/agile:RedlinedBOMRowPrevious/agile:FindNum)=1">
										<xsl:value-of select="concat('000',current()/agile:RedlinedBOMRowPrevious/agile:FindNum)"/>
									</xsl:when>
									<xsl:when test="string-length(current()/agile:RedlinedBOMRowPrevious/agile:FindNum)=2">
										<xsl:value-of select="concat('00',current()/agile:RedlinedBOMRowPrevious/agile:FindNum)"/>
									</xsl:when>
									<xsl:when test="string-length(current()/agile:RedlinedBOMRowPrevious/agile:FindNum)=3">
										<xsl:value-of select="concat('0',current()/agile:RedlinedBOMRowPrevious/agile:FindNum)"/>
									</xsl:when>
									<xsl:otherwise>
										<xsl:value-of select="current()/agile:RedlinedBOMRowPrevious/agile:FindNum"/>
									</xsl:otherwise>
								</xsl:choose>
							</xsl:otherwise>
						</xsl:choose>
					</xsl:element>
					<xsl:element name="Parallel_Op">
						<xsl:choose>
							<xsl:when test="$redlineaction =('Added','Unchanged')">
								<xsl:value-of select="current()/agile:RedlinedBOMRowCurrent/agile:BomText02"/>
							</xsl:when>
							<xsl:when test="$redlineaction='Deleted'">
								<xsl:value-of select="current()/agile:RedlinedBOMRowPrevious/agile:BomText02"/>
							</xsl:when>
							<xsl:when test="($redlineaction='Changed' and string-length($currrowparallelop) &gt; 0)">
								<xsl:value-of select="current()/agile:RedlinedBOMRowCurrent/agile:BomText02"/>
							</xsl:when>
							<xsl:otherwise>
								<xsl:value-of select="current()/agile:RedlinedBOMRowPrevious/agile:BomText02"/>
							</xsl:otherwise>
						</xsl:choose>
					</xsl:element>
					<xsl:element name="Seq">
						<xsl:choose>
							<xsl:when test="$redlineaction =('Added','Unchanged')">
								<xsl:value-of select="current()/agile:RedlinedBOMRowCurrent/agile:BomText01"/>
							</xsl:when>
							<xsl:when test="$redlineaction='Deleted'">
								<xsl:value-of select="current()/agile:RedlinedBOMRowPrevious/agile:BomText01"/>
							</xsl:when>
							<xsl:when test="($redlineaction='Changed' and string-length($currrowseq) &gt; 0)">
								<xsl:value-of select="current()/agile:RedlinedBOMRowCurrent/agile:BomText01"/>
							</xsl:when>
							<xsl:otherwise>
								<xsl:value-of select="current()/agile:RedlinedBOMRowPrevious/agile:BomText01"/>
							</xsl:otherwise>
						</xsl:choose>
					</xsl:element>
					<xsl:element name="Quantity">
						<xsl:choose>
							<xsl:when test="$redlineaction =('Added','Unchanged')">
								<xsl:value-of select="current()/agile:RedlinedBOMRowCurrent/agile:Qty"/>
							</xsl:when>
							<xsl:when test="$redlineaction='Deleted'">
								<xsl:value-of select="current()/agile:RedlinedBOMRowPrevious/agile:Qty"/>
							</xsl:when>
							<xsl:when test="($redlineaction='Changed' and string-length($currrowqty) &gt; 0)">
								<xsl:value-of select="current()/agile:RedlinedBOMRowCurrent/agile:Qty"/>
							</xsl:when>
							<xsl:otherwise>
								<xsl:value-of select="current()/agile:RedlinedBOMRowPrevious/agile:Qty"/>
							</xsl:otherwise>
						</xsl:choose>
					</xsl:element>
					<xsl:element name="Category">
						<xsl:choose>
							<xsl:when test="$redlineaction =('Added','Unchanged')">
								<xsl:value-of select="current()/agile:RedlinedBOMRowCurrent/agile:ItemCategory"/>
							</xsl:when>
							<xsl:when test="$redlineaction='Deleted'">
								<xsl:value-of select="current()/agile:RedlinedBOMRowPrevious/agile:ItemCategory"/>
							</xsl:when>
							<xsl:when test="($redlineaction='Changed' and string-length($currrowcat) &gt; 0)">
								<xsl:value-of select="current()/agile:RedlinedBOMRowCurrent/agile:ItemCategory"/>
							</xsl:when>
							<xsl:otherwise>
								<xsl:value-of select="current()/agile:RedlinedBOMRowPrevious/agile:ItemCategory"/>
							</xsl:otherwise>
						</xsl:choose>
					</xsl:element>
				</xsl:element>
			</xsl:when>
		</xsl:choose>
	</xsl:template>
</xsl:stylesheet><!-- Stylus Studio meta-information - (c) 2004-2009. Progress Software Corporation. All rights reserved.

<metaInformation>
	<scenarios>
		<scenario default="no" name="Scenario1" userelativepaths="yes" externalpreview="no" url="C137669\agile.xml" htmlbaseurl="" outputurl="" processortype="saxon8" useresolver="yes" profilemode="0" profiledepth="" profilelength="" urlprofilexml=""
		          commandline="" additionalpath="" additionalclasspath="" postprocessortype="none" postprocesscommandline="" postprocessadditionalpath="" postprocessgeneratedext="" validateoutput="no" validator="internal" customvalidator="">
			<advancedProp name="sInitialMode" value=""/>
			<advancedProp name="schemaCache" value="||"/>
			<advancedProp name="bXsltOneIsOkay" value="true"/>
			<advancedProp name="bSchemaAware" value="true"/>
			<advancedProp name="bGenerateByteCode" value="true"/>
			<advancedProp name="bXml11" value="false"/>
			<advancedProp name="iValidation" value="0"/>
			<advancedProp name="bExtensions" value="true"/>
			<advancedProp name="iWhitespace" value="0"/>
			<advancedProp name="sInitialTemplate" value=""/>
			<advancedProp name="bTinyTree" value="true"/>
			<advancedProp name="xsltVersion" value="2.0"/>
			<advancedProp name="bWarnings" value="true"/>
			<advancedProp name="bUseDTD" value="false"/>
			<advancedProp name="iErrorHandling" value="fatal"/>
		</scenario>
		<scenario default="no" name="Scenario2" userelativepaths="yes" externalpreview="no" url="C137669 BOM\agile.xml" htmlbaseurl="" outputurl="" processortype="saxon8" useresolver="yes" profilemode="0" profiledepth="" profilelength="" urlprofilexml=""
		          commandline="" additionalpath="" additionalclasspath="" postprocessortype="none" postprocesscommandline="" postprocessadditionalpath="" postprocessgeneratedext="" validateoutput="no" validator="internal" customvalidator="">
			<advancedProp name="sInitialMode" value=""/>
			<advancedProp name="schemaCache" value="||"/>
			<advancedProp name="bXsltOneIsOkay" value="true"/>
			<advancedProp name="bSchemaAware" value="true"/>
			<advancedProp name="bGenerateByteCode" value="true"/>
			<advancedProp name="bXml11" value="false"/>
			<advancedProp name="iValidation" value="0"/>
			<advancedProp name="bExtensions" value="true"/>
			<advancedProp name="iWhitespace" value="0"/>
			<advancedProp name="sInitialTemplate" value=""/>
			<advancedProp name="bTinyTree" value="true"/>
			<advancedProp name="xsltVersion" value="2.0"/>
			<advancedProp name="bWarnings" value="true"/>
			<advancedProp name="bUseDTD" value="false"/>
			<advancedProp name="iErrorHandling" value="fatal"/>
		</scenario>
		<scenario default="no" name="Scenario3" userelativepaths="yes" externalpreview="no" url="C137780\agile.xml" htmlbaseurl="" outputurl="" processortype="saxon8" useresolver="yes" profilemode="0" profiledepth="" profilelength="" urlprofilexml=""
		          commandline="" additionalpath="" additionalclasspath="" postprocessortype="none" postprocesscommandline="" postprocessadditionalpath="" postprocessgeneratedext="" validateoutput="no" validator="internal" customvalidator="">
			<advancedProp name="sInitialMode" value=""/>
			<advancedProp name="schemaCache" value="||"/>
			<advancedProp name="bXsltOneIsOkay" value="true"/>
			<advancedProp name="bSchemaAware" value="true"/>
			<advancedProp name="bGenerateByteCode" value="true"/>
			<advancedProp name="bXml11" value="false"/>
			<advancedProp name="iValidation" value="0"/>
			<advancedProp name="bExtensions" value="true"/>
			<advancedProp name="iWhitespace" value="0"/>
			<advancedProp name="sInitialTemplate" value=""/>
			<advancedProp name="bTinyTree" value="true"/>
			<advancedProp name="xsltVersion" value="2.0"/>
			<advancedProp name="bWarnings" value="true"/>
			<advancedProp name="bUseDTD" value="false"/>
			<advancedProp name="iErrorHandling" value="fatal"/>
		</scenario>
		<scenario default="no" name="Scenario4" userelativepaths="yes" externalpreview="no" url="C137780\agile.xml" htmlbaseurl="" outputurl="" processortype="saxon8" useresolver="yes" profilemode="0" profiledepth="" profilelength="" urlprofilexml=""
		          commandline="" additionalpath="" additionalclasspath="" postprocessortype="none" postprocesscommandline="" postprocessadditionalpath="" postprocessgeneratedext="" validateoutput="no" validator="internal" customvalidator="">
			<advancedProp name="xsdVersion" value="1.0"/>
			<advancedProp name="sInitialMode" value=""/>
			<advancedProp name="schemaCache" value="||"/>
			<advancedProp name="bXsltOneIsOkay" value="true"/>
			<advancedProp name="bSchemaAware" value="true"/>
			<advancedProp name="bGenerateByteCode" value="true"/>
			<advancedProp name="bXml11" value="false"/>
			<advancedProp name="iValidation" value="0"/>
			<advancedProp name="bExtensions" value="true"/>
			<advancedProp name="iWhitespace" value="0"/>
			<advancedProp name="sInitialTemplate" value=""/>
			<advancedProp name="bTinyTree" value="true"/>
			<advancedProp name="xsltVersion" value="2.0"/>
			<advancedProp name="bWarnings" value="true"/>
			<advancedProp name="bUseDTD" value="false"/>
			<advancedProp name="iErrorHandling" value="0"/>
		</scenario>
		<scenario default="yes" name="Scenario5" userelativepaths="yes" externalpreview="no" url="C137794\agile.xml" htmlbaseurl="" outputurl="" processortype="saxon8" useresolver="yes" profilemode="0" profiledepth="" profilelength="" urlprofilexml=""
		          commandline="" additionalpath="" additionalclasspath="" postprocessortype="none" postprocesscommandline="" postprocessadditionalpath="" postprocessgeneratedext="" validateoutput="no" validator="internal" customvalidator="">
			<advancedProp name="sInitialMode" value=""/>
			<advancedProp name="bXsltOneIsOkay" value="true"/>
			<advancedProp name="bSchemaAware" value="true"/>
			<advancedProp name="bGenerateByteCode" value="true"/>
			<advancedProp name="bXml11" value="false"/>
			<advancedProp name="iValidation" value="0"/>
			<advancedProp name="bExtensions" value="true"/>
			<advancedProp name="iWhitespace" value="0"/>
			<advancedProp name="sInitialTemplate" value=""/>
			<advancedProp name="bTinyTree" value="true"/>
			<advancedProp name="xsltVersion" value="2.0"/>
			<advancedProp name="bWarnings" value="true"/>
			<advancedProp name="bUseDTD" value="false"/>
			<advancedProp name="iErrorHandling" value="fatal"/>
		</scenario>
	</scenarios>
	<MapperMetaTag>
		<MapperInfo srcSchemaPathIsRelative="yes" srcSchemaInterpretAsXML="no" destSchemaPath="" destSchemaRoot="" destSchemaPathIsRelative="yes" destSchemaInterpretAsXML="no"/>
		<MapperBlockPosition></MapperBlockPosition>
		<TemplateContext></TemplateContext>
		<MapperFilter side="source"></MapperFilter>
	</MapperMetaTag>
</metaInformation>
-->