2016-07-14 27 views
0

Ich möchte eine neue Zeile in einer .xslt-Datei mit einer Zeilennummer erstellen. Ich weiß, wie eine neue Zeile zu erstellen:Wie erstelle ich eine neue Zeile in einer .xslt mit einer Zeilennummer?

<xsl:text>&#xa;</xsl:text> 

jedoch diese Ausgabe erstellt einfach eine neue Linie, aber nicht eine Zeilennummer. Meine gewünschte Ausgabe würde die Zeilennummer haben (zum Beispiel 27:) und dann den geschriebenen Text haben, anstatt nur den Text.

edit: das Ausgabeformat ist XML. Der spezifische Block von Code, den ich mit Blicken arbeitet wie folgt:
<xsl:otherwise> <xsl:text>FINE ACC100 TB (SEC PARA HERE),P-SPS;</xsl:text> <xsl:text>&#xa;</xsl:text> <xsl:text> 1: TC_ONLINE (ON) ;</xsl:text> <xsl:text>&#xa;</xsl:text> <xsl:text> 2: DO[23] = OFF ;</xsl:text> <xsl:text>&#xa;</xsl:text> <xsl:text> 3: CALL VW_USER(Basic10,Perceptron_IMT,Start_Messpunkt,,,Nr=(ROBO ID),,,EIN/AUS=ON) ;</xsl:text> <xsl:text>&#xa;</xsl:text> <xsl:text> 4: WAIT (DI[23]) ;</xsl:text> <xsl:text>&#xa;</xsl:text> <xsl:text> 5: DO[23] = ON ;</xsl:text> <xsl:text>&#xa;</xsl:text> <xsl:text> 6: TC_ONLINE (DI[14] AND DI[24] AND DI[80]) ;</xsl:text> <xsl:text>&#xa;</xsl:text> <xsl:text> ------ </xsl:text> </xsl:otherwise>
Dies erzeugt die folgende Ausgabe:

21:J P[3] 100% FINE ACC100 TB (SEC PARA HERE),P-SPS; 
    1: TC_ONLINE (ON) ; 
    2: DO[23] = OFF ; 
    3: CALL VW_USER(Basic10,Perceptron_IMT,Start_Messpunkt,,,Nr=(ROBO ID),,,EIN/AUS=ON) ; 
    4: WAIT (DI[23]) ; 
    5: DO[23] = ON ; 
    6: TC_ONLINE (DI[14] AND DI[24] AND DI[80]) ; 
    ------ ; 

Aber ich würde wollen Linien 24, 25, 26, usw. vor dem 1, 2,3, ...

+0

Es hängt davon ab, wo Sie Zeile einfügen möchten. Zum Beispiel, wenn is für Elemente in einer Sammlung ist, können Sie 'position()' verwenden, um es für eine Zeile zu drucken. Sie müssen eine Art Variable haben, um die Zeilennummer zu verfolgen. –

+0

Also welche Ausgabe-Methode bzw. Format ist das, Klartext oder HTML oder irgendein XML-Format? –

+0

Wenn das Format XML ist, stellen Sie bitte einen Kontext wie ein minimales Eingabe-Beispiel, die entsprechende Ausgabe, die Sie erstellen möchten, und Ihre aktuelle XSLT bereit. –

Antwort

0

Wow, das sieht aus wie gute alte BASIC!

Ich denke, der sauberste Ansatz hier wäre eine 2-Pass-Transformation. Zuerst die Ausgabe als XML erzeugen:

<basic> 
    <line>TC_ONLINE (ON)</line> 
    <line>DO[23] = OFF<line> 
    <line>CALL VW_USER(Basic10,Perceptron_IMT,Start_Messpunkt,,,Nr=(ROBO ID),,,EIN/AUS=ON)</line> 
    <line>WAIT (DI[23])</line> 
</basic> 

Dann serialisieren, um Text und die Zeilennummern in einem zweiten Durchlauf hinzufügen, die unter Verwendung von trivially Position durchgeführt werden kann() oder XSL: Nummer.