Avatar billede kresten Nybegynder
23. marts 2001 - 10:55 Der er 12 kommentarer og
1 løsning

Text med linieskift til HTML


Hej

Jeg har noget text i et XML element som indeholder en masse text hvor der bl.a. er nogle linieskift i. Skriver man det ud er der ikke et eneste linieskift.

Hvordan kan det blive vist ordenligt? Skal jeg konvertere alle linieskift til <br/> først? Eller bruge javaScript? Det må da kunne laves på en anden måde!?!??
Avatar billede getalife Nybegynder
23. marts 2001 - 11:02 #1
Du får ikke noget ud at at lave linieskift om til <br/>.. det kommer bare ud som tekst.
Avatar billede kresten Nybegynder
23. marts 2001 - 11:04 #2
<text><![CDATA[Heller ikke<br> sådan her]]></text>

Vil browseren så ikke selv fortolke det som et HTML tag??
Avatar billede getalife Nybegynder
23. marts 2001 - 11:06 #3
Tror jeg.. men prøv :o)

Læste et sted at CDATA var på vej ud..
Avatar billede oleprds Nybegynder
23. marts 2001 - 13:59 #4
Indel teksten i paragraffer:

<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>
<?xml-stylesheet href=\"index1.xsl\" type=\"text/xsl\"?>
<samples>
<text>

<p>
Første afsnit
</p>

<p>
Andet afsnit
</p>

</text>
</samples>


og sæt <br/> ind i xsl-siden:

<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>
<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/TR/WD-xsl\">

<xsl:template match=\"/\">
    <xsl:apply-templates/>
</xsl:template>
<xsl:template match=\"text()\">
    <xsl:value-of select=\".\"/>
</xsl:template>

<xsl:template match=\"samples\">
<html>
<head>
  <title>Text test</title>
</head>
<body>
        <xsl:apply-templates/>   
</body>
</html>

</xsl:template>

<xsl:template match=\"text\">
      <xsl:apply-templates/>
</xsl:template>

<xsl:template match=\"p\">
      <xsl:apply-templates/>
      <br/>
</xsl:template>

</xsl:stylesheet>


:-)
Ole
Avatar billede kresten Nybegynder
23. marts 2001 - 14:19 #5

Det virker ikke helt som jeg vil have det.

Jeg tog f.eks. teksten fra en af computer worlds artikler og den indeholder nogle rimelig lange tekster med nogle linie skift.

Hvis jeg skriver den ud via xsl med en almindelig <xsl:value-of select=\"text\"/> så kommer det bare ud i en stor tekst hvor spaces og linie skift bliver ignoreret. Det bedste jeg er kommet frem til at er indsætte...

<pre><xsl:value-of select=\"text\"/></pre>

Men så gider den ikke lave word wrap *suk*

Det jeg har brug for er, at at sige til det lede XSL at den skal behandle elementet som HTML.

Hvordan gør jeg det?
Avatar billede getalife Nybegynder
17. april 2001 - 14:35 #6
Kunne du ikke lave det som en HTML include istedet?

<!DOCTYPE xsl:stylesheet [
  <!ENTITY includefilen SYSTEM \"includefil.html\">
]>

Referer til entityen ved at skrive &includefil; i din XSL.

Jeg har ikke prøvet.. men give it a shot.
Avatar billede janegil Nybegynder
23. april 2001 - 14:12 #7
Hva gjør du?
Bruker XSL/T til å konvertere fra HTML til XML?

Husk at XML er semantisk markup, ikke typografisk, så i XML selv finnes det ikke noe linjeskift.

Du kan evt. bruke CSS til å fortelle browseren av visse XML-elementer skal vises med stilen \"display:block\", det vil gi linjeskift mellom disse elementene.

Det er ikke helt liketil å skrive XSL som transformerer
\"blabla<br>blabla\"
til
\"<x>blabla</x><x>blabla</x>\"
men det kan la seg gjøre med noen next-sibling akser eller noe.
Avatar billede giraffel Nybegynder
05. juni 2001 - 20:32 #8
Hej, har du kigget på xsl:output ?

Ved at benytte xsl:output kan man slippe for at whitespace og linieskift.

http://www.w3.org/TR/xslt.html#output
Avatar billede giraffel Nybegynder
06. juni 2001 - 19:47 #9
hmm, var lige lidt hurtig der :)
der mangler vist lige et ignoreres i enden af anden linie... :)

Du bliver sq lige nødt til at forklare lidt om de linieskift du omtaler... hvordan er de markeret ??
er det html-style (<br>) eller en eller anden lusket ascii-værdi?
Avatar billede kresten Nybegynder
07. juni 2001 - 09:52 #10
Okay :-)

Jeg har en ganske almindelig xml opmarkeret text i stil med...

<beskrivelse>
  Dette er en lille beskrivelse

  Her er et linie skift i beskrivelsen.
</beskrivelse>

Hvis jeg så vil skrive beskrivelsen ud i browseren ved at bruge XSL, viser den det som almindelig HTML. Det vil sige at linieskift og spaces (hvis mere end 2) bliver fjernet, sådan at det hele står ud i en køre.

Jeg vil GERNE have at at det står på samme måde som i XML\'en, men det ser ud som om der ikke er andet at gøre end at køre replace på alle CRLF og lave dem om til <br/>????
Avatar billede janegil Nybegynder
07. juni 2001 - 10:06 #11
<beskrivelse><![CDATA[
  Dette er en lille beskrivelse

  Her er et linie skift i beskrivelsen.
]]></beskrivelse>
Avatar billede kresten Nybegynder
07. juni 2001 - 10:12 #12
Nope, virker ikke. I XML\'en står det fint nok, men når det kommer ud i browseren virker det ikke.

Du som selv siger tidligere så er det sematisk, ikke typografisk - og det er det jeg skal bruge :-)
Avatar billede janegil Nybegynder
07. juni 2001 - 10:18 #13
CDATA på vei ut?
Vel, CDATA er i hvert fall ikke noen god løsning, for det som står inne i CDATA er ikke XML. Du vil gjerne ha linjeskift &#8211; det må være fordi linjeskift betyr et eller annet. Men denne betydninger er skjult for en XML-parser, som ikke ser forskjell på linjeskift og annet whitespace, og heller ikke legger noen betydning i whitespace. Hvis du bruker linjeskift til å dele opp beskrivelsen i flere deler, så er det penere xml å bruke et element til å markere disse delene:

<beskrivelse><delbeskrivelse>Dette er en lille beskrivelse
</delbeskrivelse><delbeskrivelse> Her er et linie skift i
beskrivelsen.</delbeskrivelse>

Dette gir nok fortsatt ikke linjeskift, ikke før du setter på et CSS stilark som som forteller at delbeskrivelser har \"display: block;\"
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester