Announcement

Collapse
No announcement yet.

Verlust der Zeilenumbrüche

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

  • Verlust der Zeilenumbrüche

    Hallo,
    ich arbeite gerade an einem Export Plugin welches mittels XSLT eine Quellcode Sektion umwandeln soll.
    Der Eigentliche Quellcode sollte so aus sehen:
    Code:
    Bar.java
    
    // Some comments here
    public String getFoo()
    {
        return foo;
    }
    Das XML dazu sieht so aus:
    Code:
    <div class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><b>Bar.java</b>
    </div>
    <div class="codeContent panelContent">
    <pre class="code-java">
      <span class="code-comment">// Some comments here </span>
      <span class="code-keyword">public</span> <span class="code-object">String</span> getFoo()
    {
        <span class="code-keyword">return</span> foo;
    }</pre>
    </div>
    Ich möchte nun per XSLT das ganze so haben:
    Code:
    <code type="java">Bar.java
    
    // Some comments here
    public String getFoo()
    {
        return foo;
    }</code>
    Mein XSLT Code sieht momentan so aus:
    Code:
    <xsl:template match="div/pre">
    		<xsl:choose>
    			</xsl:when>
    			<xsl:when test="@class='code-java'">
    				<code type="java">
    					<xsl:apply-templates />
    				</code>
    				<par />
    			</xsl:when>
                     </xsl:choose>
    	</xsl:template>
    Das Problem ist das er mir so alles in eine einzige Zeile steckt, also quasi alle Informationen zu Zeilenumbrüchen verliert:
    Code:
    Bar.java // Some comments here public String getFoo() { return foo; }
    Es wäre echt toll wenn mir hierbei jemand einen Tipp geben könnte.

    Gruß,
    Mario

  • #2
    abändern der xml datei zwei text() in pre


    Code:
    <root>
    	<div class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;">
    		<b>Bar.java</b>
    	</div>
    	<div class="codeContent panelContent">
    		<pre class="code-java">
    			<span class="code-comment">// Some comments here</span>
    			<span class="code-keyword">public</span>
    			<span class="code-object">String</span>
    			<span class="code-function">getFoo()
    {</span>
    			<span class="code-keyword">return</span>
    			<span class="code-return">foo;
    }</span>
    		</pre>
    	</div>
    </root>
    Code:
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
    
    	<xsl:template match="/">
    		
    		<code class="java">
    			<xsl:apply-templates select="/root/div/b"/>
    			<xsl:apply-templates select="root/div/pre/span"/>
    		</code>
    	</xsl:template>
    	
    	<xsl:template match="b">
    		<xsl:value-of select="concat(.,'&#xA;')"/>
    	</xsl:template>
    	<xsl:template match="span">
    		<xsl:choose>
    			<xsl:when test="@class='code-comment'">
    				<xsl:value-of select="concat('&#xA;',node())"/>
    			</xsl:when>
    			<xsl:when test="@class='code-keyword'">
    				<xsl:value-of select="concat('&#xA;',node(),' ')"/>
    			</xsl:when>
    			<xsl:when test="@class='code-function'">
    				<xsl:value-of select="concat(' ',node())"/>
    			</xsl:when>
    			<xsl:when test="@class='code-object'">
    				<xsl:value-of select="concat('',node())"/>
    			</xsl:when>
    			<xsl:when test="@class='code-return'">
    				<xsl:value-of select="concat(' ',node())"/>
    			</xsl:when>
    		</xsl:choose>
    	</xsl:template>
    </xsl:stylesheet>
    ergebnis

    Code:
    <code class="java">Bar.java
    
    // Some comments here
    public String getFoo()
    {
    return  foo;
    }
    </code>
    Helmut Hagemann

    Comment


    • #3
      Danke, hat geklappt!
      Hab allerdings die eigentliche XML Datei nicht angepasst, da ich diese ja von einem externen Programm erhalte und dann per XSLT umwandle.
      Allein die Concat() Methode hat mich dann aber gerettet...

      Gruß,
      Mario

      Comment

      Working...
      X