XSL File to Map a Material

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
	xmlns:h="http://www.wbf.org/xml/B2MML-V0401"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
	<xsl:output indent="yes" method="xml" omit-xml-declaration="yes"/>
	<xsl:strip-space elements="*"/>
	<xsl:template match="/">
		<xsl:apply-templates select="h:ProductInformation"/>
	</xsl:template>
	<xsl:template match="h:ProductInformation">
		<ProductInformation>
			<ID>
				<xsl:value-of select="h:ID"/>
			</ID>
			<Description>
				<xsl:value-of select="h:Description"/>
			</Description>
			<Location>
				<EquipmentID>
					<xsl:value-of select="h:Location/h:EquipmentID"/>
				</EquipmentID>
				<EquipmentElementLevel>
					<xsl:value-of select="h:Location/h:EquipmentElementLevel"/>
				</EquipmentElementLevel>
			</Location>
			<PublishedDate>
				<xsl:value-of select="h:PublishedDate"/>
			</PublishedDate>
			<ProductDefinition>
				<xsl:apply-templates select="h:ProductDefinition"/>
			</ProductDefinition>
		</ProductInformation>
	</xsl:template>
	<xsl:template match="h:ProductDefinition">
		<ID>
			<xsl:value-of select="h:ID"/>
		</ID>
		<Version>
			<xsl:value-of select="h:Version"/>
		</Version>
		<Description>
			<xsl:value-of select="h:Description"/>
		</Description>
		<Location>
			<EquipmentID/>
			<EquipmentElementLevel/>
		</Location>
		<ProductProductionRule/>
		<BillOfMaterialsID/>
		<BillOfResourcesID/>
		<ManufacturingBill>
			<ID/>
			<Description/>
			<MaterialClassID/>
			<Quantity>
				<QuantityString/>
				<DataType>string</DataType>
				<UnitOfMeasure/>
			</Quantity>
			<BillOfMaterialID/>
		</ManufacturingBill>
		<ProductSegment>
			<xsl:apply-templates select="h:ProductSegment"/>
		</ProductSegment>
	</xsl:template>
	<xsl:template match="h:ProductSegment">
		<ID>
			<xsl:value-of select="h:ID"/>
		</ID>
		<Description>
			<xsl:value-of select="h:Description"/>
		</Description>
		<ProcessSegmentID/>
		<xsl:for-each select="h:Parameter">
			<Parameter>
				<ID>
					<!--<xsl:value-of select="h:ID" /> -->
					<xsl:apply-templates select="h:ID"/>
				</ID>
				<Value>
					<ValueString>
						<xsl:value-of select="h:Value/h:ValueString"/>
					</ValueString>
					<DataType>
						<xsl:choose>
							<xsl:when test="not(h:Value/h:DataType)">
								<xsl:text>string</xsl:text>
							</xsl:when>
							<xsl:otherwise>
								<xsl:value-of select="h:Value/h:DataType"/>
							</xsl:otherwise>
						</xsl:choose>
					</DataType>
					<UnitOfMeasure/>
				</Value>
				<Description/>
			</Parameter>
		</xsl:for-each>
		<PersonnelSpecification>
			<PersonnelClassID/>
			<PersonID/>
			<Description/>
			<Quantity>
				<QuantityString/>
				<DataType>string</DataType>
				<UnitOfMeasure/>
			</Quantity>
			<PersonnelSpecificationProperty>
				<ID/>
				<Description/>
				<Value>
					<ValueString/>
					<DataType>string</DataType>
					<UnitOfMeasure></UnitOfMeasure>
				</Value>
				<Quantity>
					<QuantityString/>
					<DataType>string</DataType>
					<UnitOfMeasure/>
				</Quantity>
			</PersonnelSpecificationProperty>
		</PersonnelSpecification>
		<xsl:for-each select="h:EquipmentSpecification">
			<EquipmentSpecification>
				<EquipmentClassID/>
				<EquipmentID>
					<xsl:value-of select="h:EquipmentId"/>
				</EquipmentID>
				<Description></Description>
				<Quantity>
					<QuantityString/>
					<DataType>string</DataType>
					<UnitOfMeasure/>
				</Quantity>
				<xsl:for-each select="h:EquipmentSpecificationProperty">
					<EquipmentSpecificationProperty>
						<ID>
							<xsl:value-of select="h:ID"/>
						</ID>
						<Description/>
						<Value>
							<ValueString>
								<xsl:value-of select="h:Value/h:ValueString"/>
							</ValueString>
							<DataType>string</DataType>
							<UnitOfMeasure/>
						</Value>
						<Quantity>
							<QuantityString/>
							<DataType>string</DataType>
							<UnitOfMeasure/>
							<Key/>
						</Quantity>
					</EquipmentSpecificationProperty>
				</xsl:for-each>
			</EquipmentSpecification>
		</xsl:for-each>
		<MaterialSpecification>
			<MaterialClassID/>
			<MaterialDefinitionID/>
			<Description/>
			<Quantity>
				<QuantityString/>
				<DataType>string</DataType>
				<UnitOfMeasure/>
			</Quantity>
			<MaterialSpecificationProperty>
				<ID/>
				<Description/>
				<Value>
					<ValueString/>
					<DataType>string</DataType>
					<UnitOfMeasure/>
				</Value>
				<Quantity>
					<QuantityString/>
					<DataType>string</DataType>
					<UnitOfMeasure/>
				</Quantity>
			</MaterialSpecificationProperty>
		</MaterialSpecification>
	</xsl:template>
	<xsl:template match="h:ID/text()[.='PRODUCT_CATEGORY']"> PRODUCT_FAMILY </xsl:template>
</xsl:stylesheet>