XSL File to Map a Process Order

<?xml version="1.0" encoding="UTF-8"?>

-<xsl:stylesheet xmlns:Extended="http://www.wbf.org/xml/B2MML-V0401-AllExtensions" 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>


-<xsl:for-each select="$SegmentRequirement/ProductionParameter">


-<ProductionParameter>

<xsl:variable select="Parameter" name="Parameter"/>

<xsl:variable select="$Parameter/Value" name="ParameterValue"/>


-<Parameter>


-<ID>

<xsl:apply-templates select="$Parameter/ID"/>

<!-- <xsl:value-of select="$Parameter/inp2:ID" /> -->


</ID>


-<Value>


-<ValueString>

<xsl:value-of select="$ParameterValue/ValueString"/>

</ValueString>


-<DataType>


-<xsl:choose>


-<xsl:when test="not($ParameterValue/DataType)">

<xsl:text>string</xsl:text>

</xsl:when>


-<xsl:otherwise>

<xsl:value-of select="$ParameterValue/DataType"/>

</xsl:otherwise>

</xsl:choose>

</DataType>


-<UnitOfMeasure>

<xsl:value-of select="$ParameterValue/UnitOfMeasure"/>

</UnitOfMeasure>

</Value>


-<Description>

<xsl:value-of select="$Parameter/Description"/>

</Description>

</Parameter>

</ProductionParameter>

</xsl:for-each>


-<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>


-<xsl:if test="$Quantity">


-<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>

</xsl:if>

</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>


-<Extended:SchemaVersion>

<xsl:value-of select="Extended:SchemaVersion"/>

</Extended:SchemaVersion>

</ProductionSchedule>

</xsl:template>

</xsl:stylesheet>