Oprettet man. d. 22. april 2002 kl. 16:14:16

kanyle
kanyle (22.068 point. Point ude: 106)

Linjeskift, wrap + diverse til tekstformat

Mit xml skal transformeres til tekst på en unixbox og jeg har (indtil videre) fundet følgende, der 'irriterer':
1) Hvordan kan jeg sørge for at min tekst bliver wrapped, således at det ikke fortsætter ud et par meget lange linjer?

2) Midt i teksten findes der en bulletlist <li> med x antal bullets. Jeg formatter således, at <li> bliver til "-" i mit tekstdokument. Problemet er at den sidste bullet ikke får et linjeskift, og teksten der kommer efter bullet'en fortætter som om det var en del af bullet'en.

Det var indtil videre det :)

/kanyle

Skrevet man. d. 22. april 2002 kl. 16:28:59| #1

nute
nute (88.221 point)
1) legg din tekst inn i tabeller

2) dette burde ikke forekomme hvis du bruker <li></li> for en bullet

/nute

Skrevet man. d. 22. april 2002 kl. 16:33:31| #2

nute
nute (88.221 point)
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

Skrevet man. d. 22. april 2002 kl. 16:36:52| #3

greystate
greystate (33.706 point)
pimpmyxslt.com
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

Skrevet man. d. 22. april 2002 kl. 16:41:34| #4

nute
nute (88.221 point)
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

Skrevet man. d. 22. april 2002 kl. 17:42:15| #5

kanyle
kanyle (22.068 point)
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

Skrevet tir. d. 23. april 2002 kl. 13:57:55| #6

kanyle
kanyle (22.068 point)
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

Skrevet tir. d. 23. april 2002 kl. 14:38:58| #7

greystate
greystate (33.706 point)
pimpmyxslt.com
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) &gt; $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

Skrevet tir. d. 23. april 2002 kl. 14:44:44| #8

greystate
greystate (33.706 point)
pimpmyxslt.com
Erstat lige "<br /><br />" med "&#xa;" (linjeskift i "text" mode...)

/CS

Skrevet tir. d. 23. april 2002 kl. 14:58:35| #9

kanyle
kanyle (22.068 point)
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

Skrevet tir. d. 23. april 2002 kl. 15:21:23| #10

greystate
greystate (33.706 point)
pimpmyxslt.com
Virker fint her - hvad bruger du til at transformere med?

/CS

Skrevet tir. d. 23. april 2002 kl. 15:51:22| #11

kanyle
kanyle (22.068 point)
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>
----

Skrevet tir. d. 23. april 2002 kl. 16:03:50| #12

greystate
greystate (33.706 point)
pimpmyxslt.com
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

Skrevet ons. d. 24. april 2002 kl. 11:11:06| #13

kanyle
kanyle (22.068 point)
Jeg glæder mig til at se det :)

/kanyle

Skrevet ons. d. 18. august 2010 kl. 18:33:29| #14

kanyle
kanyle (22.068 point)
Efter 8 år tror jeg at tråden lukkes :):)

Skrevet ons. d. 18. august 2010 kl. 22:24:31| #15

greystate
greystate (33.706 point)
pimpmyxslt.com
Ajjjjjj - var liiige ved at have den :-)

/Chriztian

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Benytte XSLT til tranformering af data imellem 2 systemer

Oprettet den 8. december 2011 kl. 11.52
bongo13 giver 60 point for svar | Giv et svar »

fo:block kollapser

Oprettet den 14. november 2011 kl. 11.16
schristensen giver 200 point for svar | Giv et svar »

Select i Xpath, ignorere case

Oprettet den 20. oktober 2011 kl. 00.01
wise giver 30 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Her er fem sjove danske websider du skal kende

Trænger dine lattermuskler til en omgang fitness på dansk? Vi viser vej til fem websider fyldt med humor og vanvittig satire.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du snart hente Windows 8

Den nye offentlige betaversion af Windows 8 er klar i denne måned.


Nyheder fra Computerworld

Teaser billede

Måske snart slut med Androids helt store problem

Android-platformen har længe været plaget af et særligt problem. Men måske er problemet nu ved at være elimineret.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger