xml tonen op site

Status
Niet open voor verdere reacties.

zero55

Gebruiker
Lid geworden
17 mrt 2005
Berichten
70
Beste allemaal,

Ik help een beetje mee aan het onderhouden (vrijwillig) van de site van de plaatselijke volleybalclub, nu biedt de limburgse volleybalbond op hun site de uitslagen van de wedstrijden aan in XML (wekelijks geupdate). Hoe kunnen wij deze xml "leesbaar" maken voor onze site-bezoekers ? Dat zou ons een pak werk uitsparen, want nu verwerken wij de uitslagen en rangschikkingen voor alle ploegen (9) na elk weekend nog manueel !

Hier is een voorbeeld van de xml file aangeboden door de limburgse volleybalbond :
http://www.volleylimburg.be/Competitie/XML/uitslagen_xml.php?reeks=1H

Hopelijk kunnen jullie ons helpen.

Groeten
 
We hebben het inmiddels klaargekregen om de data te tonen in een webpagina dmv volgende code :

<html>

<body>
<xml
src="http://www.volleylimburg.be/Competitie/XML/wedstrijden_xml.php?reeks=1D"
id="xmldso"
async="false">
</xml>

<table datasrc="#xmldso" width="100%" border="1">

<thead>
<th>Datum</th>
<th>aanvangsuur</th>
<th>thuisploeg</th>
<th>bezoekersploeg</th>
</thead>

<tr align="left">
<td><span datafld="datum"></span></td>
<td><span datafld="aanvangsuur"></span></td>
<td><span datafld="thuisploeg"></span></td>
<td><span datafld="bezoekersploeg"></span></td>
</tr>
</table>

</body>
</html>

Weet er misschien iemand hoe we enkel de rijen kunnen laten zien die "uvoc uikhoven" bevatten ?
 
Die linked datasource (je huidige manier van weergeven) werkt blijkbaar enkel in Internet Explorer.
Hebben jullie op je eigen site beschikking over PHP? Dan kan ik wel zeker iets in elkaar steken. Ik zal ook even opzoeken of er een zuiver XML/XSLT-manier is.

Om te testen of je PHP hebt, maak je een volgend bestand aan, dat je opslaat als info.php
PHP:
<?php
phpinfo();
?>
Zet dat bestand op je server en als het goed is krijg je een hele lijst met instellingen en variabelen te zien. Als je server geen PHP ondersteund krijg je of een vraag om het bestand op te slaan, of de 3 regels code als gewone tekst te zien.

--Johan
 
oei, dat is ook niet de bedoeling, dat het enkel in IE te zien is.
helaas geen php ter beschikking.
 
Wat jij wil kan met XIncludes en schema's opgelost worden, helaas is hier nog geen ondersteuning voor in de huidige browsers...

2 andere mogelijkheden waar ik momenteel aan denk:
* Javascript: ik weet dat je met javascript zeker HTMLdocumenten kan parsen en wijzigen, hoe zal me echter wat puzzelwerk kosten. Ik ben niet zeker dat je een pagina van een andere server op die manier kan parsen... Misschien weten de mensen op het JavaScriptforum hier meer over ?
* Flash: ik kan xml met flash parsen, en als ik me niet vergis kan flash html schrijven. Enkel weet ik ook hier niet of het mogelijk is om een file van een andere server zomaar in te lezen...

--Johan
 
Ik heb iets met een javascript gevonden denk ik.
Je moet een xml-file hebben (in ons geval van de volleybalbond) en een xsl-file voor de opmaak :

<?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>
<body>
<h2>Kalender</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th align="left">Datum</th>
<th align="left">Uur</th>
<th align="left">Thuisploeg</th>
<th align="left">Bezoekers</th>
</tr>
<xsl:for-each select="kalender/wedstrijd[thuisploeg='Uvoc Uikhoven' or bezoekersploeg='Uvoc Uikhoven']">

<tr>
<td><xsl:value-of select="datum" /></td>
<td><xsl:value-of select="aanvangsuur" /></td>
<td><xsl:value-of select="thuisploeg" /></td>
<td><xsl:value-of select="bezoekersploeg" /></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template></xsl:stylesheet>

Deze 2 worden dan in het javascript gelinkt (test.html) :

<html>
<body>
<script language="JavaScript" type="text/javascript">

// Load XML
var xml = new ActiveXObject("Microsoft.XMLDOM")
xml.async = false
xml.load("http://www.volleylimburg.be/Competitie/XML/wedstrijden_xml.php?reeks=1H")

// Load XSL
var xsl = new ActiveXObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load("http://users.telenet.be/rdms/uvoc/paginas/ploegen/Heren/kalender.xsl")

// Transform
document.write(xml.transformNode(xsl))

</script>
</body>

</html>



We hebben alle files eens op de webspace gezet :
http://users.telenet.be/rdms/uvoc/paginas/ploegen/Heren/test.html
en nu krijgen we een foutmelding in regel 8 (laden van de xml), terwijl het in preview mode in Dreamweaver wel werkt.

Heb je enig idee hoe dit komt ?
 
Die foutmelding slaat op het loadCommando dat je geeft.
Zoals ik vreesde kan javascript geen file inlezen die op een andere server staat...
Trouwens... ActiveX is ook IE-only :p

Mijn ideeen beginnen zowat uitgeput te raken, maar mocht ik nog op een oplossing stoten, komt ze hier zeker terecht ;)

--Johan
 
Dus als we xml-file(s) van de volleybalbond na ieder weekend naar onze server uploaden, dan zou het wel kunnen werken ?
 
Ik vermoed van wel ja, maar dan heb ik denk ik een betere oplossing voor je.

Als je die xml dan toch naar je eigen server upload kan je gewoon het stylesheet (de .xsd) rechtstreeks daaraan linken. Dan krijg je de juiste weergave in elke browser.

Het linken doe je door deze regels vaan de xml toe te voegen
Code:
<?xml-stylesheet type="application/xml" href="kalender.xsl" ?>
<!-- voor IE //-->
<?xml-stylesheet type="text/xsl" href="kalender.xsl" ?>

Kalender.xsl is hier het bestand met de code zoals jij ze hier gepost had. Voor bvb reeks1H gaat het begin van de xml er dan zo uitzien:
PHP:
<?xml version="1.0" encoding="ISO-8859-1"?>

<?xml-stylesheet type="application/xml" href="kalender.xsl" ?>
<!-- voor IE //-->
<?xml-stylesheet type="text/xsl" href="kalender.xsl" ?>

<kalender>
	<wedstrijd>
		<nr>3070</nr>
		<datum>2007-09-08</datum>
		<aanvangsuur>20:00</aanvangsuur>
		<reeks>1H</reeks>
		<thuisploeg>Scana Noliko Maaseik</thuisploeg>
		<bezoekersploeg>KVC Racing Genk B</bezoekersploeg>
		<sporthal>Sporthal KA, Maaseik</sporthal>
	</wedstrijd>
...

Voor je bezoekers maak je dan een links die rechtstreeks naar je eigen xml-bestand verwijst.

--Johan
 
Het werkt momenteel, maar is toch nog een beetje omslachting (xml van alle ploegen downloaden en daarna allemaal aanpassen -de eerste regels toch-)

Als ik nu ergens een webspace zou vinden die PHP ondersteunt, en enkel de nodige php-pagina's op die webruimte zet om die xml toestanden te laten werken ?
Is dat een oplossing en hoe moet ik dat aanpakken dan ?
 
Laatst bewerkt:
Als je PHP tot je beschikking hebt, kan je ook het volgende gebruiken:

PHP:
// Laad je XML in
$xml = new DOMDocument();
$xml->load('/path/to/xmlfile.xml');

// Laad je XSLT in
$xsl = new DOMDocument();
$xsl->load('/path/to/xslfile.xsl');

// Maak een XSLTProcessor aan en importeer je XSLT
$proc = new XSLTProcessor();
$proc->importStyleSheet($xsl);

// Gebruik je XSLT om je XML te parsen, en print de output
echo $proc->transformToXML($xml);

Bijbehorende PHP documentatie:
http://www.php.net/manual/nl/ref.xsl.php
http://www.php.net/manual/nl/ref.dom.php

Ik weet niet meer of je hier nog aparte modules voor nodig hebt.

Edit:
Dit zorgt ervoor dat je gewoon HTML naar de browser stuurt ipv XML+XSLT, dus als je XSL-file goed is, werkt dit met iedere browser.

Edit 2: Oeps, je vorige post niet gezien. Je hebt hier inderdaad wel PHP voor nodig, en ondersteuning van PHP voor DOMDocument en XSLTProcessor
 
Laatst bewerkt:
ik stamp dit onderwerp even terug naar boven want er zijn vorderingen :

we hebben nu zelf een osx webserver draaien waar MAMP en Joomla opstaat, kunnen we er nu voor zorgen dat de rangschikkingen automatisch geupdate worden op onze site ?
 
We zijn hier nog steeds geen stap verder in...en het constant moeten updaten begint serieus vervelend te worden. Er moet toch rechtstreeks iets met die XML of RSS te doen zijn wat de volleybalbond aanbied ?!? Waarom zouden ze hem anders aanbieden ??
Echt niemand een ideetje ?
 
Saxon

Als je elke browser op elk platform (Unix, Windows, etc) wil ondersteunen en geen PHP of ASP op de server hebt, zou je op de eigen pc de html pagina moeten genereren.
Je hebt nodig:
1 - je xml data
2 - een stylesheet voor de vormgeving van de table
3 - saxon gebruiken in een .bat bestand
4 - de html output op je website publiceren.

http://saxon.sourceforge.net
 
We zijn hier nog steeds geen stap verder in...en het constant moeten updaten begint serieus vervelend te worden. Er moet toch rechtstreeks iets met die XML of RSS te doen zijn wat de volleybalbond aanbied ?!? Waarom zouden ze hem anders aanbieden ??
Echt niemand een ideetje ?

Er is inderdaad rechtstreeks te doen met de XML en RSS die de website aanbiedt, er zijn verschilllende programma's en plugins die deze feed kunnen gebruiken.
Maar het rechtstreeks verwerken in een webpagina gaat simpelweg niet zonder een of andere vorm van server side scripting. Met 2 regeltjes PHP op de eigen server zou je het al mogelijk maken om dit bestand te verwerken met javascript.
Javascript zelf kan de data niet binnenhalen van een andere server (vanwege veiligheidsredenen) en daarom zou je een soort doorgeefluikje in de vorm van PHP moeten maken.
Theoretisch kan het ook andersom wanneer de volleybalbond een javascriptje op de server had staan waarmee je de data kon binnenhalen en jij dat javascriptje in je site zou importeren.
Wanneer je zoveel tijd steekt in het aanpassen begrijp ik eerlijk gezegd niet waarom je niet overstapt naar een provider waar je wel server side scripts uit kan voeren. Met PHP kan je heel eenvoudig de XML binnenhalen en omzetten naar HTML.
Ik vind het überhaupt apart dat je in deze tijd nog een provider hebt waar geen PHP mogelijk is.

Je zal in dit geval dus altijd gebruik moeten maken van een server die de informatie voor je verwerkt.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan