Avatar billede getalife Nybegynder
22. september 2000 - 11:01 Der er 7 kommentarer og
3 løsninger

HTML tag i XML

Nogen der ved om det kan lade sig gøre at skrive HTML tags i XML?

Problemet er at jeg har et backoffice hvor kunden skriver noget tekst ind, denne tekst gemmes i en DB. Teksten spyttes ud som XML og
Vha. XSL formaterer jeg denne tekst server side.
Jeg vil gerne kunne give kunden den mulighed at skrive HTML tags ind i teksten.

Nogen der kender til en løsning?

/Getalife
Avatar billede skovtrold Nybegynder
22. september 2000 - 11:06 #1
Hej

Både ja og nej. Du skal selv lave dine egne \"HTML\"-tags i din XML, f.eks. følgende:

<tekst>Her er en tekst <fed>der er</fed> bold nogle steder</tekst>

Bagefter kan du så i din XSL definere hvad dette tag skal gøre, f.eks.

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

Det er faktisk legende let og temmelig smart.
Avatar billede kresten Nybegynder
22. september 2000 - 11:16 #2
Jeg tror nok at kan definere det XML element du bruger til at gemme din HTML som et #PCDATA felt i dit DTD.

Jesus! Sikke mange forkortelser :-)
Avatar billede getalife Nybegynder
22. september 2000 - 11:20 #3
Skovtrold>>
Hvordan vil XSLen så se ud?

Hvis vi nu er simple:
<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>
<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/TR/WD-xsl\" xmlns:html=\"http://www.w3.org/TR/REC-html40\" result-ns=\"\" language=\"JScript\">
    <xsl:template match=\"/\">

        <xsl:value-of select=\".\"/>
    </xsl:template>
</xsl:stylesheet>
Avatar billede skovtrold Nybegynder
22. september 2000 - 11:24 #4
Hej igen,

Det kan f.eks. være som følgende:

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

<xsl:template match=\"/\">
<HTML>
<HEAD>
<TITLE><xsl:value-of select=\"dokument/titel\"/></TITLE>
</HEAD>
<BODY>

Her er sidens almindelige indhold

</BODY>
</HTML>
</xsl:template>

<!-- Her definere du dine egene tags -->

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

<xsl:template match=\"list\">
<UL>
<xsl:for-each select=\"emne\">
<LI/><xsl:apply-templates />
</xsl:for-each>
</UL>
</xsl:template>

</xsl:stylesheet>
Avatar billede getalife Nybegynder
22. september 2000 - 13:06 #5
Jeg kan ikke få det til at du\'...

Når jeg skriver <xsl:value-of select=\"Doku/Tekst\"/> istedet for \"Her er sidens almindelige indhold\" skriver den det kun ud som normal tekst :o(

Her er min XML:
<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>
<Doku>
<Tekst>Her er er en fed <fed>test</fed></Tekst>
<Titel>Noget</Titel>
</Doku>


Avatar billede skovtrold Nybegynder
22. september 2000 - 13:26 #6
Hej igen

Nej, jeg glemte også en enkelt, men meget vigtig ting.

Under \"Her er siden alm. indhold\" skal tilføjes
<xsl:apply-templates select=\"Doku/Tekst\"/>
..altså inden </body>

Hvis det stadigt driller, kan du lige sende mig din e-mail adresse til jepsnips@hotmail.com, så skal jeg sende dig et eksempel i en zipfil hvor det virker, så du kan se nøjagtigt hvordan det er gjort.
Avatar billede lbhansen Nybegynder
22. september 2000 - 19:22 #7
Det der er vigtigt. er det så ikke bare, at der skal kunne skrives nogle tags, som ikke bliver parset som XML. FX vil et title tag se sådan ud.
<![CDATA[<title>]]>
et stykke tekst, eller xmlkode
<![CDATA[</title>]]>
Avatar billede getalife Nybegynder
22. september 2000 - 20:17 #8
Tak for svarene.
Jeg tror jeg holder mig til Skovtrold\'s svar.
da jeg sikkert også kunne benytte mig af de andre svar har jeg forhøjet pointene lidt og delt dem ud efter fortjeneste.

/Getalife
Avatar billede guldner Nybegynder
26. september 2000 - 18:48 #9
Måske har jeg misforstået spørgsmålet, men jeg forstod det sådan at du ønsker at tillade brugeren at indsætte et hvilket som helst html-tag i teksten. Og at disse tags er bevaret efter din formatering af xml-dokumentet.
Hvis du følger Skovtrolds løsning, skal du så ikke lave en template til hver eneste mulige html-tag?
Jeg tror hellere du skulle kigge på <xsl:copy-of>, som i modsætning til <xsl:value-of> ikke konverterer resultatet af select-udtrykket til en streng, men bevarer evt. tags.
Avatar billede getalife Nybegynder
26. september 2000 - 18:58 #10
Problemet er at serveren kun forstår XSL version 0.0001beta... og dermed kun nogle tags.
Som jeg skrev ville jeg sikkert også kunne bruge nogle andre løsningsmodeller :o)

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





Premium
Søstrene Grene skifter Microsoft ud med SAP og rykker for første gang i clouden i stor ERP-transformation: Der er brug for en helt ny tilgang