Tim: erzwungener Zeilenumbruch

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>
---

  1. 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

    1. 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>

      1. 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>