2016-08-07 18 views
0

Ich importiere XML-Datei von einem JUnit-Test-Bericht und Anwendung einiger CSS-Styling mit xslt. Das Problem, das ich zu lösen versuche, ist, wie man die richtigen Zeilenumbrüche erhält, wenn ich es in einem Texteditor anstelle einer langen Zeile und Text nur um die Breite des Browserfensters gebrochen bin. Ab jetzt sieht der xslt Code, den ich benutze, so aus.Fügen Sie eine Zeile brak vor einem Sonderzeichen in einem Textblock mit Hilfe von xslt

<xsl:for-each select="testsuite/testcase"> 
     <div class="testsuit"> 
      <div class="testcase"> 
       <h3> 
        <xsl:value-of select="@name"/> 
       </h3> 
       <div class="result"> 
        <xsl:value-of select="system-out"/> 
       </div> 
      </div> 
     </div> 
</xsl:for-each> 

Ein Beispiel für die XML sieht wie folgt aus

<testsuite errors="0" failures="0" name="testsuite" skipped="0" tests="7"> 
    <testcase name="foo-bar2_1" time="3.6"> 
     <system-out># ** lorem_ipsum = 0 # Time: 0 ps Iteration: 0 Instance: /foo_bar_004 # ** Note: lorem_ips: generic FOOBAR_FILTER = 0 # Time: 0 ps Iteration: 0 Instance: /foo_bar_004# ** Note: foo_bar_001: generic IPSUM_DESCRIPTORS = 0 # Time: 0 ps Iteration: 0 
     </system-out> 
    </testcase> 
</testsuit> 

ich vor jedem ‚#‘ einen Zeilenumbruch hinzufügen möchten, dass der Browser so richtig angezeigt, den Text macht.

# ** lorem_ipsum = 0
# Zeit: 0 ps Iteration: 0 Instanz:/foo_bar_004
# ** Hinweis: lorem_ips: generic FOOBAR_FILTER = 0
# Zeit: 0 ps Iteration: 0 Instanz:/foo_bar_004
# ** Hinweis: foo_bar_001: generic IPSUM_DESCRIPTORS = 0
# Zeit: 0 ps Iteration: 0

+0

Können Sie einen XSLT 2.0-Prozessor verwenden? Oder ist das clientseitige XSLT 1.0? –

+0

"* Wie bekomme ich die richtigen Zeilenumbrüche, wenn ich sie in einem Texteditor verwende? *" Ich sehe keine Zeilenumbrüche, wenn ich diese in einem Texteditor betrachte. Was vermisse ich? –

+0

@ michael.hor257k Ich habe eine separate .xml-Datei, die Geschäftsgeheimnisse von der Firma enthalten könnte, für die ich arbeite (zumindest am Anfang der Datei). Ich habe manuell versucht zu simulieren, wie es aussah. Aber wenn ich die ursprüngliche Datei in alles von OsX Texteditor zu Sublime Text und Notepad ++ öffne, erhält es richtige Zeilenumbrüche. – Markus

Antwort

0

XSLT Unter Verwendung von 2,0 ich würde vorschlagen, analyze-string

<xsl:template match="/"> 
    <xsl:for-each select="testsuite/testcase"> 
      <div class="testsuit"> 
       <div class="testcase"> 
        <h3> 
         <xsl:value-of select="@name"/> 
        </h3> 
        <ul class="result"> 
         <xsl:analyze-string select="system-out" regex="#[^#]*"> 
          <xsl:matching-substring> 
           <li> 
            <xsl:value-of select="."/> 
           </li> 
          </xsl:matching-substring> 
         </xsl:analyze-string> 
        </ul> 
       </div> 
      </div> 
    </xsl:for-each> 
</xsl:template> 
verwenden
+0

Vielen Dank für Ihre Antwort. Ich habe Ihre Lösung während des Wochenendes versucht, aber ich kann es nicht zur Arbeit bringen, also habe ich meinen kompletten Code erstellt. https://gist.github.com/MarkusDNC/973d05924bb200cfed9c21ab06cb4e80 – Markus

+0

Sie müssten einen XSLT 2.0-Prozessor verwenden, um es zum Laufen zu bringen, siehe http://xsltransform.net/3NSSEux, wo die Transformation mit Saxon 9 durchgeführt wird. –