database
JSON
XSLT
HTML
Børre Stenseth
Eksempler >uefa1

UEFA1

Hva

Løsningen er basert på en database og data konverteres til JSON på serveren.

uefa-1
Du kan teste løsningen her https://borres.hiof.no/wep/htm/eksempler/uefa/index.html

Databasen

Databasen (MySQL) er bygget opp med to tabeller som (re)settes slik:

_Ligaer
DROP TABLE IF EXISTS `ligas`;
CREATE  TABLE `ligas` (
`ligaid` CHAR(10) NOT NULL,
`name` VARCHAR(45) NOT NULL,
`nationid` CHAR(2) NOT NULL,
`level` SMALLINT NOT NULL,
PRIMARY KEY (`ligaid`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

_Klubber
DROP TABLE IF EXISTS `clubs`;
CREATE  TABLE `clubs` (
`id` CHAR(20) NOT NULL,
`name` VARCHAR(45) NOT NULL,
`level` SMALLINT NOT NULL,
`aliases` MEDIUMTEXT DEFAULT NULL,
`homepage` VARCHAR(95) DEFAULT NULL,
`wiki` VARCHAR(95) DEFAULT NULL,
`logo` VARCHAR(95) DEFAULT NULL,
`arenaname` VARCHAR(45) NOT NULL,
`arenawiki` VARCHAR(95) DEFAULT NULL,
`capasity` INT DEFAULT NULL,
`lng` VARCHAR(30) DEFAULT NULL,
`lat` VARCHAR(30) DEFAULT NULL,
`data` MEDIUMTEXT DEFAULT NULL,
`comments` MEDIUMTEXT DEFAULT NULL,
`nationid` CHAR(2) NOT NULL,
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

Liga tabellen er ikke i bruk i dette eksempelet. Vi kunne brukt den til å bygge menyen på eksempelsiden. Vi bruker følgende SQL-setning for å hente data og produsere JSON:

select name,logo,arenaname from clubs 
  where level='"+level+"' and nationid='"+nation+"' 
  order by name;"

der nation er det landet vi er interesserte i (f.eks. NO for Norge), og level er det nivået vi skal ha (f.eks 1 for tippeligaen).

Starten på JSON fila:

{"list":[
  {"name":"Bayern München",
  "logo":"https://borres.hiof.no/resources/fotballogos/DE0001.png",
  "arenaname":"Allianz Arena"},
...
]}

Python

Den involverte Python-koden som leverer JSON er slik:

_select2Json.py

som benytter biblioteket:

_dbutils.py

Merk at Python-scriptet bruker lxml [1] .

XSLT

Transformasjone som lager Json fra XML er slik:

_Fra XML til Json

Javascript

Javascriptet er slik:

_index.js
Referanser
  1. lxml - XML and HTML with Python lxml.de/ 03-03-2014
Eksempler >uefa1