Het punt is dat dit niet fraai op een generieke manier is op te lossen...
Het relationele datamodel is in feite veel beperkter dan XML en het is dan ook onzin om relationele data direct naar XML om te zetten:
code:
1
2
3
4
5
6
7
8
9
10
| <result>
<row>
<id>0</id>
<name>Boeh</name>
</row>
<row>
<id>1</id>
<name>Blah</name>
</row>
</result> |
Dat is dus
niet de manier... Dit kan je echter wel generiek implementeren met een beetje reflectie over je resultaten (logisch).
Je wilt echter meestal een gebruiksvriendelijkere/betere respresentatie die meer als XML 'aanvoelt'.
De meeste 'echte' database systemen hebben daarvoor tegenwoordig een soort specificatie taaltje die beschrijft hoe de relationele data gemapt moet worden naar XML data. Vooral het systeem van DB2 schijnt behoorlijk goed te zijn.
Voor MySQL is dit er niet en zal je dus zelf iets moeten doen. Er zijn twee mogelijkheden:
1. Maak het niet generiek en implementeer het dus voor alle gevallen. Dit komt dus op een handmatige conversie neer van de query resultaten naar XML vorm.
2. Doe het in 2 stappen: gebruik de bovenstaande manier om de resultaten naar 'lelijke' XML om te zetten. Gebruik daarna XSLT om deze XML file te transformeren naar een aantrekkelijkere vorm.
Uiteraard is er nog een derde methode: ontwerp zo'n taaltje die de omzetting van relationele data naar XML data beschrijft, maar ik neem maar ff aan dat dat ver buiten de bedoelingen en mogelijkheden valt...
Oplossing 1 is vrij veel en vervelend programmeerwerk. Het resultaat is wel erg snel. Oplossing 2 is wellicht wat trager, maar is minder programmeerwerk om de omzetting op een meer 'declaratieve' wijze gebeurt. Ook is het leuker werk.