Avatar billede bubbi Nybegynder
18. marts 2003 - 11:29 Der er 11 kommentarer og
1 løsning

XML, XSL, CSS, Servlets, igen igen

Hejsa igen igen

Jeg har smidt et par spørgsmål her på forumet inden for de sidste uger, men det er grundet jeg sidder og er ved at lave noget rigtigt seriøst med XML for første gang, og det er vel det forumet her er til. Jeg vil dog denne gang sætte mange af mine spørgsmål ind i en størrer sammenhæng så folk kan få en ide om hvad det er jeg prøver på og måske kan give mig helt generalt kritik.

Jeg har en database bygget op af en masse tabeller med et vikårligt antal kolonner i. Jeg kan lave en søgning i denne database i en servlet og med de result set få genereret et XML der har de oplysninger i jeg har brug for at opbygge en artikle.
Det XML min servlet bygger op kunne altså se sådanne ud:
--------------------
  <?xml version="1.0" encoding="ISO-8859-1" ?>
<indlaeg>
  <ID> 1 </ID>
 
  <Overskrift>
Marsvin fra det ydre rum invadere Mars
  </Overskrift>
 
  <Beskrivelse>
Men de er da meget søde, lige før de spiser din Hund!!!!
  </Beskrivelse>
 
  <Skabelon> 2 </Skabelon>
 
  <Dato> 1999-12-23 12:13:54 </Dato>
 
  <Offentligt>0</Offentligt>
 
  <Forfatter> Jesper </Forfatter>
 
  <Antalvisninger> 0 </Antalvisninger>
 
  <Tekst>
Dette er en mumle tekst der handler om hamstre der  spiser hunde. Det er ikke <i>særlig sødt</i>, men så igen er det jo KUN en mumle tekst, så du kunne slet <b>ikke finde på det.</b>
  </Tekst>

</indlaeg>
--------------------

I dette XML er det i sær værd at ligge mærke til der bliver brugt "almidelige" html tags. Dette kommer jeg tilbage til senere

Dette XML ønsker jeg så at bruge et XSL til at sætte op. Sige der og der skal overskriften være, der og der skal teksten være, den skal være delt op i to spalter og så vidre. Dette bliver bestemt af den skabelon der er tilknyttet et givent indlæg. Det vil også være skabelonen der vil bestemme hvor ting som billeder skulle placeres i forhold til tekst. Billeder er ikke taget med her i det XML jeg har vist, men er taget højde for længer i forløbet.

Til dette XSL skulle der så gerne knyttes et CSS. Dette CSS vil kunne sørge for at forskellige XSL'er har samme udformning, samme baggrund/tekst farve og har generalt en ens præsentation.

Nu kommer det så. Er det en nogenlunde måde at bygge tingene op på?

Er det muligt at få XML, XSL og CSS til at spille sammen på denne måde?

Er det muligt at bruge HTML tags på den måde i XML'en og få den ønskede effekt ud af det?

Er der noget der burde laves anderledes?

Tror det var det for nu.

MvH
Jesper
Avatar billede janegil Nybegynder
18. marts 2003 - 11:40 #1
Hva mener du med 'alminnelige' HTML-tagger?

At du fx bruker <br> i stedet for den XML-velformede <br /> ?
Avatar billede atoft Nybegynder
18. marts 2003 - 11:40 #2
svarene er ganske simple

ja
ja
ja
nej

Hvis du kan bygge det statisk i html får du ingen problemer med at lave det dynamisk via xslt mv.
Avatar billede bubbi Nybegynder
18. marts 2003 - 12:15 #3
Ja men jeg har et problem fordi at de <b><i> tages (for at tage to eksempler)jeg har de bliver ikke fortolket, og jeg ved ikke hvorfor eller hvordan jeg får dem til at gøre det :(
Avatar billede atoft Nybegynder
18. marts 2003 - 12:27 #4
Du bør enten bruge et CDATA tag eller escape <,> og & til &lt;, &gt; &amp;
Avatar billede bubbi Nybegynder
19. marts 2003 - 10:25 #5
Jeg har prøvet at bruge CDATA nu. Det gør at godt nok bliver <i> </i> tagene ikke vist længere i det html jeg får genereret men det bliver heller ikke fortolket tilat være kursiv. Jeg har pvøet med &lt og &gt det gør bare at det jeg får vist der bliver <i> </i> tagene også vist og det var ligesom heller ikek det målet var :(

MvH
Jesper
Avatar billede bubbi Nybegynder
19. marts 2003 - 10:28 #6
Mit andet problem er forøvrigt at jeg ikke kan få det XSL jeg ar lavet til at bruge det CSS jeg har lavet, en ting jeg også har spurgt til før og der er ret væsentligt jeg får til at fungere :(

/J
Avatar billede atoft Nybegynder
19. marts 2003 - 11:04 #7
I xlst'en hvor du trækker den node ud med html-tagene bør der være en disable-output-escaping="yes" attribute

<xsl:value-of select="." disable-output-escaping="yes"></xsl:value-of>
Avatar billede janegil Nybegynder
19. marts 2003 - 11:05 #8
XSL kan ikke 'bruge' CSS, XSL kan sette inn et CSS stilark i det genererte HTML-dokumentet, og det er så HTML-dokumentet som 'bruger' CSS.

Hvis din CSS er statisk, vil det gjerne være praktisk å plassere stilarket i en separat fil.

Og spm alltid, er det lettere å se problemet, hvis man har en URL med et eksempel.
Avatar billede janegil Nybegynder
19. marts 2003 - 11:10 #9
bruker du server- eller klient-side XSLT ?
Avatar billede bubbi Nybegynder
19. marts 2003 - 11:49 #10
Jeg afprøver den med disable-output og ser om det fungere.
På forhånd tak.

Mit CSS er statisk og er placeret i et seperat fil.
Men der skal placeres en henvisning til, right? Og det skal bare være som det var en normal henvisnign som hvis det var et html dokument?

Og jo jeg ved godt det med at det altid er lettere når man kan se problemet, nu er det bare sådan at jeg sidder og har ikke muligheden for at uploade det vi arbejder på endnu. Så desværrer.

Men igen mange tak for hjælpen?
Avatar billede atoft Nybegynder
19. marts 2003 - 11:51 #11
hvorfor kan du ikke bare lave et link-tag i dit xslt virker det ikke ?
Avatar billede bubbi Nybegynder
19. marts 2003 - 12:00 #12
Jeg har nu prøvet med "disable-output-escaping="yes"" og det hjælper ikke meget. Det jeg pludslig får outputtet er:
Sygehusende <i>er fyldt</i> med syge folk, hvad bliver det næste????

Det XML tag der laver koden ser sådanne ud:

<Beskrivelse> <![CDATA[ Sygehusende <i>er fyldt</i> med syge folk, hvad bliver det næste????]]></Beskrivelse>

Og det XSL jeg sætter til at vise denne stump ser sådanne ud:
<xsl:value-of select="Beskrivelse"/>

Er det bare mig eller er det ikke sådanne i har hjulpet mig til at det skulel se ud?

MvH
Jesper
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
Kategori
Kurser inden for grundlæggende programmering

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