XSL File to Map a Process Order

This topic provides a sample XSL file that is used to map a process order.

XSL File to Map a Process Order

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
	<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
	<xsl:strip-space elements="*"/>
	<xsl:template match="ProductionSchedule">
		<ProductionSchedule>
			<ProductionRequest>
				<xsl:variable select="ProductionRequest" name="ProductionRequest"/>
				<xsl:variable select="Location" name="ProductionRequestLocation"/>
				<xsl:variable select="$ProductionRequest/SegmentRequirement" name="SegmentRequirement"/>
				<ID>
					<xsl:value-of select="$ProductionRequest/ID"/>
				</ID>
				<ProductProductionRuleID>
					<xsl:value-of select="$ProductionRequest/ProductProductionRuleID"/>
				</ProductProductionRuleID>
				<Location>
					<EquipmentID>
						<xsl:value-of select="$SegmentRequirement[ID = 1]/EquipmentRequirement/EquipmentID"/>
					</EquipmentID>
					<EquipmentElementLevel>
						<xsl:value-of select="$ProductionRequestLocation/EquipmentElementLevel"/>
					</EquipmentElementLevel>
				</Location>
				<Priority>0</Priority>
				<SegmentRequirement>
					<ID>
						<xsl:value-of select="ID"/>
					</ID>
					<xsl:if test="$SegmentRequirement/EarliestStartTime">
						<EarliestStartTime>
							<xsl:value-of select="$SegmentRequirement/EarliestStartTime"/>
						</EarliestStartTime>
					</xsl:if>
					<xsl:if test="$SegmentRequirement/LatestEndTime">
						<LatestEndTime>
							<xsl:value-of select="$SegmentRequirement/LatestEndTime"/>
						</LatestEndTime>
					</xsl:if>
					<EquipmentRequirement>
						<EquipmentID>
							<xsl:value-of select="$SegmentRequirement/EquipmentRequirement/EquipmentID"/>
						</EquipmentID>
					</EquipmentRequirement>
					<MaterialProducedRequirement>
						<xsl:variable select="$SegmentRequirement/MaterialProducedRequirement" name="MaterialProducedRequirement"/>
						<xsl:variable select="$SegmentRequirement/MaterialProducedRequirement/Quantity" name="Quantity"/>
						<xsl:variable select="$MaterialProducedRequirement/MaterialProducedRequirementProperty" name="MaterialProducedRequirementProperty"/>
						<MaterialDefinitionID>
							<xsl:value-of select="$MaterialProducedRequirement/MaterialDefinitionID"/>
						</MaterialDefinitionID>
						<Quantity>
							<QuantityString>
								<xsl:value-of select="$Quantity/QuantityString"/>
							</QuantityString>
							<DataType>
								<xsl:value-of select="$Quantity/DataType"/>
							</DataType>
							<UnitOfMeasure>
								<xsl:value-of select="$Quantity/UnitOfMeasure"/>
							</UnitOfMeasure>
						</Quantity>
					</MaterialProducedRequirement>
					<xsl:for-each select="$SegmentRequirement/MaterialConsumedRequirement">
						<MaterialConsumedRequirement>
							<xsl:variable select="$SegmentRequirement/MaterialConsumedRequirement" name="MaterialConsumedRequirement"/>
							<xsl:variable select="$MaterialConsumedRequirement/Quantity" name="Quantity"/>
							<xsl:variable select="$MaterialConsumedRequirement/MaterialConsumedRequirementProperty" name="MaterialConsumedRequirementProperty"/>
							<MaterialDefinitionID>
								<xsl:value-of select="$MaterialConsumedRequirement/MaterialDefinitionID"/>
							</MaterialDefinitionID>
							<Quantity>
								<QuantityString>
									<xsl:value-of select="$Quantity/QuantityString"/>
								</QuantityString>
								<DataType>
									<xsl:value-of select="$Quantity/DataType"/>
								</DataType>
								<UnitOfMeasure>
									<xsl:value-of select="$Quantity/UnitOfMeasure"/>
								</UnitOfMeasure>
							</Quantity>
						</MaterialConsumedRequirement>
					</xsl:for-each>
				</SegmentRequirement>
			</ProductionRequest>
		</ProductionSchedule>
	</xsl:template>
</xsl:stylesheet>