Eine Webanwendung stellt mir einen XML-Feed zur Verfügung, den ich nicht ändern kann. Ich möchte diesen XML-Feed in mehrere ungeordnete Listen aufteilen. Ich versuche dies mit dem XSLT unten zu tun.
%Vor%Mit der obigen XSLT kann ich die XML in eine ungeordnete Liste mit 6 Elementen verwandeln (nehmen wir an, dass es immer 6 Elemente gibt). Ähnlich wie im Beispiel unten;
%Vor%Das obige Beispiel ist das Ergebnis, das ich gerade erhalte. Aber das gewünschte Ergebnis ist in etwa so:
%Vor%BEARBEITEN - XML-Beispieleingabe
%Vor%Wie Sie sehen können, möchte ich immer in Gruppen von 3 Elementen ausgegeben werden. Ist diese Art von HTML-Ausgabe mit XSLT möglich? Wenn ja, wie kann ich das tun? Jede Hilfe ist willkommen!
Dazu müssen Sie auf dem Element Seite die Position 1, 4, 7 usw. anpassen. Mit anderen Worten, wo position () mod 3 ist gleich 1.
%Vor%Dies gibt das erste Element der Liste. Sie können dann die restlichen 2 Elemente in diesem erhalten, so
%Vor%Wenn Sie das zusammensetzen, erhalten Sie folgendes XSLT
%Vor%Wenn es auf Ihrer Eingabe-XML ausgeführt wird, sollte dies die folgende Ausgabe generieren
%Vor%Beachten Sie, dass ich die Gruppengröße parametrisiert habe, so dass Sie z. B. problemlos auf 4 oder 5 Elemente pro Liste wechseln können.
Ich. XSLT 1.0 .
Hier ist eine kurze und parametrisierte Lösung , die zeigt, wie Geschwisterelemente in Gruppen vordefinierter Größe aufgeteilt werden. Nein explizite bedingte XSLT-Anweisungen werden verwendet:
%Vor%, wenn diese Umwandlung auf das folgende XML-Dokument angewendet wird :
%Vor%das gewünschte, korrekte Ergebnis wird erzeugt :
%Vor%II. XSLT 2.0
%Vor%Wenn diese Transformation auf dasselbe XML-Dokument (oben) angewendet wird, wird das gleiche korrekte Ergebnis erzeugt:
%Vor%Erläuterung :
Verwendung von <xsl:for-each-group>
, wobei die ausgewählten Knoten nach der fortlaufenden Nummer der Gruppe gruppiert sind, zu der sie gehören.
Verwendung der Standard-XSLT 2.0-Funktion current-group()
.