von document() zurück in urspr. Quelle
dey
- xsl
Hallo,
bei meinem derzeitigen Projekt freht es sich um eine Rüstlisten anpassung für einen Kunden.
Ich habe eine ursprüngliche Quelle deren Format ich nicht ändern kann, wird aus einer Applikation erzeugt auf deren Quellcode ich keinen Einfluss habe.
Der Kunde möchte, dass Daten (Lagerort) extern hinzu eingelesen werden können.
Das funktioniert soweit zufriedenstellend:
so weit, so gut
Nun soll das ganze nach Lagerort sortiert sein.
Das habe ich auch hinbekommen bloss, wenn ich jetzt mit den gewonnenen Daten die notwendigen Abfragen auf die ursprüngliche Quelle mache kommt nichts mehr zurück:
http://deynews.de/tmp/for-lot4.xml
Ein Stückel code
<xsl:variable name="AllPartNumbers">
<xsl:for-each select="xmlDocument/Group/JobList/LineItemList/LineItem/FeederItemList/FeederItem[count(. | key('partnumbers', PartNumber)[1]) = 1 and PartNumber!='']">
<xsl:value-of select="PartNumber" />
</xsl:for-each>
</xsl:variable>
<xsl:for-each select="document('kanban.txt')//kanban">
<xsl:sort select="pos" order="ascending" data-type="text" />
<xsl:if test="contains($AllPartNumbers,pnum)">
<tr>
<xsl:variable name="PartNumber">
<xsl:value-of select="pnum" />
</xsl:variable>
<td>
<xsl:value-of select="$PartNumber" />
</td>
<td>
<xsl:value-of select="xmlDocument/Group/JobList/LineItemList/LineItem/FeederItemList/FeederItem[PartNumber=$PartNumber]/Position" />
<xsl:for-each select="xmlDocument/Group/JobList/LineItemList/LineItem/FeederItemList/FeederItem[PartNumber=$PartNumber]">
<xsl:value-of select="ancestor::Group/GroupNumber" />
=>
<xsl:value-of select="Position" />
<br />
</xsl:for-each>
Das ist ein Zwischenergebnis meiner Versuche alles einmal rumzuwürfekn in der Hoffnung, dass es irgendwann funktioniert.
Hat jemand einen Vorschlag, wie ich weiterkomme?
bydey
Hallo,
Das habe ich auch hinbekommen bloss, wenn ich jetzt mit den gewonnenen Daten die notwendigen Abfragen auf die ursprüngliche Quelle mache kommt nichts mehr zurück:
http://deynews.de/tmp/for-lot4.xmlEin Stückel code
<xsl:for-each select="document('kanban.txt')//kanban">
Ab hier beziehen sich _alle_ (normale) Pfadangaben auf "document('kanban.txt')//kanban".
<xsl:value-of select="xmlDocument/Group/JobList/LineItemList/LineItem/FeederItemList/FeederItem[PartNumber=$PartNumber]/Position" />
<xsl:for-each select="xmlDocument/Group/JobList/LineItemList/LineItem/FeederItemList/FeederItem[PartNumber=$PartNumber]">
<xsl:value-of select="ancestor::Group/GroupNumber" />
Wen diese Pfade sich im ursprünglichen XML befinden: speichere das ursprüngliche XML in einer globalen Variable: <xsl:variable name="root" select="/" />
Dann kannst du darauf zugreifen:
xsl:for-each select="$root/xmlDocument/Group/JobList/LineItemList/ .... >
Grüße
Thomas
Hallo,
Wen diese Pfade sich im ursprünglichen XML befinden: speichere das ursprüngliche XML in einer globalen Variable: <xsl:variable name="root" select="/" />
Dann kannst du darauf zugreifen:
xsl:for-each select="$root/xmlDocument/Group/JobList/LineItemList/ .... >
Das war einfach zu banal!
Aber wenn man die Lösung bekommt, wie so oft im Nachhinein, absolut logisch.
Vielen Dank (Manchmal könnte man das Gefühl bekommen du hättest XSL der 2-ten Generation mitentwickelt)
bydey
Hallo,
Das war einfach zu banal!
Aber wenn man die Lösung bekommt, wie so oft im Nachhinein, absolut logisch.
;-)
(Manchmal könnte man das Gefühl bekommen du hättest XSL der 2-ten Generation mitentwickelt)
Ehmm ... danke für die "Blumen", aber das wäre doch "ein Spur" zu hoch für mich ;-)
Grüße
Thomas