Transformasjon fra XML til JSON
Vi lage en transformasjon som lage et flatt format etter mønster av eksempelet reorganisering i modulen XML2XML
Transformasjonen er slik:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" doctype-system="olympreorg.dtd" encoding="UTF-8"/> <xsl:template match="/"> {"events":[ <xsl:apply-templates select="/IOC/OlympicGame/event"/> ]} </xsl:template> <xsl:template match="event"> { "distanse":"<xsl:value-of select="@dist"/>", "place":"<xsl:value-of select="ancestor::OlympicGame/@place"/>", "year":"<xsl:value-of select="ancestor::OlympicGame/@year"/>", "athlets":[ <xsl:apply-templates select="athlet"> <xsl:sort select="result" data-type="number" order="ascending"/> </xsl:apply-templates> ]}, </xsl:template> <xsl:template match="athlet"> {"name":"<xsl:apply-templates select="name"/>", "nation":"<xsl:apply-templates select="nation"/>", "result":"<xsl:apply-templates select="result"/>"}, </xsl:template> </xsl:stylesheet>
Resultatet er en textfil som ser slik ut:
Javascriptet som leser og parser denne fila ser slik ut:
Resultatet blir slik:
Dette er en svært enkel løsning uten noe forsøk på å sette stiler eller pen layout. HTML-fila som drar det hele er slik:
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"/> <title>Olympiade</title> <script src="jquery.js"> </script> <script src="olymp.js" > </script> </head> <body onload="initPage()"> <h1>Olympiader</h1> <div id="resultholder"></div> </body> </html>