Toon posts:

[XML] HTML opmaak behouden in een XML bestand

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo allemaal,

Voor mijn CMS systeem maak ik gebruik van een iframe als een soort van word op een internet pagina. Met met de php functie "strip_tags()" verwijder ik alle tags die niet door het iframe gemaakt kunnen worden. Een </P> wordt ook verandert naar een <BR>.
code:
1
2
3
4
5
6
7
8
9
10
<?php
function wysiwyg_savelist($inhoud)
{
// verander toegestande tags naar UBB-tags
$inhoud = str_replace("</P>", "<br \>", $inhoud);
$inhoud = str_replace("&nbsp;", "", $inhoud);
$inhoud = strip_tags($inhoud, "<strong><em><u><br>");
return $inhoud;
}
?>

dit doe ik om te voorkomen dat iemand met Javascript gaat zitten werken. Mijn database ziet er zo uit:
code:
1
2
3
4
5
6
mysql> SELECT * FROM nieuws;
+-----+-----+-----+-------------------------+---------------------------------------------------------------------------------------------------+------------+
| nid | sid | uid | titel            | tekst                                                               | datum  |
+-----+-----+-----+-------------------------+---------------------------------------------------------------------------------------------------+------------+
|  1  |   1 |   1 | Test met ", ' en / en \ | Een beetje <STRONG>vette, </STRONG><EM>Cursiefe,</EM> <U>onderstreepte </U>en gewone tekst<BR>    | 23-01-2002 |
+-----+-----+-----+-------------------------+---------------------------------------------------------------------------------------------------+------------+

(nid = nieuws_id, sid = site_id, uid = user_id)

Nu wordt van deze inhoud een xml-file gemaakt:
code:
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0"?>
<Nieuws>
    <Item Id="2">
        <Titel>Test met ", ' en / en \</Titel>
        <Datum>23-01-2002</Datum>       
        <Tekst>
            Een beetje <STRONG>vette, </STRONG><EM>Cursiefe,</EM> <U>onderstreepte </U>en gewone tekst<BR \>
        </Tekst>
        <Auteur>Henk Erik van der Hoek</Auteur> 
        </Item>
</Nieuws>

Het probleem wat ik nu heb is dat ik niet weet hoe ik hier weer goede HTML van kan maken. XML is eigenlijk voor data, maak ik wilde de gebruikers ook de mogelijkheid geven om simpele opmaak de regelen (Vet, Cursief, Onderstreept en misschien een plaatje). Ik heb deze XSL gemaakt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="html" indent="yes" encoding="utf-8"/>

<xsl:template match="/Nieuws">
    <LINK REL="stylesheet" HREF="../style.css" TYPE="text/css"></LINK>
    <xsl:apply-templates />
</xsl:template>

<xsl:template match="Item">
    <TABLE BORDER="0" WIDTH="100%" CELLPADDING="0" CELLSPACING="0">     
        <TR>
            <TD>
                <TABLE BORDER="0" WIDTH="100%" CELLPADDING="0" CELLSPACING="0" CLASS="Header">
                    <TR>
                        <TD>
                            <DIV CLASS="Titel">
                                <xsl:value-of select="Titel"/>                              
                            </DIV>
                        </TD>
                        <TD ALIGN="right">
                            <DIV CLASS="Datum">
                                <xsl:value-of select="Datum"/>
                            </DIV>
                        </TD>
                    </TR>
                </TABLE>
            </TD>
        </TR>
        <TR>
            <TD>
                <TABLE BORDER="0" WIDTH="100%" CELLPADDING="0" CELLSPACING="0" CLASS="Body">
                    <TR>
                        <TD>
                            <DIV CLASS="Tekst">
                                <!-- hier komt het probleem dat iedere opmaak tag niet wordt geparsed, de tekst is wel gewoon zichtbaar -->
                                <xsl:value-of select="Tekst"/>
                            </DIV>
                        </TD>
                    </TR>
                    <TR>
                        <TD ALIGN="right" HEIGHT="20">
                            <DIV CLASS="Small">
                                Geschreven door: <xsl:value-of select="Auteur"/>
                            </DIV>
                        </TD>
                    </TR>
                </TABLE>
            </TD>
        </TR>
    </TABLE>
    <BR/>
</xsl:template>

</xsl:stylesheet>

Wie weet hoe ik dit kan oplossen?

Henk Erik

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Check deze topics eens:

[topic=393866/1/25]
[topic=292335/1/25]

Dit gaat over exact hetzelfde en biedt volledige oplossing :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Je kan het trouwens op twee manieren doen:

1) Netjes met een XHTML namespace en een template voor XHTML (zoals in het eerste topic)

2) Templates maken voor je opmaak tags en ipv value-of gebruik maken van apply-templates.

Oplossing 2 is vrij simpel en wellicht het makkelijkst als je alleen i, b, u etc wilt bieden...

Ook kan je al voorbeeld eens kijken naar de XHTML transformatie van PostingML: http://www.pandoramix.org/PostingML/

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
Thanx, Ik denk dat ik er nu wel weer uit kom. Thanx.

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 12:42
Ja ik wou al zeggen, v/d week precies hetzelfde topic :)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
henkerik: Ik denk dat ik er nu wel weer uit kom.
Mooi :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op vrijdag 22 februari 2002 21:00 schreef ddc het volgende:
Ja ik wou al zeggen, v/d week precies hetzelfde topic :)
<laat>
spuit 11
</laat>
:+

Doet iets met Cloud (MS/IBM)


Verwijderd

Op vrijdag 22 februari 2002 20:43 schreef mbravenboer het volgende:
Je kan het trouwens op twee manieren doen:
Het kan nog een stukje gemakkelijker:
code:
1
2
3
<xsl:template match="html">
  <xsl:copy-of select="*|text()"/>
</xsl:template>

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Doekman: Het kan nog een stukje gemakkelijker
Idd, maar bedenk dan wel dat je dan geen enkele controle meer hebt op de inhoud van de post. Alles zal simpelweg gekopieerd worden. Met een identiteits-templates voor XHTML heb je dit probleem in feite ook, dus ook daarmee moet je een beetje uitkijken :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 12:42
Op vrijdag 22 februari 2002 21:20 schreef mbravenboer het volgende:
Idd, maar bedenk dan wel dat je dan geen enkele controle meer hebt op de inhoud van de post. Alles zal simpelweg gekopieerd worden. Met een identiteits-templates voor XHTML heb je dit probleem in feite ook, dus ook daarmee moet je een beetje uitkijken :) .
Meestal worden verboden tags er toch al uit gehaald door de php die de xml uitpoept :).
Pagina: 1