Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[XSL] <xsl:cdata>

Pagina: 1
Acties:

  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 02-11 22:01
mag ik, zonder me schuldig te voelen, gebruik maken van xsl:cdata, omdat het een ms toevoeging is?
ik wil namelijk nl bepaalde stukken van mn xml als gewone html laten zien (zonder dat ik er wat mee doe). In de XML staat dus al CData (met createCDataSection) en in mn XSL <xsl:cdata>. Mag dit? Of is er een betere oplossing om html "as is" te tonen...

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


Verwijderd

Naar mijn weten hoort dat tussen <![CDATA[ en ]]> te staan.
Dat is conform de XML standaard.

http://www.w3.org/TR/2000/REC-xml-20001006#sec-cdata-sect

Een geldig XSL document voldoet uiteraard aan die standaard.

  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 02-11 22:01
dat snap ik.. maar dan kan er geen gegenereerde data tussen.... of wel?
het gaat er om dat HTML opgemaakte tekst uit de database eerst in de XML komt en dan via de XSL gewoon als dezelfde HTML (maar wel geparsed) verschijnt

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op vrijdag 24 mei 2002 22:40 schreef zoepercavia het volgende:
dat snap ik.. maar dan kan er geen gegenereerde data tussen.... of wel?
het gaat er om dat HTML opgemaakte tekst uit de database eerst in de XML komt en dan via de XSL gewoon als dezelfde HTML (maar wel geparsed) verschijnt
Wat bedoel je met gegenereerde data. Als je gewoon je XML uitpoept middels een script dan wil dit wel werken.
Ik zou die <xsl:cdata> trouwens niet gebruiken. Ook al vind ik 'm wel fraaier, het is niet standaard (voor zover ik weet).

  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 02-11 22:01
als ik enkel in de XML cdata voor een stuk HTML uit de database gebruik dan poept de XSL ongeparsde HTML uit. Met <xsl:cdata></xsl:cdata> wordt de HTML pas geparsed

voor de duidelijkheid, de XML (xml_content is pagina/content in XML structuur):
set xml_cdata = xmldoc.createCDataSection("ksjfsf<br/>sdfsdf")
xml_content.appendChild(xml_cdata)

--------------
in de XSL:
<xsl:cdata><value-of select="pagina/content"></xsl:cdata>

OUTPUT:
ksjfsf
sdfsdf
----------
in de XSL:
value-of select="pagina/content">

OUTPUT:
ksjfsf<br/>sdfsdf

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 20:10
Je kan dan toch ook copy-of gebruiken :?

  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 02-11 22:01
?
copy-of? wat is het nut daarvan?
ik zal proberen het probleem kort en duidelijk te formuleren:
Een stukje HTML uit de database moet via XML en XSL geparsed in de HTML terecht komen...

database:
koe<br>schaap

XML:
<![CDATA[ koe<br>schaap ]]>

XSL:
??

HTML output na transform:
koe
schaap

wat moet ik in de XSL doen?! <xsl:cdata> werkt een beetje, maar is niet officieel, ik kan me niet voorstellen dat er geen andere oplossing voor is...

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 02-11 22:01
nog maar even een aanvulling, ik snap nu het nut van copy-of, maar de html wordt nog altijd ongeparsed weergegeven...

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 02-11 22:01
zo.. opgelost, ik zal even de oplossing geven voor mensen die willen weten hoe 'oude' HTML uit een database (dus niet XHTML) weer te geven via XML en XSL (met ASP).

in de XML:
maak een CData sectie met createCDataSection

in de XSL:
<xsl:value-of select="." disable-output-escaping="yes" />

zo kan je mooi oude html uit je db gebruiken in je nieuwe XML systeem

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


  • Vampier
  • Registratie: Februari 2001
  • Laatst online: 20-04-2015

Vampier

poke-1,170

Ik heb nu

PHP:
1
<message posted="12 " poster="Vampier" title="Vampier draait ze"><![CDATA[hier komt a`lles te" sta'an<br />:)]]></message>


en in mijn XSL

PHP:
1
2
3
4
5
   <table>
        <tr><td><xsl:value-of select="//message/@title"/></td></tr>
        <tr><td>Posted by :<xsl:value-of select="//message/@posted"/> @ <xsl:value-of select="//message/@poster"/></td></tr>
        <tr><td><xsl:value-of select="//message" disable-output-escaping="yes" /></td></tr>
    </table>


Dit werkt perfect op IE maar mozilla en firebird werkt het niet

Wat ik dus wil is <html> coded parsen omdat dit zo in mijn database staat

[ Voor 128% gewijzigd door Vampier op 19-11-2003 19:47 ]


  • Orphix
  • Registratie: Februari 2000
  • Niet online
Had je imo ook wel een nieuw topic voor mogen aanmaken.
Maar transformeer je client-side of server-side? En wat is de foutmelding? Wat werkt niet? Wat is de output?

  • Vampier
  • Registratie: Februari 2001
  • Laatst online: 20-04-2015

Vampier

poke-1,170

hehehe een nieuw topic starten wordt meestal afgestraft met UTFS ;)

Wat ik wil ik dat de HTML code gewoon doorgegeven wordt als HTML code. Alles wordt client side getransformeerd. (dat wil ik zo houden want het doel is om het data verkeer drastisch naar beneden te halen.)

Op dit moment werkt het in IE maar niet in andere browsers.

  • Vampier
  • Registratie: Februari 2001
  • Laatst online: 20-04-2015

Vampier

poke-1,170

niemand weet het dus?

  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 26-11 23:14

GrimaceODespair

eens een tettenman, altijd ...

euhm... weet je zeker dat je xsl client-side wilt laten renderen? Lijkt me niet zo verstandig, omdat je je wel erg afhankelijk maakt van de mogelijkheden van de client.

Verder: wat doe je nu precies? Je geeft nergens aan hoe je de xml en de xsl aan elkaar linkt, noch geef je aan wat er precies misloopt.

Wij onderbreken deze thread voor reclame:
http://kalders.be


  • Vampier
  • Registratie: Februari 2001
  • Laatst online: 20-04-2015

Vampier

poke-1,170

goed

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

Zo koppel ik het aan elkaar

Wat er tussen cdata staat

PHP:
1
<root><replytracker posts="10"><reply><![CDATA[ <a onmousemove="javascript:display('Vampier - Vampier op fok! radio!!');" onmouseout="javascript:hide();" href="index.php?id=192#378" style="font-size:9px;font-weight:normal;" alt="Vampier - Vampier op fok! radio!!">Vampier op fok! radio!!</a>]]></reply><reply><![CDATA[ <a onmousemove="javascript:display('Nolius - Vampier op fok! radio!!');" onmouseout="javascript:hide();" href="index.php?id=192#377" style="font-size:9px;font-weight:normal;" alt="Nolius - Vampier op fok! radio!!">Vampier op fok! radio!!</a>]]></reply><reply><![CDATA[ <a onmousemove="javascript:display('Maarten - Vampier op fok! radio!!');" onmouseout="javascript:hide();" href="index.php?id=192#376" style="font-size:9px;font-weight:normal;" alt="Maarten - Vampier op fok! radio!!">Vampier op fok! radio!!</a>]]></reply><reply><![CDATA[ <a onmousemove="javascript:display('Vampier - Vampier op fok! radio!!');" onmouseout="javascript:hide();" href="index.php?id=192#375" style="font-size:9px;font-weight:normal;" alt="Vampier - Vampier op fok! radio!!">Vampier op fok! radio!!</a>]]></reply><reply><![CDATA[ <a onmousemove="javascript:display('steggy - Vampier op fok! radio!!');" onmouseout="javascript:hide();" href="index.php?id=192#374" style="font-size:9px;font-weight:normal;" alt="steggy - Vampier op fok! radio!!">Vampier op fok! radio!!</a>]]></reply><reply><![CDATA[ <a onmousemove="javascript:display('Vampier - Downtijd');" onmouseout="javascript:hide();" href="index.php?id=191#373" style="font-size:9px;font-weight:normal;" alt="Vampier - Downtijd">Downtijd</a>]]></reply><reply><![CDATA[ <a onmousemove="javascript:display('Peer - Downtijd');" onmouseout="javascript:hide();" href="index.php?id=191#372" style="font-size:9px;font-weight:normal;" alt="Peer - Downtijd">Downtijd</a>]]></reply><reply><![CDATA[ <a onmousemove="javascript:display('Ralph - It is really true!!');" onmouseout="javascript:hide();" href="index.php?id=190#371" style="font-size:9px;font-weight:normal;" alt="Ralph - It is really true!!">It is really true!!</a>]]></reply><reply><![CDATA[ <a onmousemove="javascript:display('Peer - Luuk Koelman bijt in het zand');" onmouseout="javascript:hide();" href="index.php?id=189#370" style="font-size:9px;font-weight:normal;" alt="Peer - Luuk Koelman bijt in het zand">Luuk Koelman bijt in het zand</a>]]></reply><reply><![CDATA[ <a onmousemove="javascript:display('Vampier - Luuk Koelman bijt in het zand');" onmouseout="javascript:hide();" href="index.php?id=189#369" style="font-size:9px;font-weight:normal;" alt="Vampier - Luuk Koelman bijt in het zand">Luuk Koelman bijt in het zand</a>]]></reply></replytracker><posttracker posts="10" ><post><![CDATA[ <a onmousemove="javascript:display('18-11-2003 - Vampier op fok! radio!!');" onmouseout="javascript:hide();" href="index.php?id=192" style="font-size:9px;font-weight:normal;">Vampier op fok! radio!!</a> ]]></post><post><![CDATA[ <a onmousemove="javascript:display('17-11-2003 - Downtijd');" onmouseout="javascript:hide();" href="index.php?id=191" style="font-size:9px;font-weight:normal;">Downtijd</a> ]]></post><post><![CDATA[ <a onmousemove="javascript:display('16-11-2003 - It is really true!!');" onmouseout="javascript:hide();" href="index.php?id=190" style="font-size:9px;font-weight:normal;">It is really true!!</a> ]]></post><post><![CDATA[ <a onmousemove="javascript:display('14-11-2003 - Luuk Koelman bijt in het zand');" onmouseout="javascript:hide();" href="index.php?id=189" style="font-size:9px;font-weight:normal;">Luuk Koelman bijt in het zand</a> ]]></post><post><![CDATA[ <a onmousemove="javascript:display('14-11-2003 - Sing-a-long : Korn All My Hate');" onmouseout="javascript:hide();" href="index.php?id=188" style="font-size:9px;font-weight:normal;">Sing-a-long : Korn All My Hate</a> ]]></post><post><![CDATA[ <a onmousemove="javascript:display('14-11-2003 - Shadows of the past');" onmouseout="javascript:hide();" href="index.php?id=187" style="font-size:9px;font-weight:normal;">Shadows of the past</a> ]]></post><post><![CDATA[ <a onmousemove="javascript:display('12-11-2003 - 80% of en employers want to quit their job!!');" onmouseout="javascript:hide();" href="index.php?id=186" style="font-size:9px;font-weight:normal;">80% of en employers want to q...</a> ]]></post><post><![CDATA[ <a onmousemove="javascript:display('11-11-2003 - American History part I : Colonialisation');" onmouseout="javascript:hide();" href="index.php?id=185" style="font-size:9px;font-weight:normal;">American History part I : Col...</a> ]]></post><post><![CDATA[ <a onmousemove="javascript:display('11-11-2003 - Multi Lingual');" onmouseout="javascript:hide();" href="index.php?id=184" style="font-size:9px;font-weight:normal;">Multi Lingual</a> ]]></post><post><![CDATA[ <a onmousemove="javascript:display('10-11-2003 - Aardbeving in Nederland');" onmouseout="javascript:hide();" href="index.php?id=183" style="font-size:9px;font-weight:normal;">Aardbeving in Nederland</a> ]]></post></posttracker><message time="18-11-2003 @ 04:59:38" topic="Vampier op fok! radio!!" poster="Vampier"><![CDATA[ Sinds 17 november is fok! radio weer in de lucht. <br /><br />Op de fok! site valt het volgende te vinden:<blockquote><font class="quote">quote:</font><hr />Wat is FOK!radio?<br /><br />FOK!radio is iedere week twee uur lang te horen en gaat -natuurlijk- over FOK! De eerste uitzending was op 16 september 2003, toen het programma nog op het internet radiostation Protune Live Radio werd uitgezonden. Helaas stopte dit station op 11 oktober waardoor FOK!radio na drie uitzendingen ook moest stoppen. Sinds 17 november is het programma echter weer terug, en hoe!<br /><br />Iedere week hebben we een aantal vaste items in het programma. Zo hoor je Yvonne die de laatste roddels binnen FOK! met je doorneemt. Ook stellen we iedere week een crew-lid en een user aan je voor. SunChaser gaat offtopic in zijn column en een van de vaste forumbezoekers neemt de afgelopen week van het forum met je door.<hr /></blockquote><br />De heren en Sunchaser vonden het een goed idee om mij te intervieuwen.... omdat ik stotter en Nederlands niet meer echt mijn 'meest gesproken taal' is zeg ik nogal een aantaal keer um. ook de vertraging op de lijn wou niet echt meehelpen (ik zat verbonden via skype.com)<br /><br />Als je een keer leuke interactieve radio wilt horen met het leukste forum van Nederlands <a href="www.fok.nl" target="_blank">www.fok.nl</a> dan moet je zeker een keer langskomen (ook om te posten [img]"./images/smileys/wink.gif"[/img])<br /><br />Voor meer info over fok radio <a href="http://frontpage.fok.nl/radio" target="_blank">klik hier</a><br /><br />voor het interview bezoek de volgende link:<br /><br /><a href="http://www.vampier.net/blog/photos/fokradio/vampier.mp3" target="_blank">http://www.vampier.net/blog/photos/fokradio/vampier.mp3</a> ]]></message></root>


overbodige lange code ik weet.

alles wat er tussen cdata staat moet niet gerenderd worden. Verder heb ik een XSL.

PHP:
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
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  
  <head>
    <title><xsl:value-of select="//root/@title"/></title>
      <link rel="stylesheet" href="style.css" />
      <script language="javascript" src="functions.js"></script>
      <style>
          .logo{position:absolute;top:10px;left:0px;width:192px;z-index:0;}
          .posttracker{position:absolute;top:100px;left:10px;width:192px;background:#eeeeee;z-index:2;background:url("images/backgorund.png");}
          .replytracker{position:absolute;top:320px;left:10px;width:192px;background:#eeeeee;z-index:2;background:url("images/backgorund.png");}
          .message{position:absolute;top:100px;left:225px;width:550px;z-index:1;background:url("images/bg.gif");}
      </style>
  </head>
  
<body background="images/background.gif">
<div class="logo">[img]"images/logo.png"[/img]</div>

  <div id="news" style="position:absolute;z-index:5;top:-100px;" class="news"></div>
<!-- last posting tracker -->
<table border="0" class="posttracker">
  <tr><td align="left">The last <xsl:value-of select="//posttracker/@posts"/> posts</td></tr>
    <xsl:for-each select="//post">
        <tr><td>[img]"images/block.gif"[/img]<xsl:value-of select="." disable-output-escaping="yes"/></td></tr>
    </xsl:for-each>
</table>



<!-- reply tracker -->
<table border="0" class="replytracker">
  <tr><td align="left">The last <xsl:value-of select="//root/replytracker/@posts"/> reactions</td></tr>
    <xsl:for-each select="//reply">
        <tr><td>[img]"images/block.gif"[/img]<xsl:value-of select="." disable-output-escaping="yes"/></td></tr>
    </xsl:for-each>
</table>


    <table border="0" class="message">
        <tr><td class="postheader"><xsl:value-of select="//message/@topic"/></td></tr>
        <tr><td class="postinfo">Posted by : <xsl:value-of select="//message/@poster"/> - <xsl:value-of select="//message/@time"/></td></tr>
        <tr><td><xsl:value-of select="//message" disable-output-escaping="yes"/></td></tr>
    </table>

    <script>
        //alert(document.body.innerHTML)
    </script>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>


disable-output-escaping="yes"

Ik houd me precies aan de conventies van XML en XSL... gebruik de juiste syntaxen e.d.

In IE werkt het goed maar in andere browsers is het een hell.

(cdata wordt dan namelijk als text op de page neergezet.. dus met <br /> e.d zichtbaar.

Ik hoop dat het nu beter te begrijpen valt.

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

Dave Shea schreef op 19 november 2003 @ 11:00:
Build and test your CSS in the most advanced browser available before testing in others, not after.
If you build a site testing in a broken browser, your code begins relying on the broken rendering of that browser. When it comes time to test in a more standards-compliant browser, you will be frustrated when that browser renders it improperly. Instead, start from perfection and then hack for the less able browsers. Your code will be more standards-compliant from the start, and you won't have to hack as much to support other browsers. Today, this means Mozilla, Safari, or Opera.
Alles wat er in de CDATA sections in de input staat moet niet gerenderd worden door de XSL parser, maar wel zo verstuurd naar de browser dat het wel gerenderd wordt? Dan moet het in de output dus niet naar een CDATA section. IE doet het kennelijk fout.

Rustacean


  • Vampier
  • Registratie: Februari 2001
  • Laatst online: 20-04-2015

Vampier

poke-1,170

Het is jammer om het complete project naar de /dev/null te gooien nu ik er bijna ben. Maar er zit denk ik niets anders op... ik denk dat ik het maar in javascript ga ombouwen dat krijg ik tenminste wel op elke browser (behalve op lynx) draaiende :(

Bedankt voor jullie bijdragen :)

  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 26-11 23:14

GrimaceODespair

eens een tettenman, altijd ...

Als je toch zo ambitieus bezig bent (da's niet pejoratief bedoeld ;) ), kan je de boel misschien porten naar een serverside oplossing? Er bestaat een XSLT module voor Apache, en ik neem aan de met IIS toch ook wel één en ander is op te lossen.

Trouwens, andere vraag: heb je ondervonden dat er minder dataverkeer is, of hoop je dat alleen? Misschien zie ik het gewoon niet, maar ik snap niet hoe dat zou kunnen namelijk.

Wij onderbreken deze thread voor reclame:
http://kalders.be

Pagina: 1