defiant2369: Leerzeichen bzw. Zeilenumbrüche entfernen

In einem Javascript wird folgender Code verwendet, um aus einer XML-Datei Text aus dem Tag <fileplot> auszulesen.
Diese XML-Datei ist von einer TV-Serie, wo leider auch mal Zeilenumbrüche vorkommen bei den Episodenplots, so das der Text nicht mehr in einer Zeile steht.

<xsl:for-each select="files/file">  
  "Folge <xsl:value-of select="@firstPart" /> (<xsl:value-of select="@title" />) -  
  <xsl:value-of select="substring(translate(filePlot, '&quot;', &quot;'&quot;), 0, 400)" />"  
  <xsl:if test="position() != last()">,</xsl:if>  
</xsl:for-each>

Das hat leider zur Folge, das der Plot der einzelnen Folgen nicht angezeigt wird, wenn ich die Folge auswähle per Maus. Zwar wird schon das Anführungszeichen " ersetzt durch ' , aber die Leerzeiche bzw. Zeilenumbrüche möchte ich auch noch wegbekommen.
Es wäre auch zu aufwendig, die Quelltexte jeweils zubearbeiten.

Der Javacode ist Bestandteil einer xsl:stylesheet, welche wiederum Html-Seiten generiert, wo dann der jeweilige Episodentitel und der dazugehörige Plot angezeigt werden sollen.
Das ganze ist ein Bestandteil eines sogenannten Skins für YAMJ (http://code.google.com/p/moviejukebox/)

Hier auch das gesammte Javascript:

<script type="text/javascript">  
<xsl:comment>  
var title =[ "<xsl:value-of select="title" />",  
<xsl:for-each select="files/file">"<xsl:value-of select="@title" />"<xsl:if test="position() != last()">,</xsl:if>  
</xsl:for-each>  
  ];  
var plot=[ "<xsl:value-of select="substring($Plot0, 1, $T_AffMaxPlot)" />",  
<xsl:for-each select="files/file">  
  "Folge <xsl:value-of select="@firstPart" /> (<xsl:value-of select="@title" />) - <xsl:call-template name="truncate_phrase"><xsl:with-param name="phrase"><xsl:value-of select="substring(translate(filePlot, '&quot;', &quot;'&quot;), 0, 400)" /></xsl:with-param><xsl:with-param name="length" select="400" /><xsl:with-param name="truncate_to_word_boundary" select="1" /></xsl:call-template>"<xsl:if test="position() != last()">,</xsl:if>  
</xsl:for-each>  
  ];  
var Mempos		= 0;  
var Dispos		= 0;  
var plotdescript= 1;  
  
function show(x)  
  { if ( plotdescript == 1 )  
	plotdescript = document.getElementById('episodePlot').firstChild;  
		{ plotdescript.nodeValue = plot[x]; }  
  }  
function hide()  
  { if ( plotdescript  == 1 )  
	plotdescript = document.getElementById('episodePlot').firstChild;  
		{ plotdescript.nodeValue = plot[0]; }  
  }  
function episode()  
 { if ( Dispos  != Mempos )  
	{	if ( Dispos  == 0 )  
			{ Dispos  =Mempos; }  
		else  
			{ Dispos  =0; }  
 		document.getElementById('episodePlot').firstChild.nodeValue=plot[Mempos];  
 	}  
 }  
</xsl:comment>  
</script>  

Wie kann ich das anstellen, das die Zeilenumbrüche gleich mit entfernet werden?

Schon mal Danke im voraus für Eure Hilfe.
Muß auch dazu bemerken, das ich ein absuloter DAU in der Beziehung bin.

  1. Nabend

    <xsl:value-of select="translate(normalize-space(filePlot),' ','')" />

    normalize-space() bereinigt Leeraeume von filePlot, translate entfernt dann noch die normalisierten Leerraeume.

    Hier nachzulesen:
    http://de.selfhtml.org/xml/darstellung/xpathfunktionen.htm#normalize_space

    Gruss, H olger

    1. Nabend

      <xsl:value-of select="translate(normalize-space(filePlot),' ','')" />

      normalize-space() bereinigt Leeraeume von filePlot, translate entfernt dann noch die normalisierten Leerraeume.

      Hier nachzulesen:
      http://de.selfhtml.org/xml/darstellung/xpathfunktionen.htm#normalize_space

      Gruss, H olger

      Moin :-)

      Danke schonmal für die Antwort. Sowas hatte ich auch schon bei meiner Suche gefunden.
      Sorry, wenn die Frage jetzt blöde klingt, aber wie binde ich das jetzt in die "for-each"-Anweisung mit ein?
      Ich hatte das mal dahinter gepackt:<xsl:value-of select="substring(translate(filePlot, '&quot;', &quot;'&quot;), 0, 400)" /><xsl:value-of select="normalize-space()" /> was aber leider keine Auswirkung hat.

  2. Ich habe es hinbekommen. Habe den aufzurufenden Code einwenig umgebaut:

    <xsl:for-each select="files/file">  
      "Folge <xsl:value-of select="@firstPart" /> (<xsl:value-of select="@title" />) - <xsl:call-template name="truncate_phrase"><xsl:with-param name="phrase"><xsl:value-of select="substring(translate(filePlot, '&quot;', &quot;'&quot;), 0, 600)" /></xsl:with-param><xsl:with-param name="length" select="600" /><xsl:with-param name="truncate_to_word_boundary" select="1" /></xsl:call-template>"<xsl:if test="position() != last()">,</xsl:if>  
    </xsl:for-each>
    

    Und in diese "truncate_phrase" dann "normalize-space" mit eingebaut.
    das ganze funktioniert nun so, wie ich es mir gewünscht habe:

         <xsl:template name="truncate_phrase">  
          <xsl:param name="phrase" />  
          <xsl:param name="length" />  
          <xsl:param name="trailing_string" select="'...'" />  
          <xsl:param name="truncate_to_word_boundary" select="0" />  
      
          <xsl:choose>  
           <xsl:when test="string-length($phrase)>number($length)">  
            <xsl:choose>  
    	 <xsl:when test="$truncate_to_word_boundary">  
              <xsl:call-template name="truncate_to_word_boundary">  
    	   <xsl:with-param name="str">  
    	    <xsl:value-of select="substring(normalize-space($phrase),0,number($length))" />  
    	   </xsl:with-param>  
    	  </xsl:call-template>  
    	 </xsl:when>  
    	 <xsl:otherwise>  
    	  <xsl:value-of select="substring(normalize-space($phrase),0,number($length))" />  
    	 </xsl:otherwise>  
    	</xsl:choose>  
    	<xsl:value-of select="$trailing_string" />  
           </xsl:when>  
           <xsl:otherwise>  
            <xsl:value-of select="substring(normalize-space($phrase),0,number($length))" />  
           </xsl:otherwise>  
          </xsl:choose>  
         </xsl:template>  
      
         <xsl:template name="truncate_to_word_boundary">  
          <xsl:param name="str" />  
          <xsl:variable name="ret" select="substring(normalize-space($str),0,string-length($str))" />  
      
          <xsl:choose>  
           <xsl:when test="$str=''" />  
           <xsl:when test="substring($str,string-length($str),1)=' '">  
    	<xsl:value-of select="$ret" />  
           </xsl:when>  
           <xsl:otherwise>  
            <xsl:call-template name="truncate_to_word_boundary">  
             <xsl:with-param name="str">  
              <xsl:value-of select="$ret" />  
             </xsl:with-param>  
            </xsl:call-template>  
           </xsl:otherwise>  
          </xsl:choose>  
         </xsl:template>  
    
    

    Danke an "H olger" für den Tipp.  :-)