Transforming XML to XML using XSL
Hi I have 5 xsl files . I need to make the parent xml file that the 5 xsl's can parse so I can have 5 child xml's. The 5 xsl's are as below one by one:
1. purchasePart.xsl
<?xml version="1.0"?>
<!--
/// purchasePart.xsl
///
/// 6/15/2004: MiScUS Add hardcoded Company value
///
-->
<xsl:stylesheet xmlns:ifs="urn:ifsworld-com:schemas:order_supply_demand-order_supply_demand" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" exclude-result-prefixes="ifs">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:choose>
<xsl:when test="Catalog/Header[@sender_id='EDR']">
<xsl:element name="PRODUCT">
<xsl:element name="SENDER_ID"><xsl:value-of select="Catalog/Header/@sender_id"/></xsl:element>
<xsl:element name="RECEIVER_ID"><xsl:value-of select="Catalog/Header/@receiver_id"/></xsl:element>
<xsl:element name="PART_PRODUCT">
<xsl:for-each select="Catalog/Line">
<xsl:for-each select="ProductId[@product_id_qualifier='BP']">
<xsl:element name="PURCHASE_PART">
<COMPANY>500</COMPANY>
<xsl:element name="PART_NO"><xsl:value-of select="@product_id"/></xsl:element>
<xsl:if test="../DesignAttr/@std_pkg_quantity">
<xsl:element name="STANDARD_PACK_SIZE"><xsl:value-of select="../DesignAttr/@std_pkg_quantity"/></xsl:element>
</xsl:if>
<xsl:for-each select="../DescContent/Narrative[@narrative_type='Catalog # Description']">
<xsl:element name="DESCRIPTION"><xsl:value-of select="@content"/></xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</xsl:for-each>
</xsl:element>
</xsl:element>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
2. Part_catalog.xsl
<?xml version="1.0"?>
<xsl:stylesheet xmlns:ifs="urn:ifsworld-com:schemas:order_supply_demand-order_supply_demand" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" exclude-result-prefixes="ifs">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:choose>
<xsl:when test="Catalog/Header[@sender_id='EDR']">
<xsl:element name="PRODUCT">
<xsl:element name="SENDER_ID"><xsl:value-of select="Catalog/Header/@sender_id"/></xsl:element>
<xsl:element name="RECEIVER_ID"><xsl:value-of select="Catalog/Header/@receiver_id"/></xsl:element>
<xsl:element name="PART_PRODUCT">
<xsl:for-each select="Catalog/Line">
<xsl:element name="PART_CATALOG">
<xsl:for-each select="ProductId[@product_id_qualifier='BP']">
<xsl:element name="PART_NO"><xsl:value-of select="@product_id"/></xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</xsl:element></xsl:element>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
3.Inventory_part.xsl
<?xml version="1.0"?>
<xsl:stylesheet xmlns:ifs="urn:ifsworld-com:schemas:order_supply_demand-order_supply_demand" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" exclude-result-prefixes="ifs">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:choose>
<xsl:when test="Catalog/Header[@sender_id='EDR']">
<xsl:element name="PRODUCT">
<xsl:element name="SENDER_ID"><xsl:value-of select="Catalog/Header/@sender_id"/></xsl:element>
<xsl:element name="RECEIVER_ID"><xsl:value-of select="Catalog/Header/@receiver_id"/></xsl:element>
<xsl:element name="PART_PRODUCT">
<xsl:for-each select="Catalog/Line">
<xsl:for-each select="ProductId[@product_id_qualifier='BP']">
<xsl:element name="INVENTORY_PART">
<COMPANY>500</COMPANY>
<xsl:element name="PART_NO"><xsl:value-of select="@product_id"/></xsl:element>
<xsl:if test="../@lead_time">
<xsl:element name="PURCH_LEADTIME"><xsl:value-of select="../@lead_time"/></xsl:element>
<xsl:element name="EXPECTED_LEADTIME"><xsl:value-of select="../@lead_time"/></xsl:element>
</xsl:if>
<xsl:element name="MANUFACTURER_PART_ID"><xsl:value-of select="../ProductId/@product_id"/></xsl:element>
<xsl:for-each select="../DescContent/Narrative[@narrative_type='Catalog # Description']">
<xsl:element name="DESCRIPTION"><xsl:value-of select="@content"/></xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</xsl:for-each>
</xsl:element></xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="PRODUCT">
<xsl:element name="SENDER_ID"><xsl:value-of select="Catalog/Header/@sender_id"/></xsl:element>
<xsl:if test="Catalog/Header/@receiver_id='RAIASBS'">
<xsl:element name="RECEIVER_ID">37535</xsl:element>
</xsl:if>
<xsl:element name="PART_PRODUCT">
<xsl:for-each select="Catalog/Line">
<xsl:element name="INVENTORY_PART">
<COMPANY>500</COMPANY>
<xsl:for-each select="ProductId">
<xsl:if test="product_id_qualifier='BP'">
<xsl:element name="PART_NO"><xsl:value-of select="product_id"/></xsl:element>
</xsl:if>
</xsl:for-each>
<xsl:choose>
<xsl:when test="Pricing[@base_unit_price='QE']">
<xsl:element name="ESTIMATED_MATERIAL_COST"><xsl:value-of select="Pricing/@unit_price div 1"/></xsl:element>
</xsl:when>
<xsl:when test="Pricing[@base_unit_price='QH']">
<xsl:element name="ESTIMATED_MATERIAL_COST"><xsl:value-of select="Pricing/@unit_price div 100"/></xsl:element>
</xsl:when>
<xsl:when test="Pricing[@base_unit_price='QS']">
<xsl:element name="ESTIMATED_MATERIAL_COST"><xsl:value-of select="Pricing/@unit_price div 1000"/></xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="ESTIMATED_MATERIAL_COST"></xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
4. Engineering_Part.xsl
<?xml version="1.0"?>
<xsl:stylesheet xmlns:ifs="urn:ifsworld-com:schemas:order_supply_demand-order_supply_demand" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" exclude-result-prefixes="ifs">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:element name="PRODUCT">
<xsl:element name="SENDER_ID"><xsl:value-of select="Catalog/Header/@sender_id"/></xsl:element>
<xsl:if test="Catalog/Header/@receiver_id='RAIASBS'">
<xsl:element name="RECEIVER_ID">37535</xsl:element>
</xsl:if>
<xsl:element name="PART_PRODUCT">
<xsl:for-each select="Catalog/Line">
<xsl:element name="ENG_PART_MASTER">
<xsl:for-each select="ProductId">
<xsl:if test="product_id_qualifier='BP'">
<xsl:element name="PART_NO"><xsl:value-of select="product_id"/></xsl:element>
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
5.Purchase_part_supplier.xsl
<?xml version="1.0"?>
<xsl:stylesheet xmlns:ifs="urn:ifsworld-com:schemas:order_supply_demand-order_supply_demand" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" exclude-result-prefixes="ifs">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:choose>
<xsl:when test="Catalog/Header[@sender_id='EDR']">
<xsl:element name="PRODUCT">
<xsl:element name="SENDER_ID"><xsl:value-of select="Catalog/Header/@sender_id"/></xsl:element>
<xsl:element name="RECEIVER_ID"><xsl:value-of select="Catalog/Header/@receiver_id"/></xsl:element>
<xsl:element name="PART_PRODUCT">
<xsl:for-each select="Catalog/Line">
<xsl:element name="PURCHASE_PART_SUPPLIER">
<COMPANY>500</COMPANY>
<xsl:for-each select="ProductId[@product_id_qualifier='BP']">
<xsl:element name="PART_NO"><xsl:value-of select="@product_id"/></xsl:element>
<xsl:if test="../@lead_time">
<xsl:element name="VENDOR_MANUF_LEADTIME"><xsl:value-of select="../@lead_time"/></xsl:element>
</xsl:if>
<xsl:for-each select="../DescContent/Narrative[@narrative_type='Catalog # Description']">
<xsl:element name="VENDOR_PART_DESCRIPTION"><xsl:value-of select="@content"/></xsl:element>
</xsl:for-each>
<xsl:if test="../DesignAttr/@std_pkg_quantity">
<xsl:element name="STD_MULTIPLE_QTY"><xsl:value-of select="../DesignAttr/@std_pkg_quantity"/></xsl:element>
<xsl:element name="STANDARD_PACK_SIZE"><xsl:value-of select="../DesignAttr/@std_pkg_quantity"/></xsl:element>
</xsl:if>
<xsl:if test="../DesignAttr/@min_ord_quantity">
<xsl:element name="MINIMUM_QTY"><xsl:value-of select="../DesignAttr/@min_ord_quantity"/></xsl:element>
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="PRODUCT">
<xsl:element name="SENDER_ID"><xsl:value-of select="Catalog/Header/@sender_id"/></xsl:element>
<xsl:if test="Catalog/Header/@receiver_id='RAIASBS'">
<xsl:element name="RECEIVER_ID">37535</xsl:element>
</xsl:if>
<xsl:element name="PART_PRODUCT">
<xsl:for-each select="Catalog/Line">
<xsl:element name="PURCHASE_PART_SUPPLIER">
<COMPANY>500</COMPANY>
<xsl:for-each select="ProductId">
<xsl:if test="product_id_qualifier='BP'">
<xsl:element name="PART_NO"><xsl:value-of select="product_id"/></xsl:element>
</xsl:if>
<xsl:if test="product_id_qualifier='VP'">
<xsl:element name="VENDOR_PART_NO"><xsl:value-of select="product_id"/></xsl:element>
</xsl:if>
</xsl:for-each>
<xsl:choose>
<xsl:when test="Pricing[@base_unit_price='QE']">
<xsl:element name="PRICE_UNIT_MEAS">PE</xsl:element>
<xsl:element name="PRICE_CONV_FACTOR">1</xsl:element>
<xsl:element name="LIST_PRICE"><xsl:value-of select="Pricing/@unit_price"/></xsl:element>
</xsl:when>
<xsl:when test="Pricing[@base_unit_price='QH']">
<xsl:element name="PRICE_UNIT_MEAS">HP</xsl:element>
<xsl:element name="PRICE_CONV_FACTOR">100</xsl:element>
<xsl:element name="LIST_PRICE"><xsl:value-of select="Pricing/@unit_price"/></xsl:element>
</xsl:when>
<xsl:when test="Pricing[@base_unit_price='QS']">
<xsl:element name="PRICE_UNIT_MEAS">TP</xsl:element>
<xsl:element name="PRICE_CONV_FACTOR">1000</xsl:element>
<xsl:element name="LIST_PRICE"><xsl:value-of select="Pricing/@unit_price"/></xsl:element>
</xsl:when>
</xsl:choose>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
So these are the 5 xsl's . I need the one parent xml that all five can parse so that we can get 5 xml's.
Can anyone help.....
|