XSL, wenn der Test beginnt - mit

8

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 ?

%Vor%     
robert laing 20.09.2012, 08:15
quelle

3 Antworten

17

Ich schätze, Sie brauchen ' in Ihrer start-with -Abfrage nicht, und Sie möchten vielleicht etwas anders über die Daten iterieren:

%Vor%     
DRCB 20.09.2012, 08:18
quelle
1

Sie können auch template-match verwenden, um zu erhalten, was Sie wollen, zum Beispiel:

%Vor%

Ich habe diese Eingabe XML:

%Vor%

und wenden Sie dieses XSLT darauf an:

%Vor%

und ich bekomme diese Ausgabe:

%Vor%

Mit freundlichen Grüßen, Peter

    
Peter 20.09.2012 11:14
quelle
1

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%     
Dimitre Novatchev 20.09.2012 11:30
quelle

Tags und Links