Wie zeige ich ein Zeichen n mal in XSLT?

7

Ich habe eine Vorlage mit einem Parameter. Wie kann ich ein Tab-Zeichen n mal einfügen?

n ist der Wert des Parameters.

    
lowerkey 23.02.2011, 09:34
quelle

6 Antworten

11

Nennen Sie es einfach rekursiv; gib eine Registerkarte aus und rufe die gleiche Vorlage erneut mit n-1 an, wenn n & gt; 1.

%Vor%

Wie bereits erwähnt, gibt dieses Beispiel tatsächlich mindestens eins aus. In meiner Erfahrung, wo die Ausgabe Whitespace ist, wird es normalerweise benötigt. Sie können das Prinzip einer rekursiven Vorlage so anpassen, wie Sie es für richtig halten.

    
Flynn1179 23.02.2011, 09:43
quelle
8

In XSLT 2.0:

%Vor%

(Leider habe ich den Verdacht, dass Sie die Frage nicht stellen müssten, wenn Sie XSLT 2.0 verwenden würden.)

Eine andere Technik, die oft mit XSLT 1.0 verwendet wird, ist der Hack:

%Vor%

funktioniert, vorausgesetzt die Anzahl der Elemente in Ihrem Quelldokument ist größer als die Anzahl der Tab-Zeichen, die Sie ausgeben möchten.

    
Michael Kay 23.02.2011 12:03
quelle
1

Definieren Sie global ein Register, das lang genug ist:

%Vor%

Verwenden Sie dann wie folgt:

%Vor%     
Skytronic 15.07.2015 23:34
quelle
1

Dies scheint mir die einfachste und flexibelste zu sein.

Für XSLT 1.0 (oder vielleicht 1.1).

%Vor%

Natürlich ist die Variable count , wo Sie Ihren n Parameter zuweisen.

Ich habe die Variable repeat verwendet, um das Tab Zeichen zu halten, aber Sie könnten einfach das $ repeat durch das Tab-Zeichen in einfachen Anführungszeichen ersetzen im Sequenzelement. Hinweis: Diese Variable kann eine Länge größer als 1 haben, was eine ganze Reihe von Möglichkeiten schafft.

Es wird keine Rekursion verwendet, so dass es nicht zu einer Rekursionsgrenze kommt.

Ich kenne nicht den Maximalwert, den Sie für die Zählung verwenden können, aber ich habe es bis 10.000 getestet.

    
Brad Shockley 17.06.2016 17:38
quelle
1

(XSLT 1.0)

%Vor%

Beispielverwendung:

%Vor%     
Philippe-André Lorin 03.02.2017 11:48
quelle
0

Ich habe eine LGPL-lizensierte Bibliothek namens functx entdeckt, da ich sicher war, dass jemand das schon getan hat ... Dies ist eine XSLT-Bibliothek vom Typ "Standard Library", die eine Funktion namens RepeatX enthält. Zeichenfolge. Aus der Dokumentation:

  

Die Funktion functx: repeat-string gibt eine Zeichenfolge zurück, die aus einer gegebenen Anzahl von Kopien von $ stringToRepeat besteht, die miteinander verkettet sind.

Wo ich es so in meinem Code verwende:

%Vor%

Wenn Sie also ein Tab-Zeichen n mal drucken möchten, rufen Sie es wie folgt auf:

%Vor%

Ich weiß, dass diese Frage alt ist, aber ich hoffe, das kann noch jemandem helfen.

Dokumentation für die Wiederholungszeichenfolge

    
jhyry-gcpud 27.01.2018 00:11
quelle

Tags und Links