Verwendung von XSLT Apply-Templates zur bedingten Auswahl von Knoten

8

Nehmen wir an, ich habe ein XML-Dokument wie folgt:

%Vor%

Nun möchte ich in der Lage sein, alle Stücke mit Will Smith als Schauspieler auszuwählen und es in etwas wie das Folgende umzuformatieren:

%Vor%

Ich möchte nur Anwenden-Vorlagen verwenden. Nein xsl: wenn oder für jede Schleifen (Ich habe dieses Beispiel als eine einfachere Version von dem, was ich tue, so können Sie mir helfen zu verstehen, wie man xpath innerhalb einer Übereinstimmung zu verwenden Aussage)

Hier ist was ich bisher habe:

%Vor%

Grundsätzlich bin ich mir nur nicht sicher, wie Knoten mithilfe von XPath im Übereinstimmungsattribut der Vorlage herausgefiltert werden. Jede Hilfe wäre großartig!

    
Msencenb 20.10.2010, 21:03
quelle

3 Antworten

7

Die Bedingung sollte auf xsl: apply-templates statt xsl: template:

lauten %Vor%

In Ihrer Lösung transformieren Sie ALL & lt; play & gt; Knoten. Für Wiedergabeknoten, die der Bedingung entsprechen, wird Ihre Vorlage angewendet. Für diejenigen, die die Bedingung nicht erfüllen, wird stattdessen eine Standardvorlage ("Identitätstransformation") angewendet.

Alternativ können Sie die Bedingung in xsl: template match beibehalten, aber eine weitere Vorlage für & lt; play & gt; die nicht mit der Bedingung übereinstimmen, um diese & lt; play & gt; in nichts:

%Vor%     
ckarras 20.10.2010, 21:20
quelle
5

Ich. Wahrscheinlich die effizienteste XSLT 1.0-Lösung :

%Vor%

, wenn diese Umwandlung auf das bereitgestellte XML-Dokument angewendet wird :

%Vor%

das gewünschte Ergebnis wird erzeugt :

%Vor%

Beachten Sie :

  1. Effizienz wird erreicht, indem Schlüssel sowohl für alle Stücke, an denen Mell Gibson teilnahm, als auch für alle Schauspieler, die an einem bestimmten (betitelten) Stück teilgenommen haben, verwendet wurden.

  2. Auch wenn ein Spieltitel mit Mel Gibson mehr als einmal aufgeführt wurde (aufgrund eines versehentlichen Fehlers, vielleicht ...), wird er nur einmal im Ergebnis aufgeführt .

    >

II. Eine einfache und effiziente XSLT 2.0-Lösung :

%Vor%     
Dimitre Novatchev 21.10.2010 01:52
quelle
1

Dieses Stylesheet:

%Vor%

Ausgabe:

%Vor%     
user357812 20.10.2010 21:34
quelle

Tags und Links