Announcement

Collapse
No announcement yet.

Carriage Return innerhalb xsl:message

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Carriage Return innerhalb xsl:message

    hallo,
    Ich versuche gerade innerhalb eines xsl:message Elements einen Wagenrücklauf hinzubekommen. Aber irgendwie bekomme ich es nicht hin oder vielleicht geht es ja auch garnicht.
    Hintergrund ist der, ich habe in meiner Xsl eine recht lange laufende Schleife (ca 4000 Loops, innerhalb jedes Loops werden ein paar Aktionen durchgeführt, die dauern etwas). Also insgesamt braucht die Schleife 1 1/2 bis 2 Minuten bis sie fertig ist.
    Die Trafo rufe ich über ein Batch File auf die dem User sichtbar ist.
    Damit er sich nicht "langweilt" oder fragt ob überhaupt noch was passiert wollte ich ihm gerne eine Info geben wo die Trafo denn im Moment ist, und zwar der Einfachheit halber in der Form x/y mit x = aktueller Datensatz und y = Gesamtanzahl an Datensätzen.
    Also sprich das habe ich:
    HTML Code:
    <xsl:message><xsl:value-of select="concat(position(), '/', last())"/></xsl:message>
    Die Ausgabe ist nun so
    1/4000
    2/4000
    3/4000
    Das ist entsprechend des Codes klar aber blöd da dann 4000 Zeilen ausgegeben werden. Ich hätte es lieber so dass er wieder zum Anfang der Zeile springt und die alten Daten überschreibt. Ich will also nur eine einzige Zeile die dann den Fortschritt anzeigt. Geht das? Ich habe es versucht innerhalb oder außerhalb von xsl:value-of mit &_#_13; (Unterstriche eingefügt da es sonst nicht angezeigt wird) beide male wurde in der Console eben genau die Zeichenfolge ausgegeben, ohne Funktion und die Zeilenumbrüche waren trotzdem da.
    Kann jemand behilflich sein? Danke!
    gruß & thx
    sth_Weird
    Fluchen ist die einzige Sprache, die jeder Programmierer perfekt beherrscht

  • #2
    durch testen
    herausgefunden

    wie in Ansi C

    \a 7 7 BEL(bell) - akkustisches Warnsignal geht nicht
    \b 8 8 BS (backspace) - setzt Cursor um eine Position nach links geht nicht
    \t 9 9 TAB(tabulator) - nächsten horizontalen Tabulatorposition geht
    \n 10 A LF (line feed) - Cursor geht zum Anfang der nächsten Zeile geht
    \ 13 D CR (carriage return) -Cursor an Passung Betriebssystem geht

    Comment


    • #3
      sorry, kann dir leider nicht folgen...
      Varianten die ich ausprobiert hab und die nichts bringen
      HTML Code:
      <xsl:message><xsl:value-of select="concat(position(), '/', last())"/>\n</xsl:message>
      <xsl:message><xsl:value-of select="concat(position(), '/', last())"/><xsl:text>\n</xsl:text></xsl:message>
      <xsl:message><xsl:value-of select="concat(position(), '/', last(), '\n')"/></xsl:message>
      In allen Fällen wird das Backslash-n einfach so ausgegeben wie es da steht. EDIT: wenn ich & # 10 ;
      innerhalb text schreibe dann geht es...aber & # 13 ; geht scheinbar nicht, da gibt er wieder die einzelnen Zeichen aus.
      gruß
      sth_Weird
      Fluchen ist die einzige Sprache, die jeder Programmierer perfekt beherrscht

      Comment


      • #4
        eine andere Aufgbe aus diesen Forum als Beispiel

        Code:
        <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE Umfrage [
          <!ELEMENT Umfrage ((Frage, Antwortmoeglichkeit+)+)>
          <!ELEMENT Frage (#PCDATA)>
          <!ELEMENT Antwortmoeglichkeit (#PCDATA)>
        ]>
        <Umfrage>
          <Frage>1</Frage>
          <Antwortmoeglichkeit>1.1</Antwortmoeglichkeit>
          <Antwortmoeglichkeit>1.2</Antwortmoeglichkeit>
          <Frage>2</Frage>
          <Antwortmoeglichkeit>2.1</Antwortmoeglichkeit>
          <Antwortmoeglichkeit>2.2</Antwortmoeglichkeit>
          <Antwortmoeglichkeit>2.3</Antwortmoeglichkeit>
          <Frage>3</Frage>
          <Antwortmoeglichkeit>3.1</Antwortmoeglichkeit>
          <Antwortmoeglichkeit>3.2</Antwortmoeglichkeit>
          <Antwortmoeglichkeit>3.3</Antwortmoeglichkeit>
          <Antwortmoeglichkeit>3.4</Antwortmoeglichkeit>
        </Umfrage>

        Code:
        <?xml version="1.0"?>
        <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        	<xsl:output method="text"/>
        	<xsl:template match="/">
        		<xsl:apply-templates select="Umfrage"/>
        	</xsl:template>
        	<xsl:template match="Umfrage">
        		<xsl:apply-templates select="Frage"/>
        	</xsl:template>
        	<xsl:template match="Frage">
        		<xsl:message>Testfall neue Zeile Tab &#xA;&#x9;entwickler-forum.de</xsl:message>
        		<xsl:message>Testfall leer zeile dazwischen &#xA;&#xD;entwickler-forum.de</xsl:message>
        		<xsl:message>Testfall rücksprung &#x9;entwickler-forum.de</xsl:message>
        		<xsl:value-of select="concat('Frage {','&#xA;','&#x9;')"/>
        		<xsl:variable name="danach" select="count(following-sibling::Antwortmoeglichkeit) -          count(following-sibling::Frage/following-sibling::Antwortmoeglichkeit)"/>
        		<xsl:apply-templates select="following-sibling::Antwortmoeglichkeit[position()&lt;= $danach]"/>
        		<xsl:value-of select="concat('}','&#xA;')"/>
        	</xsl:template>
        	<xsl:template match="Antwortmoeglichkeit">
        		<xsl:value-of select="concat(.,'&#xA;','&#x9;')"/>
        	</xsl:template>
        </xsl:stylesheet>

        Code:
        Testfall neue Zeile Tab 
        	entwickler-forum.de
        Testfall leer zeile dazwischen 
        
        entwickler-forum.de
        Testfall rücksprung 	entwickler-forum.de
        Testfall neue Zeile Tab 
        	entwickler-forum.de
        Testfall leer zeile dazwischen 
        
        entwickler-forum.de
        Testfall rücksprung 	entwickler-forum.de
        Testfall neue Zeile Tab 
        	entwickler-forum.de
        Testfall leer zeile dazwischen 
        
        entwickler-forum.de
        Testfall rücksprung 	entwickler-forum.de

        Comment


        • #5
          Ich glaub ich steh auf dem Schlauch...
          deine rot markierte Zeile sagt zwar aus dass ein Rücksprung erfolgen soll, aber x9 steht doch für den Tabulator (und genau das gibt er auch aus wenn ich es so einbaue bei mir)...xA geht bei mir zwar aber springt in die nächste Zeile. und nicht zum Anfang der aktuellen. Und xD (ist in dem unteren Beispiel nicht dabei aber in der Liste oben gibt stur nur xD aus, also wird garnicht irgendwie umgewandelt).
          Hmm, vielleicht liegt es wirklich daran dass ich das ganze innerhalb xsl:message verwende mit dem Zweck es auf der Console auszugeben. Möglicherweise geht es ja bei Textausgabe oder so.
          Habe mir jetzt halt so beholfen dass ich die x/y Position nur ausgabe ich x durch was teile und es 0 ist, so dass dann nur alle 50 oder 100 Datensätze eine Ausgabe erfolgt und nicht bei jedem. Immer noch nicht das gelbe vom Ei aber es scheint nichts anderes zu geben. Trotzdem danke für deine Mühen!

          gruß
          sth_Weird
          Fluchen ist die einzige Sprache, die jeder Programmierer perfekt beherrscht

          Comment

          Working...
          X