Angesichts dieses Stück XML
%Vor% Ich sollte mit XSL nur das Jahr der Zeichenfolge ausgeben, die nicht mit info:eu-repo
beginnt.
Ich versuche es so, aber es funktioniert nicht. Ich liege falsch mit dem for-each
?
Verwenden Sie (vorausgesetzt, das angegebene XML-Fragment ist ein untergeordnetes Element des aktuellen Knotens und es gibt nur ein Element mit der gewünschten Eigenschaft):
%Vor%XSLT-basierte Überprüfung :
%Vor%Wenn diese Umwandlung auf das folgende XML-Dokument angewendet wird (das bereitgestellte Fragment wird in ein einziges oberstes Element eingeschlossen und der Namespace deklariert):
%Vor%Der XPath-Ausdruck wird vom obersten Element ausgewertet, und das Ergebnis dieser Auswertung wird in die Ausgabe kopiert:
%Vor%II. Mehr als ein Element mit der gewünschten Eigenschaft :
In diesem Fall ist es nicht möglich, die gewünschten Daten mit einem einzelnen XPath 1.0-Ausdruck zu erzeugen.
Diese XSLT-Transformation:
%Vor%bei Anwendung auf dieses XML-Dokument :
%Vor%erzeugt das gewünschte, korrekte Ergebnis:
%Vor%III. XPath 2.0 One-Liner
%Vor%Wenn dieser XPath 2.0-Ausdruck vom obersten Element des letzten XML-Dokuments (am nächsten oben) ausgewertet wird, werden die gewünschten Jahre erzeugt:
%Vor%XSLT 2.0-basierte Überprüfung :
%Vor%Wenn diese Transformation auf das letzte XML-Dokument angewendet wird, wird der XPath-Ausdruck ausgewertet und das Ergebnis dieser Auswertung in die Ausgabe kopiert:
%Vor%IV. Der allgemeinste und schwierigste Fall :
Nun, lassen Sie uns dieses XML-Dokument haben:
%Vor% Wir wollen immer noch den Jahr-Teil aller dc:date
-Elemente erhalten, deren String-Wert nicht mit 'info: eu-repo' beginnt. Keine der vorherigen Lösungen funktioniert jedoch korrekt mit dem letzten dc:date
Element oben.
Bemerkenswerterweise können die gewünschten Daten immer noch mit einem einzelnen XPAth 2.0-Ausdruck erzeugt werden :
%Vor%Wenn dieser Ausdruck außerhalb des obersten Elements des obigen XML-Dokuments ausgewertet wird, wird das gewünschte, korrekte Ergebnis erzeugt: :
%Vor%Und das ist die XSLT 2.0-basierte Verifikation :
%Vor%