1) legg din tekst inn i tabeller
2) dette burde ikke forekomme hvis du bruker <li></li> for en bullet
/nute
2) joda :-| Det er fordi <li> ikke er et box element. Hvis du sjekker om din bullet er den siste, så kan du jo skrive ut et linjeskift ?! noe ála
<xsl:for-each ...>
...
<xsl:if test="position()=last()"><br/><xsl:if>
</xsl:for each>
/ntue
Du kan bruge:
string-length(normalize-space(.))
til at finde længden på indholdet i et element eller en attribute.
Herefter kan "substring()" bruges til at klippe strengen over med...
/CS
greystate >> det blir jo en utrolig "tung" operasjon hvis man har en streng som er 100 tegn, men kun vil vise 15 tegn i bredden. Så skal man jo til å lage en rekursiv streng-splitter...noe som høres litt voldsomt ut i forhold til å la tabeller formattere output'et
/nute
Husk: Jeg skriver til en tesktfil som derfor IKKE må indeholde andet end tekst, ergo: intet HTML.
Greystate: Kan du give et eksempel på det, du skriver?
/ kanyle
Hmmm - har fundet ud af (2), men kan ikke kommme videre med (1).
Vedr (1) er her et eksempel:
<bodytext>
<p>Vel in feugiat eros duis amet, te, blandit, odio duis te illum aliquip dolore aliquam consequat quis, diam vero. Exerci nulla, dolor ipsum esse in ut, ut nulla consequat eu wisi eum ullamcorper euismod autem quis facilisis vulputate vel illum esse ad minim commodo.</p><p>Vero at veniam in luptatum dolore dolor ullamcorper et consequat in laoreet, euismod nostrud et vel sit ut iusto quis augue feugiat adipiscing ut ad, lobortis. Enim erat dolore qui, qui sit elit minim blandit ullamcorper ex at diam augue nostrud. Nulla, tation, wisi, erat luptatum ullamcorper adipiscing, in exerci zzril nisl duis accumsan tincidunt, feugait suscipit dolore nisl et at nisl. Quis nonummy molestie qui vel augue eum dolor illum wisi luptatum, lorem delenit. </p>
</bodytext>
Denne bliver skrevet ud på én lang linje. Jeg vil gerne ha teksten til at wrappe således at hver linje er på eksempelvis 400chars. How to do? -Og nej - jeg kan ikke lægge det ind i en tabel fordi der MÅ IKKE VÆRE HTML i min tekstfil - kun ren tekst med linjeskift.
/kanyle
Her er lidt at kigge på:
<xsl:variable name="maxlen">400</xsl:variable>
<xsl:template match="bodytext">
<xsl:apply-templates select="p" />
</xsl:template>
<xsl:template match="bodytext/p">
<xsl:param name="trimmed" select="normalize-space(text())" />
<xsl:call-template name="output"><xsl:with-param name="tekst" select="$trimmed" /></xsl:call-template>
</xsl:template>
<xsl:template name="output">
<xsl:param name="tekst" />
<xsl:choose>
<xsl:when test="string-length($tekst) > $maxlen">
<xsl:value-of select="substring($tekst, 1, $maxlen)" /><br /><br />
<xsl:call-template name="output"><xsl:with-param name="tekst" select="substring($tekst, $maxlen)" /></xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$tekst" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
/CS
Erstat lige "<br /><br />" med "
" (linjeskift i "text" mode...)
/CS
Det ser meget dejligt ud. Men ved det andet <p> (<p>Vero at veniam...) bliver der ikke breaket ved 100 chars (jeg satte maxlen til 100).
Et anden udfordring: Hvordan kan jeg sørge for at ordene ikke bliver brudte, dvs en form for word-wrap går jeg ud fra ?
Flere points gives gerne, hvis du har "brug for det" ;)
/kanyle
Virker fint her - hvad bruger du til at transformere med?
/CS
Jeg bruger Xerces og Xalan. Break ved andet <p> virker, men den bryder stadig linjerne ved 100chars skarpt, og derved bliver ordene splittet op:
Eksempel:
------
- Det ser utroligt interessant ud, og jeg kan fore <slut linje>
estille mig, at det får en stor udbredelse, fordi <slut linje>
man får en tiltalende præsentation af banerne, so <slut linje>
om ikke er set før, siger hun. Det tager ca. en må <slut linje>
åned at opbygge en virtuel model af en 18-hullers <slut linje>
golfbane. Peter Boldsen regner med, at indtægtern <slut linje>
----
Ja det er jo noget skrammel :-)
Jeg ser lige at "substring($tekst, $maxlen)" skal ændres til "substring($tekst, $maxlen + 1)" for ikke at gentage karakter #100.
Mht. til at få brudt ordene korrekt - den er jo faktisk temmelig tricky, og kommer nok til at koste et point eller to ekstra :-)
Der er nok ingen vej uden om script i stylesheet'et, men så kan man jo også bruge Regular Expressions... jeg kigger på det.
/CS
Jeg glæder mig til at se det :)
/kanyle
Efter 8 år tror jeg at tråden lukkes :):)
Ajjjjjj - var liiige ved at have den :-)
/Chriztian