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>