Ich habe eine HTML-Tabelle geschrieben mit xslt-Transformation, die so aussieht
%Vor% Ich brauche eine Möglichkeit, verschiedene Klassen oddRow / evenRow auf tr elems anzuwenden.
Ich habe versucht, eine Vorlage wie diese nach jedem & lt; tr & gt; elem
%Vor%aber das funktioniert nicht. Irgendeine Idee?
In einfach css
könntest du wahrscheinlich davonkommen %Vor%Wenn Sie nicht können, könnten Sie etwas wie
tun %Vor%Beachten Sie, dass ich dies in die SO-Textbox geschrieben und nicht getestet habe.
Diese Umwandlung :
%Vor%bei Anwendung auf dieses XML-Dokument :
%Vor%erzeugt das gewünschte Ergebnis :
%Vor%Beachten Sie :
Wir verwenden das feingranularste Traversal und die Verarbeitung eines XML-Dokuments - Knoten für Knoten . Nach der Identitätstransformation ist dies das zweitwichtigste XSLT-Entwurfsmuster.
Der Rest der kleinen Tricks ist nicht so wichtig .
Es sieht so aus, als ob die Vorlage conditionalRowStyle
zum Hinzufügen von Stilen zu der Tabelle im selben Stylesheet wie die Tabellengruppe liegt. Wenn dies der Fall ist, wird es nicht wie erwartet funktionieren, da die in der conditionalRowStyle
Vorlage ausgewählten Knoten aus dem Quelldokument (mit someNode
) stammen und nicht aus dem Zieldokument (wo die generierten Tabellenelemente sind.)
Sie können dies "hacken", indem Sie zuerst die Tabellenausgabe der someNode
-Templates zu einer Variablen sammeln, auf der Sie dann die Vorlage conditionalRowStyle
zuerst ausführen können, bevor Sie schließlich den Variablenwert als Ergebnis des Stylesheets ausgeben. Aber es ist viel einfacher, zwei Stylesheets zu verwenden, die Sie nacheinander in einer Pipeline ausführen. Das erste Stylesheet konvertiert die someNode
-Daten in eine Tabelle und die zweite wendet conditionalRowStyle
Formatierung auf die Tabelle an.
Tags und Links xml conditional html-table xslt