dey: Abfrage mit Anspruch

Beitrag lesen

Hallo,

Ja, aber  erst später ;-)

Wäre dir sehr dankbar, vielleicht per Email!?

Ich habe eine funktionierende Lösung.
Die braucht aber 2-3min zur Ausführung bei 4x 350 slots in 2708 Zeilen in der XML:

<!-- Comment: template added to ccount deleted feeders-->
<xsl:template name="deleted">
<xsl:param name="mm8" />
<xsl:param name="mm12" />
<xsl:param name="mm16" />
<xsl:param name="mm24" />
<xsl:param name="mm32" />
<xsl:param name="mm44" />
<xsl:param name="mm56" />
<xsl:param name="slots" />
<xsl:param name="slot" />
<xsl:param name="groupnumber" />
<xsl:variable name="groupnumber2">
 <xsl:value-of select="$groupnumber - 1"/>
</xsl:variable>

xsl:choose
<xsl:when test="$slot != $slots +1">

<xsl:variable name="count8">
xsl:choose
<xsl:when test="//Group[GroupNumber=$groupnumber]/JobList/LineItemList/LineItem/FeederItemList/FeederItem[position()=$slot]/Result ='Delete' and
//Group[GroupNumber=$groupnumber2]/JobList/LineItemList/LineItem/FeederItemList/FeederItem[position()=$slot]/TapeWidth='8'">
1
</xsl:when>
xsl:otherwise0</xsl:otherwise>
</xsl:choose>
</xsl:variable>

<xsl:variable name="count12">
xsl:choose
<xsl:when test="//Group[GroupNumber=$groupnumber]/JobList/LineItemList/LineItem/FeederItemList/FeederItem[position()=$slot]/Result ='Delete' and
//Group[GroupNumber=$groupnumber2]/JobList/LineItemList/LineItem/FeederItemList/FeederItem[position()=$slot]/TapeWidth='12'">
1
</xsl:when>
xsl:otherwise0</xsl:otherwise>
</xsl:choose>
</xsl:variable>

<xsl:variable name="count16">
xsl:choose
<xsl:when test="//Group[GroupNumber=$groupnumber]/JobList/LineItemList/LineItem/FeederItemList/FeederItem[position()=$slot]/Result ='Delete' and
//Group[GroupNumber=$groupnumber2]/JobList/LineItemList/LineItem/FeederItemList/FeederItem[position()=$slot]/TapeWidth='16'">
1
</xsl:when>
xsl:otherwise0</xsl:otherwise>
</xsl:choose>
</xsl:variable>

<xsl:variable name="count24">
xsl:choose
<xsl:when test="//Group[GroupNumber=$groupnumber]/JobList/LineItemList/LineItem/FeederItemList/FeederItem[position()=$slot]/Result ='Delete' and
//Group[GroupNumber=$groupnumber2]/JobList/LineItemList/LineItem/FeederItemList/FeederItem[position()=$slot]/TapeWidth='24'">
1
</xsl:when>
xsl:otherwise0</xsl:otherwise>
</xsl:choose>
</xsl:variable>

<xsl:variable name="count32">
xsl:choose
<xsl:when test="//Group[GroupNumber=$groupnumber]/JobList/LineItemList/LineItem/FeederItemList/FeederItem[position()=$slot]/Result ='Delete' and
//Group[GroupNumber=$groupnumber2]/JobList/LineItemList/LineItem/FeederItemList/FeederItem[position()=$slot]/TapeWidth='32'">
1
</xsl:when>
xsl:otherwise0</xsl:otherwise>
</xsl:choose>
</xsl:variable>

<xsl:variable name="count44">
xsl:choose
<xsl:when test="//Group[GroupNumber=$groupnumber]/JobList/LineItemList/LineItem/FeederItemList/FeederItem[position()=$slot]/Result ='Delete' and
//Group[GroupNumber=$groupnumber2]/JobList/LineItemList/LineItem/FeederItemList/FeederItem[position()=$slot]/TapeWidth='44'">
1
</xsl:when>
xsl:otherwise0</xsl:otherwise>
</xsl:choose>
</xsl:variable>

<xsl:variable name="count56">
xsl:choose
<xsl:when test="//Group[GroupNumber=$groupnumber]/JobList/LineItemList/LineItem/FeederItemList/FeederItem[position()=$slot]/Result ='Delete' and
//Group[GroupNumber=$groupnumber2]/JobList/LineItemList/LineItem/FeederItemList/FeederItem[position()=$slot]/TapeWidth='56'">
1
</xsl:when>
xsl:otherwise0</xsl:otherwise>
</xsl:choose>
</xsl:variable>

<xsl:call-template name="deleted">
<xsl:with-param name="mm8" select="$mm8 + $count8" />
<xsl:with-param name="mm12" select="$mm12 + $count12" />
<xsl:with-param name="mm16" select="$mm16 + $count16" />
<xsl:with-param name="mm24" select="$mm24 + $count24" />
<xsl:with-param name="mm32" select="$mm32 + $count32" />
<xsl:with-param name="mm44" select="$mm44 + $count44" />
<xsl:with-param name="mm56" select="$mm56 + $count56" />
<xsl:with-param name="slots" select="$slots" />
<xsl:with-param name="slot" select="$slot + 1" />
<xsl:with-param name="groupnumber" select="$groupnumber" />
</xsl:call-template>

</xsl:when>
xsl:otherwise
 <tr>
 <td>!!<xsl:value-of select="$mm8"/></td>
 <td><xsl:value-of select="$mm12"/></td>
 <td><xsl:value-of select="$mm16"/></td>
 <td><xsl:value-of select="$mm24"/></td>
 <td><xsl:value-of select="$mm32"/></td>
 <td><xsl:value-of select="$mm44"/></td>
 <td><xsl:value-of select="$mm56"/></td>
</tr>
</xsl:otherwise>
</xsl:choose>

</xsl:template>

Mein Problem ist irgendwie das innerjoin zwischen den slots (= Position in XML). Daher gehe ich über die position() und addiere sowohl die position() als auch meinen count via with-param nach oben.
Wirklich unelegannt!?

Vielleicht eine Idee wie ich hier die Performance verbessere

bydey

--
-- noch immer ein erfolgloser <DIV> Jünger --