Was ist der Unterschied zwischen xsl: apply-templates / und xsl: apply-templates select="." /

8

Was ist der Unterschied zwischen <xsl:apply-templates /> und <xsl:apply-templates select="." /> ? Ich dachte, dass die select="." nicht notwendig ist, aber ich bekomme unterschiedliche Ergebnisse, je nachdem, welche ich verwende.

Tut mir leid, wenn das eine Wiederholung ist. Ich habe versucht, dieses Problem zu suchen, konnte aber nichts finden.

    
joe 18.10.2010, 21:35
quelle

2 Antworten

18
  

Was ist der Unterschied zwischen?    <xsl:apply-templates /> und    <xsl:apply-templates select="." />

Die erste Anweisung :

%Vor%

ist eine Abkürzung für :

%Vor%

Der zweite Befehl :

%Vor%

ist eine Abkürzung für:

%Vor%

Wie wir sehen, sind nicht nur diese beiden Anweisungen unterschiedlich (die erste wendet Vorlagen auf alle untergeordneten Knoten an und die letztere wendet Vorlagen auf den aktuellen Knoten an), aber letzteres ist gefährlich und kann oft zu einer Endlosschleife führen!

    
Dimitre Novatchev 18.10.2010, 21:43
quelle
4

Haben Sie an den Unterschied zwischen

gedacht? %Vor%

und

%Vor%

? Der Grund, warum ich frage ist, dass <xsl:apply-templates select="." /> sehr ungewöhnlich ist, während <xsl:apply-templates select="*" /> sehr häufig ist.

Wenn Sie zwischen diesen beiden Alternativen wählen, ist select="*" oft unnötig, aber es gibt einen Unterschied:

    <xsl:apply-templates /> ohne a select wird alle untergeordneten Elemente verarbeiten Knoten. Dies beinhaltet Kommentare, Verarbeitungsanweisungen und die meisten insbesondere text Knoten sowie Kindelemente.
  • Im Gegensatz dazu wird <xsl:apply-templates select="*" /> nur Kind auswählen Element Knoten.

Wenn die Eingabe-XML also andere untergeordnete Knoten als Elemente haben kann und Sie diese Knoten nicht verarbeiten möchten, ist <xsl:apply-templates select="*" /> das, was Sie wollen.

    
LarsH 19.10.2010 03:17
quelle

Tags und Links