CR/LF in XML-element

Plaats reactie
satori
Plus Member
Plus Member
Berichten: 136
Lid geworden op: 03 mei 2004, 09:15
Locatie: Landen

Wazup :-)

Ik wil een XML-bestand late parsen met een XSLT. Ik zou dit resultaat
Lorem
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Proin auctor. Vivamus est odio, rhoncus vitae, semper eget, aliquam eget, felis.
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.

In hac habitasse platea dictumst.

Ipsum
Proin auctor. Vivamus est odio, rhoncus vitae, semper eget, aliquam eget, felis.
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.

In hac habitasse platea dictumst.

willen bekomen, maar in plaats daarvan is dit het resultaat:
Lorem
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.Proin auctor. Vivamus est odio, rhoncus vitae, semper eget, aliquam eget, felis.Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.In hac habitasse platea dictumst.

Ipsum
Proin auctor. Vivamus est odio, rhoncus vitae, semper eget, aliquam eget, felis.Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.In hac habitasse platea dictumst.


Dit is test.xml

Code: Selecteer alles

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<root>
   <entry>
      <titel>Lorem</titel>
      <text>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.<br/>Proin auctor. Vivamus est odio, rhoncus vitae, semper eget, aliquam eget, felis.<br/>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<br/><br/>In hac habitasse platea dictumst.</text>
   </entry>
   <entry>
      <titel>Ipsum</titel>
      <text>Proin auctor. Vivamus est odio, rhoncus vitae, semper eget, aliquam eget, felis.<br/>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<br/><br/>In hac habitasse platea dictumst.</text>
   </entry>
</root>


en dit is test.xsl

Code: Selecteer alles

<?xml version="1.0" encoding="ISO-8859-1"?>
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<head><title>Lorem ipsum</title></head>
<body>
<xsl:for-each select="root">
   <xsl:for-each select="entry">
      <br/><br/>
      <b><xsl:value-of select="titel"/></b><br/>
      <xsl:value-of select="text"/>

      <xsl:for-each select="br">
         <br/>
      </xsl:for-each>
   </xsl:for-each>
</xsl:for-each>
<br/>
</body>
</html>


In de <text>-elements in het xml-bestand staan regelmatig <br/>'s, line breaks die ik zou willen behouden bij de weergave via xsl.
Hiervoor heb ik het volgende element ingevoegd:

Code: Selecteer alles

      <xsl:for-each select="br">
         <br/>
      </xsl:for-each>


wat helaas niet werkt... Ik heb ook al geprobeerd de <br/>'s in de xml te vervangen door "& # 1 3 ; & # 1 0 ;" (zonder spaties en aanhalingstekens dus) maar dat leverde nix op...



Wie zou mij verder kunnen helpe?


Thx in advance,

Peace
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

En door die bepaalde string raw door te sturen naar de browser via CDATA??

Je krijgt dan iets als:

Code: Selecteer alles

<text>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.<br/>Proin auctor. Vivamus est odio, rhoncus vitae, semper eget, aliquam eget, felis.<br/>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<![CDATA["<br/><br/>"]]>In hac habitasse platea dictumst.</text>
Gast

Idd, da's een oplossing die ik ook al tegengekomen was, maar dan verwerkt de browser die <br>'s niet :?

Dit resultaat krijg ik dan in browser:
Lorem
Lorem ipsum dolor sit amet, consectetuer adipiscing elit."<br/>"Proin auctor. Vivamus est odio, rhoncus vitae, semper eget, aliquam eget, felis.."<br/>"Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.."<br/><br/>"In hac habitasse platea dictumst.

Ipsum
Proin auctor. Vivamus est odio, rhoncus vitae, semper eget, aliquam eget, felis."<br/>"Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<br/><br/>In hac habitasse platea dictumst.
satori
Plus Member
Plus Member
Berichten: 136
Lid geworden op: 03 mei 2004, 09:15
Locatie: Landen

bovenstaande post is van mij...

browser verwerkt < b r > 's dus niet, maar plaatst ze gwn in de textoutput. :-(


Peace
satori
Plus Member
Plus Member
Berichten: 136
Lid geworden op: 03 mei 2004, 09:15
Locatie: Landen

Nope, had ik ook al eens geprobeerd,

als ik de /n gewoon in de text plaats dan komt het er zo uit:
test/ntext

en als ik het met cdata doe:
text"/n"text


dammit daar moet toch een simpele en snelle oplossing voor zijn :s
stel da ge ne forum maakt me php en xml, en ze zette line breaks in het bericht, hoe zou php da dan naar de xml sture ???

Peace
Gebruikersavatar
PowerSoft
Premium Member
Premium Member
Berichten: 589
Lid geworden op: 30 maa 2004, 20:33
Uitgedeelde bedankjes: 6 keer
Bedankt: 1 keer

kweet niet of het dat is maar normaal moet denk ik je een spatie achter br zetten

Code: Selecteer alles

<br />


zo dus

mssn werkt het dan :)

edit:
en ook achter het aflsuiten van je attributen moet er normaal een spatie staan

Code: Selecteer alles

 <element attribuut="" />
Gebruikersavatar
PowerSoft
Premium Member
Premium Member
Berichten: 589
Lid geworden op: 30 maa 2004, 20:33
Uitgedeelde bedankjes: 6 keer
Bedankt: 1 keer

ben hier nog ne keer terug zie

heb het eens bekeken en het is mij niet echt gelukt om jouw xml te parsen naar html output,

je moet weten dat binnen xml de tag

Code: Selecteer alles

<br />
geen betekenis heeft en eigenlijk gewoon een lege tag is die daar staat

ik heb een andere oplossing gemaakt die mssn even goed is?

enfin ik ken helemaal niet zoveel van xsl en xml dus ik kan wel fout zitten

de xml:

Code: Selecteer alles

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<?xml-stylesheet type="text/xsl" href="test.xsl" ?>
<root>
   <entry>
      <titel>Lorem</titel>
      <text>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</text><text>Proin auctor. Vivamus est odio, rhoncus vitae, semper eget, aliquam eget, felis.</text><text>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</text><text></text><text>In hac habitasse platea dictumst.</text>
   </entry>
   <entry>
      <titel>Ipsum</titel>
      <text>Proin auctor. Vivamus est odio, rhoncus vitae, semper eget, aliquam eget, felis.</text><text>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</text><text></text><text>In hac habitasse platea dictumst.</text>
   </entry>
</root>


en de xsl:

Code: Selecteer alles

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="html"  doctype-public="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" />

<xsl:template match="/">
<html>
<head>
   <title>
      <xsl:for-each select="root/entry">
         <xsl:value-of select="titel" />
      </xsl:for-each>
   </title>
</head>
<body>
   <xsl:for-each select="root/entry">
         <br/><br/>
            <b><xsl:value-of select="titel" /></b>
         <br/>
         <xsl:for-each select="text">
               <xsl:value-of select="." /><br />
         </xsl:for-each>
   </xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
satori
Plus Member
Plus Member
Berichten: 136
Lid geworden op: 03 mei 2004, 09:15
Locatie: Landen

@ Powersoft: inderdaad, XML beschouwd da gewoon als lege tags, maar het zou mij verbazen als we dmv een stylesheet geen lege tags zouden kunne laten interpreteren. Die spatie in lege tags is eigenlijk ook niet nodig. Ze worden inderdaad praktisch overal weergegeven met die spatie, maar dat is zodat de tag niet wordt verwerkt als een normale line-break. Bij XML wordt er trouwens niet eens rekening gehouden met (overbodige) whitespaces in tags.

De oplossing met meerdere text-elementen heb ik een tijdje terug ook overwogen, maar dit zou mij toch wel een iets te grote hoeveelheid werk opleveren.

Allessinds HEEL fel bedankt voor de moeite allemaal, maar ondertusse heb ik de (ZEER simpele, eigenlijk ben ik het ni waard om mijne pc nog aan te raken lol) oplossing gevonden.

In de XSL moest ik gewoon de

Code: Selecteer alles

<xsl:value-of select="text"/>
in ne

Code: Selecteer alles

<pre>
zetten, en dan alle

Code: Selecteer alles

<br/>'s
in de XML vervangen door "echte" line breaks :D

Opnieuw heel fel bedankt voor de moeite allemaal, ik ga nu (beschaamd da ik daar zolang op heb zitte zoeke en smoddere) afdruipe.... ;)

Peace
Plaats reactie

Terug naar “Development”