Ich brauche etwas Hilfe mit der XSLT-Syntax. Hier ist mein Szenario, ich habe eine XML-Datei, die in ein anderes Look-and-Feel der XML-Datei umgewandelt werden muss. Ich habe mehrere Abschnitte, wo, wenn bestimmte Knoten keinen Wert enthalten, der gesamte Abschnitt nicht verarbeitet werden sollte.
Hier ist ein Beispiel für XML:
%Vor%Hier ist meine XSLT mit der if-Anweisung, die nicht richtig funktioniert
%Vor%Wie Sie sehen können, möchte ich im Grunde, dass alle Knoten (VALUE1, VALUE2, VALUE3 usw.) Werte haben oder nicht weiterarbeiten und zum nächsten Abschnitt weitergehen
(Wenn Sie das XML nicht sehen können, habe ich auch einen Screenshot gemacht)
Sie versuchen, XML-Elemente mit den Namen "Level1", "Level2" usw. zu verknüpfen, die im Dokument nicht vorhanden sind. Dann suchen Sie nach einem VALUE1-Attribut für das letzte Element.
Ich denke Sie möchten etwas wie dieses:
%Vor%Dies fügt ein neues MyDate-Element hinzu, solange jeder Wert in dem entsprechenden Date-Element nicht leer ist.
Was es macht ist
*
stimmt mit allen untergeordneten Elementen überein. [.='']
bedeutet "ist leer". Schließlich verpackt es alles in einem nicht. Dies bedeutet, dass das if nur übergeben wird, wenn kein Kind leer ist. Sie haben nicht gut definiert, was es für "einen Knoten wert zu haben" bedeutet.
Wahrscheinlich werden Sie ein Element in Betracht ziehen, das einen Text nur für Leerstellen enthält und keinen Wert hat. In diesem Fall ist unten eine Lösung :
%Vor% %Vor% %Vor%Diese Tempele für ein "Date" -Element wird nicht gefunden, wenn das "Date" nur ein untergeordnetes Element enthält, das keinen Inhalt oder nur Leerraum hat .
Wenn diese Umwandlung auf das folgende XML-Dokument angewendet wird :
%Vor%Das korrekte Ergebnis wird erzeugt :
%Vor%Ich denke, du kannst das auch tun. Anstatt einen Knoten zu überprüfen. VALUE1 / text () überprüft, ob der Knoten Text enthält. Sie sollten sicherstellen, dass für diese Felder kein Leerraum vorhanden ist. Außerdem können Sie sehen, ob das VALUE1-Element einen untergeordneten Knoten hat.
%Vor%