Überprüfen Sie, ob die Knotenmenge einen Wert in XSLT enthält

7

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%

Screenshot von xml

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)

    
Alex 08.12.2008, 19:48
quelle

6 Antworten

12

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

  1. Erstellen Sie für jedes Date-Element ein neues MyDates-Element.
  2. Überprüfen Sie jedes Datumselement. Das * 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.
  3. Wenn keine untergeordneten Elemente vorhanden sind, wird ein neues MyDate-Element mit einer Kopie jedes Werts erstellt.

Sie können auch die W3Schools XSL und XPath Lernprogramme.

    
Chris Marasti-Georg 08.12.2008 20:20
quelle
3

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%     
Dimitre Novatchev 09.12.2008 02:19
quelle
2

Das @ ist redundant - es bezieht sich auf XML-Attribute.

Sie versuchen, nach einem Element zu suchen, also lassen Sie einfach das @ fallen.

Zusätzlich:

  • Level1 / Level2 / Level3 ist falsch
  • Sie testen nur für VALUE1, möchten aber alle Werte testen (was mit * möglich ist)
pinto 08.12.2008 20:27
quelle
2
%Vor%

    
Rashmi Pandit 24.02.2009 08:49
quelle
2

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%     
user201788 07.05.2010 20:42
quelle
0
%Vor%     
user2292708 17.04.2013 21:55
quelle

Tags und Links