Ein Problem mit position () in XSL ... oder doch nicht?
Ich hatte dieses Problem strage während der Erstellung einer XSL heute. Suchte nach Antworten im gesamten Netz, bekam aber nicht fündig geworden .... Eigentlich habe ich erraten! Ich DINT wissen, was mein Problem war, so was muss ich achten?
Auf jeden Fall! Nur für den Fall haben Sie dieses sehr gleiche Problem haben und irgendwie durch die Macht des FORCE Sie es geschafft, auf dieser Seite landen ... Sie würden mir danken Tonnen ... Und wenn Sie zufällig auf dieser Seite aus irgendeinem seltsamen Schicksal gelandet sind und Sie gerade sind ein XSL-Entwickler, Machen Sie mal eine Anmerkung des mittlerweile auf, für die Zukunft verursachen, wenn eines Tages, Sie dieses Problem zu begegnen, dann ist die Kraft vielleicht nicht mit euch sein.
Problemstellung:
Ich habe diese XML, wo es zwei Knoten mit mehreren Objekte enthalten und die Elemente zwischen diesen zwei Knoten eine Eins-zu Eins-Entsprechung. Im Beispiel unten, jedes Element im Knoten <array name="PLAYURL" /> bezieht (entsprechend Position) auf einen Posten im Knoten <array name="SITENAME" />
<?xml version="1.0" encoding="utf-8"?>
<myplaylists>
<playlist>
<title>Best of Rest </title>
<array name="SITENAME">
<str>www.musicindiaonline.com</str>
<str>www.dhingana.com</str>
<str>www.raaga.com</str>
<str>www.smashits.com</str>
<str>www.desimusic.com</str>
<str>www.musicplug.in</str>
</array>
<array name="PLAYURL">
<str>http://www.musicindiaonline.com/123/</str>
<str>http://www.dhingana.com/play/123</str>
<str>http://www.raaga.com/123</str>
<str>http://ww.smashits.com/123</str>
<str>http://www.desimusic.com/123</str>
<str>http://www.musicplug.in/123</str>
</array>
</playlist>
</myplaylists>
Nun, ich habe eine Schleife, wo ich eine Schleife durch <array name="SITENAME">, und ich, um das entsprechende Element (an der entsprechenden Position) in <array name="PLAYURL"> erhalten möchten,
Was würden Sie normalerweise versuchen zu tun ist ...
<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
play from : <a href="{../../array[@name='PLAY']/str[position()]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>
SORRY! Diese nicht funktionieren ... Ah!! Überascht ...
Jetzt würden Sie wahrscheinlich wollen versuchen, so etwas wie dieses ...
<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos"> <xsl:value-of select="position()"/></xsl:variable>
play from : <a href="{../../array[@name='PLAY']/str[$pos]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>
Und wieder diese nicht funktionieren ... Jetzt am Kopf kratzen und versuchen, jeden, der etwas weiß, Sie denken, XSL und wenden könnte eine Hilfe sein ... Sie versuchen, jede andere Option ... und es immer noch nicht funktionieren ... Naja! Thats, was mir passiert ist atleast ...
AUSSCHLIEßEN DESPAIR! TRY THIS
<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos-int" select="position()" />
play from : <a href="{../../array[@name='PLAY']/str[$<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos-int" select="position()" />
play from : <a href="{../../array[@name='PLAY']/str[$ pos-int ]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>
DONT ASK ME warum es funktioniert. Weil ich derzeit einen richtigen Grund haben ... wenn Sie das tun! Bitte einen Kommentar zu sinken. Es könnte sein, ziemlich nützlich. Auch! Wenn Sie besseren Titel für diesen Posten haben, tun Sie mir eine Zeile ![]()










































