Forum Doku Wiki Blog

Forumsarchiv 2007, August
erzwungener Zeilenumbruch

archivierte Beiträge lesen

  1. (XSL) erzwungener Zeilenumbruch von Tim, 16. 08. 2007, 11:42

erzwungener Zeilenumbruch

Der folgende Beitrag wurde am 16. 08. 2007, 11:42 Uhr von Tim veröffentlicht.

Hideho,

hoffe ihr könnt mir bei meinem folgenden Problem helfen:

ich gebe in einem 300px-breiten Bereich auf einer Seite, mittel xsl-template eine Übersicht aus. Die beinhaltet Angaben zu Dateiname, Autor, Uhrzeit der Änderung und den Pfad der Datei.

Nun passiert es hin und wieder, das der Wert (in der Regel der Dateiname) breiter als die 300 px ist und somit das Design sprengt bzw unschöne Scrollbalken entstehen.

Das Problem tritt nur auf wenn der Dateiname zusammenhängend (ohne leerzeichen)zu viele Zeichen beinhaltet.
Besitzt er Leerzeichen wird ein Zeilenumbruch vorgenommen und alles ist wunderbar.

Nun zu meiner Frage:
Welche Möglichkeiten gibt es also die Dateinamenlänge so zu begrenzen oder einen Zeilenumbruch zu erzwingen, damit er die vorgeschriebene Breite nicht überschreitet ?

Gruß

Zur besseren Übersicht noch das template:
---
<xsl:template name="Neue_Dokumente" match="Row[@Style='Neue_Dokumente']" mode="itemstyle">
    <xsl:variable name="Dateiname">
      <xsl:value-of select="@LinkFilename" />
    </xsl:variable>
    <xsl:variable name="Hyperlink">
      <xsl:value-of select="@FileRef" />
    </xsl:variable>
    <xsl:variable name="Geaendert_am">
      <xsl:value-of select="@Modified" />
    </xsl:variable>
    <xsl:variable name="Bearbeiter">
      <xsl:value-of select="@Editor" />
    </xsl:variable>
    <xsl:variable name="laengestring">
      <xsl:value-of select="string-length(@LinkFilename)" />
    </xsl:variable>
    <xsl:variable name="Dateiname2">
      <xsl:value-of select="substring(@LinkFilename,1,($laengestring)-4)" />
    </xsl:variable>
    <xsl:variable name="Pfad">
      <xsl:value-of select="substring-before(@FileRef,$Dateiname)" />
    </xsl:variable>
    <table class="Content_Neue_Dokumente">
      <tr>
        <td>
          <a href="http://.../{$Hyperlink}" target="_blank">
            <xsl:value-of select="$Dateiname2" />
          </a>
        </td>
      </tr>
      <tr>
        <td class="Content_Neue_Dokumente_Bearbeitet_am">
          Bearbeitet von <xsl:value-of select="$Bearbeiter"/> am <xsl:value-of select="$Geaendert_am"/>
        </td>
      </tr>
      <tr>
        <td class="Content_Neue_Dokumente_Pfad">
        <a href="http://.../{$Pfad}">
          <xsl:value-of select="$Pfad"/>
          </a>
        </td>
      </tr>
    </table>
  </xsl:template>
---

erzwungener Zeilenumbruch

Der folgende Beitrag wurde am 16. 08. 2007, 13:43 Uhr von Tom2 (der authentifizierte) veröffentlicht.

Hi

Versuch es doch mal in den ersten 30 Zeichen nach einem Leerzeichen zu suchen, und falls keins vorhanden ist einen Zeilenumbruch einzufügen.

<xsl:when test="not contains(substring($FileName, 0, 30), ' ')">
  <xsl:value-of select="substring($FileName, 0, 30)" />
  <xsl:text>&#xa;</xsl:text> <!-- New Line im Ausgabe-Text -->
  <xsl:value-of select="substring($FileName, 31, string-length($FileName)" />
</xsl:when>

Den Code habe ich nicht ausprobiert, aber auf diese Art sollte es klappen.

FG

Tom2

erzwungener Zeilenumbruch

Der folgende Beitrag wurde am 16. 08. 2007, 16:51 Uhr von Tim veröffentlicht.

Hideho,

erstmal danke für die schnelle Antwort. Ich glaub das ist ein guter Ansatz, den ich weiterverfolgen werde. Daher schieb ich auch schomal nen zweites Danke gleich hinterher :)

Hab das ganze jetzt versucht noch nen bissl auszubauen mit xsl:choose und zu integrieren, aber irgendwie will das mein Sharepoint-Server (in dem ich das letztendlich darstellen möchte) nicht haben und meckert - leider ohne fehlermeldung :/

Hab den Code mal von meiner EditiX 5.2.2 evaluation version durchchecken lassen, aber da gabs keine einwände. (BTW: Welcher Editor is derzeit der beste aufm Markt für XSL?)

Mach ich irgendwas falsch ?

gruß

(v)überarbeitetes template
---
<xsl:template name="Neue_Dokumente" match="Row[@Style='Neue_Dokumente']" mode="itemstyle">
    <xsl:variable name="Dateiname">
      <xsl:value-of select="@LinkFilename" />
    </xsl:variable>
    <xsl:variable name="Hyperlink">
      <xsl:value-of select="@FileRef" />
    </xsl:variable>
    <xsl:variable name="Geaendert_am">
      <xsl:value-of select="@Modified" />
    </xsl:variable>
    <xsl:variable name="Bearbeiter">
      <xsl:value-of select="@Editor" />
    </xsl:variable>
    <xsl:variable name="laengestring">
      <xsl:value-of select="string-length(@LinkFilename)" />
    </xsl:variable>
    <xsl:variable name="Dateiname2">
      <xsl:value-of select="substring(@LinkFilename,1,($laengestring)-4)" />
    </xsl:variable>
    <xsl:variable name="Pfad">
      <xsl:value-of select="substring-before(@FileRef,$Dateiname)" />
    </xsl:variable>
    <table class="Content_Neue_Dokumente">
      <tr>
        <td>
          <a href="http://.../{$Hyperlink}" target="_blank">
             <xsl:when test="not contains(substring($Dateiname2, 0, 30), ' ')">
    <xsl:value-of select="substring($Dateiname2, 0, 30)" />
    <xsl:text>&#xa;</xsl:text>
    <xsl:value-of select="substring($Dateiname2, 31, string-length($Dateiname2)" />
 </xsl:when>
            <xsl:value-of select="$Dateiname2" />
          </a>
        </td>
      </tr>
      <tr>
        <td class="Content_Neue_Dokumente_Bearbeitet_am">
          Bearbeitet von <a href="http://...?user={$Bearbeiter}"><xsl:value-of select="$Bearbeiter"/></a> am <xsl:value-of select="$Geaendert_am"/>
        </td>
      </tr>
      <tr>
        <td class="Content_Neue_Dokumente_Pfad">
        <a href="http://.../{$Pfad}">
          <xsl:value-of select="$Pfad"/>
          </a>
        </td>
      </tr>
    </table>
  </xsl:template>

erzwungener Zeilenumbruch

Der folgende Beitrag wurde am 16. 08. 2007, 16:55 Uhr von Tim veröffentlicht.

Sorry, Hab die falsche Version vom Code gepostet!

  <xsl:template name="Neue_Dokumente" match="Row[@Style='Neue_Dokumente']" mode="itemstyle">
    <xsl:variable name="Dateiname">
      <xsl:value-of select="@LinkFilename" />
    </xsl:variable>
    <xsl:variable name="Hyperlink">
      <xsl:value-of select="@FileRef" />
    </xsl:variable>
    <xsl:variable name="Geaendert_am">
      <xsl:value-of select="@Modified" />
    </xsl:variable>
    <xsl:variable name="Bearbeiter">
      <xsl:value-of select="@Editor" />
    </xsl:variable>
    <xsl:variable name="laengestring">
      <xsl:value-of select="string-length(@LinkFilename)" />
    </xsl:variable>
    <xsl:variable name="Dateiname2">
      <xsl:value-of select="substring(@LinkFilename,1,($laengestring)-4)" />
    </xsl:variable>
    <xsl:variable name="Pfad">
      <xsl:value-of select="substring-before(@FileRef,$Dateiname)" />
    </xsl:variable>
    <table class="Content_Neue_Dokumente">
      <tr>
        <td>
          <a href="http://.../{$Hyperlink}" target="_blank">
            <xsl:choose>
              <xsl:when test="not contains(substring($Dateiname2, 1, 30),' ')">
      <xsl:value-of select="substring($Dateiname2, 1, 30)" />
      <xsl:text>&#xa;</xsl:text>
      <xsl:value-of select="substring($Dateiname2, 31, string-length($Dateiname2)" />
     </xsl:when>
     <xsl:otherwise>
       <xsl:value-of select="$Dateiname2"/>
     </xsl:otherwise>
   </xsl:choose>
          </a>
        </td>
      </tr>
      <tr>
        <td class="Content_Neue_Dokumente_Bearbeitet_am">
          Bearbeitet von <a href="http://...?user={$Bearbeiter}"><xsl:value-of select="$Bearbeiter"/></a> am <xsl:value-of select="$Geaendert_am"/>
        </td>
      </tr>
      <tr>
        <td class="Content_Neue_Dokumente_Pfad">
        <a href=".../{$Pfad}">
          <xsl:value-of select="$Pfad"/>
          </a>
        </td>
      </tr>
    </table>
  </xsl:template>

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4