CassidyHunt
IS-IT--Management
I have an xmldocument that is fairly large and I want to transform it for html display. Here is a sample of the XML:
It keeps going but its pretty easy to get the idea. I have about 5000 items in it that when I process the whole thing using the xsl below it is very slow.
I know that it is probably really slow because I am looping through each item and running several tests against it. I am not good enough with xpath to be know if you could select just requirements that fit the parameters without passing parameters and testing.
If anyone knows I would be greatly appreciative.
Cassidy
Code:
<?xml version="1.0"?>
<Dispatch xmlns:xsi="[URL unfurl="true"]http://www.w3.org/2001/XMLSchema-instance"[/URL] xsi:noNamespaceSchemaLocation="file:///c:/Inetpub/[URL unfurl="true"]wwwroot/dispatch.xsd">[/URL]
<Operation>
<SCHEDULE_ID>STD_WHAT IF</SCHEDULE_ID>
<WORKORDER_TYPE>W</WORKORDER_TYPE>
<WORKORDER_BASE_ID>S40920</WORKORDER_BASE_ID>
<WORKORDER_LOT_ID>2</WORKORDER_LOT_ID>
<WORKORDER_SPLIT_ID>0</WORKORDER_SPLIT_ID>
<WORKORDER_SUB_ID>0</WORKORDER_SUB_ID>
<SEQUENCE_NO>60</SEQUENCE_NO>
<RESOURCE_ID>9C9</RESOURCE_ID>
<UNIT_ASSIGNED>5</UNIT_ASSIGNED>
<START_DATE>2005-12-09T07:00:00.0000000-08:00</START_DATE>
<COULD_START_DATE>2005-12-09T07:00:00.0000000-08:00</COULD_START_DATE>
<FINISH_DATE>2005-12-09T08:50:00.0000000-08:00</FINISH_DATE>
<ISDETERMINANT>Y</ISDETERMINANT>
<DIRECTION>F</DIRECTION>
<DELAY_REASON>N</DELAY_REASON>
<IS_CONCURRENT>N</IS_CONCURRENT>
<ORG_RESOURCE_ID>9C9</ORG_RESOURCE_ID>
<WORKORDER_USER_1>FAIRLEAD LABBY PLATE</WORKORDER_USER_1>
<WORKORDER_USER_3>CORDERO</WORKORDER_USER_3>
<WORKORDER_ENGINEERED_BY>WCC</WORKORDER_ENGINEERED_BY>
<WORKORDER_SPEC>FAIRLEAD LABBY PLATE</WORKORDER_SPEC>
<CUSTOMER_NAME>RIO TINTO SERVICES, INC.</CUSTOMER_NAME>
<CONCURRENT>9C9</CONCURRENT>
</Operation>
<Operation>
<SCHEDULE_ID>STD_WHAT IF</SCHEDULE_ID>
<WORKORDER_TYPE>W</WORKORDER_TYPE>
<WORKORDER_BASE_ID>S40920</WORKORDER_BASE_ID>
<WORKORDER_LOT_ID>3</WORKORDER_LOT_ID>
<WORKORDER_SPLIT_ID>0</WORKORDER_SPLIT_ID>
<WORKORDER_SUB_ID>0</WORKORDER_SUB_ID>
<SEQUENCE_NO>10</SEQUENCE_NO>
<RESOURCE_ID>3MACH3</RESOURCE_ID>
<UNIT_ASSIGNED>4</UNIT_ASSIGNED>
<START_DATE>2005-12-14T12:20:00.0000000-08:00</START_DATE>
<COULD_START_DATE>2005-12-14T07:30:00.0000000-08:00</COULD_START_DATE>
<FINISH_DATE>2005-12-15T07:40:00.0000000-08:00</FINISH_DATE>
<ISDETERMINANT>Y</ISDETERMINANT>
<DIRECTION>F</DIRECTION>
<DELAY_REASON>N</DELAY_REASON>
<IS_CONCURRENT>N</IS_CONCURRENT>
<GROUP_RESOURCE_ID>3SMACH</GROUP_RESOURCE_ID>
<ORG_RESOURCE_ID>3MACH3</ORG_RESOURCE_ID>
<MAIN_RESOURCE>3SV5</MAIN_RESOURCE>
<ACT_SETUP_HRS>0</ACT_SETUP_HRS>
<ACT_RUN_HRS>12.07</ACT_RUN_HRS>
<CALC_START_QTY>1</CALC_START_QTY>
<COMPLETED_QTY>1</COMPLETED_QTY>
<OPERATION_SPEC>PRINT OFF A COPY OF THE PRINT
LOCATE THE MATERIAL IN THE MACHINE SHOP OR SHIPPING.
HOURS FOR THIS OPERATION PROVIDED BY RUSS SHEEHAN. IF YOU CANNOT MEET THESE POSTED HOURS PLEASE GET WITH YOU SUPER VISOR AND BILLY TO GET THEM ADJUSTED PRIOR TO STARTING THIS WORK CENTER. THIS WILL IN TURN ALLOW THE SYSTEM TO SCHEDULE MORE ACCURATELY AND ALLOW YOU TO CLOSE PROPER % COMPLETE.
MACHINE THE TUBING AS PER PRINT AND STAGE IT TO THE MECH SHOP</OPERATION_SPEC>
<WORKORDER_USER_1>LHDL0154 MARION UPPER FAIRLEAD</WORKORDER_USER_1>
<WORKORDER_USER_2>NA</WORKORDER_USER_2>
<WORKORDER_USER_3>CORDERO</WORKORDER_USER_3>
<WORKORDER_ENGINEERED_BY>WCC</WORKORDER_ENGINEERED_BY>
<WORKORDER_SPEC>MARION 8200 UPPER FAIR LEAD PARTS</WORKORDER_SPEC>
<CUSTOMER_NAME>RIO TINTO SERVICES, INC.</CUSTOMER_NAME>
<CONCURRENT>3MACH3</CONCURRENT>
</Operation>
<Operation>
<SCHEDULE_ID>STD_WHAT IF</SCHEDULE_ID>
<WORKORDER_TYPE>W</WORKORDER_TYPE>
<WORKORDER_BASE_ID>S40920</WORKORDER_BASE_ID>
<WORKORDER_LOT_ID>3</WORKORDER_LOT_ID>
<WORKORDER_SPLIT_ID>0</WORKORDER_SPLIT_ID>
<WORKORDER_SUB_ID>1</WORKORDER_SUB_ID>
<SEQUENCE_NO>10</SEQUENCE_NO>
<RESOURCE_ID>9C9</RESOURCE_ID>
<UNIT_ASSIGNED>0</UNIT_ASSIGNED>
<START_DATE>2005-12-14T07:00:00.0000000-08:00</START_DATE>
<COULD_START_DATE>2005-12-09T13:40:00.0000000-08:00</COULD_START_DATE>
<FINISH_DATE>2005-12-14T07:20:00.0000000-08:00</FINISH_DATE>
<ISDETERMINANT>Y</ISDETERMINANT>
<DIRECTION>F</DIRECTION>
<DELAY_REASON>M, </DELAY_REASON>
<IS_CONCURRENT>N</IS_CONCURRENT>
<ORG_RESOURCE_ID>9C9</ORG_RESOURCE_ID>
<MAIN_RESOURCE>9C9</MAIN_RESOURCE>
<ACT_SETUP_HRS>0</ACT_SETUP_HRS>
<ACT_RUN_HRS>0</ACT_RUN_HRS>
<CALC_START_QTY>1</CALC_START_QTY>
<COMPLETED_QTY>0</COMPLETED_QTY>
<OPERATION_SPEC>ORDER THIS MATERIAL </OPERATION_SPEC>
<CUSTOMER_NAME>RIO TINTO SERVICES, INC.</CUSTOMER_NAME>
<CONCURRENT>9C9</CONCURRENT>
</Operation>
<Requirement>
<SCHEDULE_ID>TOMORROW</SCHEDULE_ID>
<WORKORDER_TYPE>W</WORKORDER_TYPE>
<WORKORDER_BASE_ID>S40620</WORKORDER_BASE_ID>
<WORKORDER_LOT_ID>2</WORKORDER_LOT_ID>
<WORKORDER_SPLIT_ID>0</WORKORDER_SPLIT_ID>
<WORKORDER_SUB_ID>0</WORKORDER_SUB_ID>
<SEQUENCE_NO>60</SEQUENCE_NO>
<PIECE_NO>20</PIECE_NO>
<PART_ID>W II70 .062 60#</PART_ID>
<REQUIRED_DATE>2006-01-19T16:00:00.0000000-08:00</REQUIRED_DATE>
<ISSUED_QTY>0</ISSUED_QTY>
<DESCRIPTION>WIRE II70 1/16 60# DS</DESCRIPTION>
<QTY_ON_HAND>92</QTY_ON_HAND>
<PRIMARY_WHS_ID>G</PRIMARY_WHS_ID>
</Requirement>
<Requirement>
<SCHEDULE_ID>TOMORROW</SCHEDULE_ID>
<WORKORDER_TYPE>W</WORKORDER_TYPE>
<WORKORDER_BASE_ID>S40620</WORKORDER_BASE_ID>
<WORKORDER_LOT_ID>2</WORKORDER_LOT_ID>
<WORKORDER_SPLIT_ID>0</WORKORDER_SPLIT_ID>
<WORKORDER_SUB_ID>0</WORKORDER_SUB_ID>
<SEQUENCE_NO>100</SEQUENCE_NO>
<PIECE_NO>10</PIECE_NO>
<REQUIRED_DATE>2006-01-26T20:50:00.0000000-08:00</REQUIRED_DATE>
<ISSUED_QTY>0</ISSUED_QTY>
<REQUIREMENT_SPEC>CUT AND BEVEL DOWELS </REQUIREMENT_SPEC>
</Requirement>
<Requirement>
<SCHEDULE_ID>TOMORROW</SCHEDULE_ID>
<WORKORDER_TYPE>W</WORKORDER_TYPE>
<WORKORDER_BASE_ID>S41084</WORKORDER_BASE_ID>
<WORKORDER_LOT_ID>1</WORKORDER_LOT_ID>
<WORKORDER_SPLIT_ID>0</WORKORDER_SPLIT_ID>
<WORKORDER_SUB_ID>0</WORKORDER_SUB_ID>
<SEQUENCE_NO>50</SEQUENCE_NO>
<PIECE_NO>10</PIECE_NO>
<REQUIRED_DATE>2006-01-23T06:00:00.0000000-08:00</REQUIRED_DATE>
<ISSUED_QTY>0</ISSUED_QTY>
<REQUIREMENT_SPEC>CUT MATERIAL FOR SEAL FITS</REQUIREMENT_SPEC>
</Requirement>
It keeps going but its pretty easy to get the idea. I have about 5000 items in it that when I process the whole thing using the xsl below it is very slow.
Code:
<xsl:stylesheet version="1.0" xmlns:xsl="[URL unfurl="true"]http://www.w3.org/1999/XSL/Transform">[/URL]
<xsl:output method="html"/>
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="//Dispatch/Operation">
<xsl:value-of select="WORKORDER_BASE_ID"/>
<ul>
<xsl:apply-templates select="//Dispatch/Requirement">
<xsl:with-param name="scheduleid" select="SCHEDULE_ID" />
<xsl:with-param name="workordertype" select="WORKORDER_TYPE" />
<xsl:with-param name="workorderbaseid" select="WORKORDER_BASE_ID" />
<xsl:with-param name="workorderlotid" select="WORKORDER_LOT_ID" />
<xsl:with-param name="workordersplitid" select="WORKORDER_SPLIT_ID" />
<xsl:with-param name="workordersubid" select="WORKORDER_SUB_ID" />
<xsl:with-param name="sequenceno" select="SEQUENCE_NO" />
</xsl:apply-templates>
</ul>
</xsl:template>
<xsl:template match="//Dispatch/Requirement">
<xsl:param name="scheduleid" />
<xsl:param name="workordertype" />
<xsl:param name="workorderbaseid" />
<xsl:param name="workorderlotid" />
<xsl:param name="workordersplitid" />
<xsl:param name="workordersubid" />
<xsl:param name="sequenceno" />
<xsl:if test="SCHEDULE_ID = $scheduleid">
<xsl:if test="WORKORDER_TYPE = $workordertype">
<xsl:if test="WORKORDER_BASE_ID = $workorderbaseid">
<xsl:if test="WORKORDER_LOT_ID = $workorderlotid">
<xsl:if test="WORKORDER_SPLIT_ID = $workordersplitid">
<xsl:if test="WORKORDER_SUB_ID = $workordersubid">
<xsl:if test="SEQUENCE_NO = $sequenceno">
<li><xsl:value-of select="PART_ID"/> <xsl:value-of select="PIECE_NO"/></li>
</xsl:if>
</xsl:if>
</xsl:if>
</xsl:if>
</xsl:if>
</xsl:if>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
I know that it is probably really slow because I am looping through each item and running several tests against it. I am not good enough with xpath to be know if you could select just requirements that fit the parameters without passing parameters and testing.
If anyone knows I would be greatly appreciative.
Cassidy