xml naar html (opgelost, dank)
11 november 2007 - 09:59   
geplaatst door: Timmy
hallo allemaal,

Ik ben opzoek naar een manier om de gegevens en de afbeeldingen uit xml documenten
zichtbaar te maken in html.

Een voorbeeld xml ziet er als volgd uit:

<?xml version="1.0" encoding="UTF-8"?>
<profilephotos>
<photo>
<file>
<![CDATA[http://server.com/images/image01.jpg]]>
</file>
<caption/
><link>
<![CDATA[http://server.com/image01]]>
</link>
</photo>
</profilephotos>

Nu kunnen sommige xml's meerdere afbeeldingen bevatten.


Iemand een idee hoe ik dit kan koppelen aan html?
Aangezien ik meerdere xml's heb wil ik in de xml
geen aanpassingen maken.


alvast super bedankt

(Bewerkt door Timmy om 23:07, 13-11-2007)

xml naar html (opgelost, dank)
11 november 2007 - 10:35    reactie #1
geplaatst door: denn88
Het magische antwoord is XSLT (eXtentable Stylesheet Language Transformations). Op deze pagina van het W3C wordt een mooi voorbeeld gegeven. XSLT is een stylesheet (nee, verwar het zeker niet met css) waarin diverse conversie regels staan om XML nodes om te zetten in bv HTML.

Ik ben ook op zoek naar hoe je het toe kan passen op Mac OSX met name in PHP. De website van Marc Lynage (Entropy.ch) heeft een mooi Mac OS X programma'tje TestXSLT waarmee je met XSLT kunt spelen. Je neemt een XML file past er een XSLT stylesheet aan toe en er komt HTML uit. Echt heel gaaf en hij heeft er sample files (xml en HTML) bij gedaan.

Met XSLT kun je zelfs van een XML file een PDF maken!! :thumbs-up:

Als je er achter ben hoe het werkt met PHP enzo zou ik graag een voorbeeldje willen mee pikken.  :happy:

Mac OS X zelf gebruikt ontiegelijk veel XML files voor bv configuratie settings, iPhoto en iTunes gebruiken allemaal XML als flat file databases.

(Bewerkt door denn88 om 10:38, 11-11-2007)

(Bewerkt door denn88 om 10:39, 11-11-2007)

Atlantisdesign.nl - webDesign en de Mac. Bezig met webdesign / webdevelopment? Je eigen Mac als lokale webserver?
iPhone 4, 16 GB (black) | MacBook Pro 15", 2.44Ghz Intel Core 2 Duo,  4GB Ram | Airport Extreme | MacMini Intel Core 2 Duo, 4GB Ram | PowerMac G4 MMD Dual 1Ghz.
xml naar html (opgelost, dank)
11 november 2007 - 11:21    reactie #2
geplaatst door: Timmy
Ok dat programma ziet er top uit!

maar nu moet ik nog


<![CDATA[http://server.com/images/image01.jpg]]>

of

<file>
<![CDATA[http://server.com/images/image01.jpg]]>
</file>

omzetten naar een "img src"

Klopt dat en hoe doe ik dat?

xml naar html (opgelost, dank)
11 november 2007 - 13:02    reactie #3
geplaatst door: denn88
Helaas heb ik ook geen verstand van XSLT. Ik zou het ook graag willen leren. Op mijn werk gebruiken ze het veel om XML data van reis organisatie systemen om te zetten naar HTML (websites). Heel erg tof. Als ik wist hoe het werkte zou ik er zo ook wel wat toepassingen in zien in m'n eigen webdesign praktijken.

Misschien anders op dit forum? :cool:

Atlantisdesign.nl - webDesign en de Mac. Bezig met webdesign / webdevelopment? Je eigen Mac als lokale webserver?
iPhone 4, 16 GB (black) | MacBook Pro 15", 2.44Ghz Intel Core 2 Duo,  4GB Ram | Airport Extreme | MacMini Intel Core 2 Duo, 4GB Ram | PowerMac G4 MMD Dual 1Ghz.
xml naar html (opgelost, dank)
12 november 2007 - 20:58    reactie #4
geplaatst door: Geetje
Ik heb wel een ideetje (bij mij werkt het in elk geval).
Ik kan dat helaas alleen laten zien als ik weet hoe ik xml of html code kan weergeven.
Dat is mij namelijk tot nu toe nog niet gelukt: de openingstag valt telkens weg.
xml naar html (opgelost, dank)
12 november 2007 - 21:23    reactie #5
geplaatst door: Spinsels
XSLt is zeker niet de enige en de meest eenvoudige methode. Alle scripttalen op een webserver (php, asp, asp.net, cfm, jsp ...) kunnen xml bronnen gebruiken en naar andere platte tekst zoals html omzetten. Het kan ook met javascript in de browser (Ajax). Voor Ajax toepassingen zijn er veel voorbeelden te vinden (spry bij adobe labs of via framework sites zoals mootools.net)
Voor serverside scripting zijn er ook talloze voorbeelden bij de betreffende sites te vinden. Wil je het zelf eens proberen met Dreamweaver (8 of 9) dan kun je in een site een nieuwe XSLt pagina aanmaken. DW vraagt dan om een xml bron. Vervolgens kun je de velden uit de xml bron in je pagina opmaak plaatsen en vormgeven. Ook de src van een image kun je koppelen aan xml gegevens. Mogelijkheden te over dus. Heb je een voorkeur? Dan kan ik je vast wel een voorbeeldje laten zien...

Je xml voorbeeld is overigens geen valide xml...

(Bewerkt door Spinsels om 21:27, 12-11-2007)

-> e-learning en consultancy <-
xml naar html (opgelost, dank)
12 november 2007 - 21:28    reactie #6
geplaatst door: Timmy
Ok, boven aan staat een bijna (op url na) stuk uit de xml.
In de xml staan soms dertig records (of afbeeldingen dus ^^).

Deze gegevens wil ik dus linken aan html. Veel kennis heb ik niet
en weet alleen dat ik het wil zien. Stijlen ed. vind ik in eerste instantie
nog niet zo belangrijk (wel tof).

Of moet ik iest anders aangeven? ^^'
(DW aanwezig)

xml naar html (opgelost, dank)
12 november 2007 - 21:44    reactie #7
geplaatst door: Peter Villevoye
Nadeel is alleen dat alle processing/rendering via XML dient te gebeuren,
wat niet altijd de snelste route is. Rauwe verwerking door database-scripts,
die (snel en net zo correct) inhoud aan vorm koppelen is dan vaak sneller.
Maar het is mooi dat je zo ver en zo 'schoon' met XML kan werken.
Studea — Advies - Training - Begeleiding in DTP, web- en app-design.  En... een PixelFreak !
xml naar html (opgelost, dank)
12 november 2007 - 21:47    reactie #8
geplaatst door: Timmy
Ok, zijn hier voorbeelden van?

Wat zou een letterlijke code kunnen zijn
die bij mijn toepassing werkt? :hypocrite:

:inlove:

(Bewerkt door Timmy om 22:01, 12-11-2007)

xml naar html (opgelost, dank)
12 november 2007 - 22:12    reactie #9
geplaatst door: Geetje
Ok, ik zal het proberen.
De CDATA manier zal niet werken, heb ik ergens gelezen (sorry dat ik de link kwijt ben)
Ik doe het zo:
Mijn xml-bestand (test.xml):

&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;?xml-stylesheet type="text/xsl" href="test.xsl"?&gt;
&lt;plaatjes&gt;
&lt;plaatje uri="plaatje.jpg" breedte="150" /&gt;
&lt;/plaatjes&gt;

Mijn xsl-bestand (test.xsl):

&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;
&lt;xsl:output method="html" /&gt;
&lt;xsl:template match="/plaatje"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;xsl:for-each select="plaatje"&gt;
&lt;xsl:element name="img"&gt;
&lt;xsl:attribute name="src"&gt;&lt;xsl:value-of select="@uri" /&gt;&lt;/xsl:attribute&gt;
&lt;xsl:attribute name="width"&gt;&lt;xsl:value-of select="@breedte" /&gt;&lt;/xsl:attribute&gt;
&lt;/xsl:element&gt;
&lt;/xsl:for-each&gt;
&lt;/body&gt;
&lt;/html&gt;

Ik weet 't, ik weet 't, het ziet er erg vreemd uit, maar als ik een "<" typ, dan verdwijnt de hele tag.
Verander de &lt; door <
en de &gt; door >

Er is trouwens nog een manier, door geen attributen bij de elementen te gebruiken in je xml bestand, maar child-elementen. In je xsl-bestand krijg je dan geen "@": select="uri" ipv select="@uri".

Werkt bij mij wel...

xml naar html (opgelost, dank)
12 november 2007 - 22:27    reactie #10
geplaatst door: Timmy
mkay dit is wat ik krijg:

"SAXParseException: The input ended before all started tags were ended. Last tag started was 'xsl:template' (test.xsl, line 17, column 9)"

xml naar html (opgelost, dank)
12 november 2007 - 22:30    reactie #11
geplaatst door: Timmy
Ah dat is gefixt

</xsl:template>
</xsl:stylesheet>

om te sluiten ^^
Maar nu heb ik een witte pagina... zonder afbeelding

(Bewerkt door Timmy om 22:32, 12-11-2007)

xml naar html (opgelost, dank)
12 november 2007 - 22:37    reactie #12
geplaatst door: Geetje
Heb je een plaatje met de naam "plaatje.jpg" in dezelfde map staan?

En hoe heb je de xml-code in je code blok gekregen? Bij mij lukt dat dus echt niet  :sad:

xml naar html (opgelost, dank)
13 november 2007 - 12:43    reactie #13
geplaatst door: AndreRelink
Al eerder in de berichten is aangegeven dat de code

< file>< ![CDATA[http://server.com/images/image01.jpg]]></file>
niet voldoet aan een gebruikelijk XML schema.
Als de aangeleverde XML niet meer kan worden gewijzigd, dan is de volgende code een optie.

< a>< xsl:attribute name="href">
< xsl:value-of select="profilephotos/photo/link" disable-output-escaping="yes"/></xsl:attribute>
< xsl:element name="img">
< xsl:attribute name="src">< xsl:value-of select="profilephotos/photo/file" disable-output-escaping="yes"/></xsl:attribute>
< /xsl:element></a>

Haal wel even alle returns uit de XML code.

< file>< ![CDATA[http://server.com/images/image01.jpg]]>< /file>
ipv
< file>
< ![CDATA[http://server.com/images/image01.jpg]]>
< /file>

In de code staan spatie's achter < haal deze spatie weg.

Succes.

xml naar html (opgelost, dank)
13 november 2007 - 13:48    reactie #14
geplaatst door: denn88
Hmm dit wordt interessant... maar testen jullie dit nog steeds met dat TestXSLT programmat'je, waar ik het over had. Of wordt dit bv al in PHP geparsed?
Atlantisdesign.nl - webDesign en de Mac. Bezig met webdesign / webdevelopment? Je eigen Mac als lokale webserver?
iPhone 4, 16 GB (black) | MacBook Pro 15", 2.44Ghz Intel Core 2 Duo,  4GB Ram | Airport Extreme | MacMini Intel Core 2 Duo, 4GB Ram | PowerMac G4 MMD Dual 1Ghz.
xml naar html (opgelost, dank)
13 november 2007 - 17:53    reactie #15
geplaatst door: Timmy
Whoa! vet! bedankt AndreRelink, ik heb al 1 afbeelding
uit de xml zichtbaar.

Maar hoe krijg ik nu alle records te zien? (dus alle
afbeeldingen?)

denn88, nej ik gebruik nu weer dreamweaver.
Hier werk ik altijd al in en is voor mij een handeling minder.
(het is een tester en geen bouw ding ^^ )

xml naar html (opgelost, dank)
13 november 2007 - 18:24    reactie #16
geplaatst door: AndreRelink
In DW zit de optie Herhalingsgebied.
Voeg een herhalingsgebied toe aan de code.

Succes

xml naar html (opgelost, dank)
13 november 2007 - 20:50    reactie #17
geplaatst door: Timmy
Ok werk nu met spry's

Dit is wat ik nu heb:


<!-- DWXMLSource="photosXML.ashx.xml" --><!DOCTYPE xsl:stylesheet  [
<!ENTITY nbsp   "&#160;">
<!ENTITY copy   "&#169;">
<!ENTITY reg    "&#174;">
<!ENTITY trade  "&#8482;">
<!ENTITY mdash  "&#8212;">
<!ENTITY ldquo  "&#8220;">
<!ENTITY rdquo  "&#8221;">
<!ENTITY pound  "&#163;">
<!ENTITY yen    "&#165;">
<!ENTITY euro   "&#8364;">
]><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:output method="html"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:spry="http://ns.adobe.com/spry/">
<script src="SpryAssets/xpath.js" type="text/javascript"></script>
<script src="SpryAssets/SpryData.js" type="text/javascript"></script>
<script type="text/javascript">
<xsl:text disable-output-escaping="yes">
<![CDATA[
var ds1 = new Spry.Data.XMLDataSet("photosXML.ashx.xml", "profilephotos/photo/file",{sortOnLoad:"file",sortOrderOnLoad:"ascending"});
ds1.setColumnType("file", "image");
]]>
</xsl:text>
</script>
<body>


<div spry:region="ds1">
 <table>
   <tr>
     <th>File</th>
   </tr>
   <tr spry:repeat="ds1">
     <td><img src="{file}"/></td>
   </tr>
 </table>
</div>

</body>
</html>
</xsl:template>
</xsl:stylesheet>

Nu heb ik allemaal x'jes waar hij geen afbeelding toont.
Repeat werkt wel.

(Bewerkt door Timmy om 20:50, 13-11-2007)

(Bewerkt door Timmy om 20:52, 13-11-2007)

xml naar html (opgelost, dank)
13 november 2007 - 20:56    reactie #18
geplaatst door: Geetje
Timmy,

hoe krijg je de code in je code-blok?

xml naar html (opgelost, dank)
13 november 2007 - 21:12    reactie #19
geplaatst door: Timmy
geetje, Ik volg je niet helemaal,
welke code in welke codeblok?

Mijn eerste interpertatie is copy-paste
in Dreamweaver. Maar dat is vast niet wat
jij bedoeld.

Ik heb trouwens:

< img src="{file}"/>
Vervangen door:
 <xsl:element name="img">
 <xsl:attribute name="src"><xsl:value-of select="profilephotos/photo/file" disable-output-escaping="yes"/></xsl:attribute>
 </xsl:element>

Zoals mij dat eerder werd aangegeven, nu heb ik wel
het juiste aantal afbeeldingen. Maar alleen wel de zelfde (eerste uit record)

(Bewerkt door Timmy om 21:12, 13-11-2007)

xml naar html (opgelost, dank)
13 november 2007 - 21:18    reactie #20
geplaatst door: AndreRelink
Probeer deze code eens...


<xsl:for-each select="profilephotos/photo">
<a><xsl:attribute name="href">
<xsl:value-of select="link" disable-output-escaping="yes"/></xsl:attribute>
<xsl:element name="img">
<xsl:attribute name="src"><xsl:value-of select="file" disable-output-escaping="yes"/></xsl:attribute>
</xsl:element></a>
</xsl:for-each>

<?xml version="1.0" encoding="UTF-8"?>
<profilephotos>
<photo>
<file><![CDATA[http://server.com/images/image01.jpg]]></file>
<caption/>
<link><![CDATA[http://server.com/image01]]></link>
</photo>
<photo>
<file><![CDATA[http://server.com/images/image02.jpg]]></file>
<caption/>
<link><![CDATA[http://server.com/image01]]></link>  
</photo>
</profilephotos>

xml naar html (opgelost, dank)
13 november 2007 - 21:19    reactie #21
geplaatst door: Geetje
Timmy, ik bedoel bijvoorbeeld de xml code in je laatste berichtje tussen 'Vervangen door:' en 'Zoals mij dat eerder...'
Bij mij vallen de tags weg.
Als ik jouw code gebruik (via copy-paste) krijg ik:


<xsl:element name="img">
<xsl:attribute name="src"><xsl:value-of select="profilephotos/photo/file" disable-output-escaping="yes"/></xsl:attribute>
</xsl:element>

Alleen de sluit-tags blijven staan.

xml naar html (opgelost, dank)
13 november 2007 - 21:21    reactie #22
geplaatst door: Geetje
He vreemd!

Het eerder genoemde effect van de wegvallende tags komt alleen voor bij Voorvertoning.
Niets aan de hand dus.

Sorry!
:thumbs-up:

xml naar html (opgelost, dank)
13 november 2007 - 23:06    reactie #23
geplaatst door: Timmy
Ow ja!
AndreRelink je bent de bomb!
It works like a charm!

Zo, opgelost. Iedereen bedankt!

Nog eens de opossing:

XML:


<?xml version="1.0" encoding="UTF-8"?>
<profilephotos>
<photo>
<file><![CDATA[http://server.com/images/image01.jpg]]></file>
<caption/>
<link><![CDATA[http://server.com/image01]]></link>
</photo>
<photo>
<file><![CDATA[http://server.com/images/image02.jpg]]></file>
<caption/>
<link><![CDATA[http://server.com/image01]]></link>  
</photo>
</profilephotos>

xsl:

<!-- DWXMLSource=&quot;photosXML.ashx.xml&quot; --><!DOCTYPE xsl:stylesheet  [
<!ENTITY nbsp   "&#160;">
<!ENTITY copy   "&#169;">
<!ENTITY reg    "&#174;">
<!ENTITY trade  "&#8482;">
<!ENTITY mdash  "&#8212;">
<!ENTITY ldquo  "&#8220;">
<!ENTITY rdquo  "&#8221;">
<!ENTITY pound  "&#163;">
<!ENTITY yen    "&#165;">
<!ENTITY euro   "&#8364;">
]><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:output method="html"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:spry="http://ns.adobe.com/spry/">
<script src="SpryAssets/xpath.js" type="text/javascript"></script>
<script src="SpryAssets/SpryData.js" type="text/javascript"></script>
<script type="text/javascript">
<xsl:text disable-output-escaping="yes">
<![CDATA[
var ds1 = new Spry.Data.XMLDataSet("photosXML.ashx.xml", "profilephotos/photo/file",{sortOnLoad:"file",sortOrderOnLoad:"ascending"});
]]>
</xsl:text>
</script>

<body>

<xsl:for-each select="profilephotos/photo">
<a><xsl:attribute name="href">
<xsl:value-of select="link" disable-output-escaping="yes"/></xsl:attribute>
<xsl:element name="img">
<xsl:attribute name="src"><xsl:value-of select="file" disable-output-escaping="yes"/></xsl:attribute>
</xsl:element></a>
</xsl:for-each>

</body>
</html>
</xsl:template>
</xsl:stylesheet>

xml naar html (opgelost, dank)
1 april 2008 - 22:03    reactie #24
geplaatst door: Mechanical
Misschien wat off-topic, gezien jullie echt de code induiken. Maar ik ben thans m'n site naar xhtml + css aan het omzetten. En ik lees vaak dat xhtml de overgangsfase aangeeft tussen html en xml. Xml is dus de toekomst. En nu ook Explorer 8 zich netjes aan w3c-normen houdt, mag ik nu verwachten de toekomstige Dreamweaver er meer bv Indesign werkt? Zal het kunnen coden overbodig worden?

Met belangstelling zie ik uit naar jullie antwoord.

Groet, Marco (die af en toe ook wel eens hoofdpijn heeft, waarom de website-voorvertoning in de browser maar niet op het ontwerp wil gaan lijken... $#@&^*@# )


P.S. Overigens ik gebruik geen Dreamwever, maar Aptana om xhtml + css te coden. Freeware, en helemaal fantastisch; het heeft een foutmeldings-tool. Als ik iets niet-w3c valid intik, wordt ik daar meteen op gewezen. Ideaal! :wink:

M'n fotografie: Marc Boom.com Any colour as long as it's black or white.