XSLT Split-Ergebnis in Gruppen von 3

7

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!

    
Rob 06.09.2011, 07:19
quelle

3 Antworten

8

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.

    
Tim C 06.09.2011, 08:03
quelle
10

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 :

  1. Verwendung von <xsl:for-each-group> , wobei die ausgewählten Knoten nach der fortlaufenden Nummer der Gruppe gruppiert sind, zu der sie gehören.

  2. Verwendung der Standard-XSLT 2.0-Funktion current-group() .

Dimitre Novatchev 06.09.2011 13:16
quelle
3
%Vor%

Ausgabe:

%Vor%     
Kirill Polishchuk 06.09.2011 08:08
quelle

Tags und Links