Dokumentace formátů dat
Adresa pro stahování: https://stream.exchange.cz/<ID odběru> (ID dostanete e-mailem po schválení a najdete ho v profilu).
Data lze stahovat nejvýše třikrát za minutu, a to jen z IP adres uvedených v profilu.
JSON · XML · XSL šablona · HTML šablona · Dynamický banner
Popis formátu JSON
Kurzovní lístek ve formátu JSON obsahuje objekt popisující použité měny, seznam subjektů a kurzy směnárny.
Základní objekt obsahuje čtyři prvky: currencies, subjects, buy, sell a cnb.
currencies
Prvek obsahuje pole objektů, které specifikují jednotlivé měny pomocí prvků curr (kód měny), mul (násobek), name (název měny) a tend (1/0/-1 jako tendence vývoje kurzu dle ČNB). Pořadí odpovídá řazení měn na kurzovním lístku směnárny EXCHANGE s.r.o.
Příklad jedné měny:
{"curr":"USD",
"mul":1,
"name":"americký dolar",
"tend":"1"}
subjects
Prvek obsahuje objekt, jehož jednotlivé prvky popisují jednotilvé subjekty. Název každého prvku je číselným identifikátorem subjektu. Vlastní objekty specifikují subjekt pomocí prvků name (název subjektu), short (zkrácený název), url (adresa webových stránek subjektu), extra (doplňující HTML kód pro kotvu, typicky např. přesměrování událostí onclick - lze domluvit individuální obsah), valuta (počátek platnosti valutového kurzovního lístku) a deviza (počátek platnosti devizového kurzovního lístku). Datum je ve tvaru: YYYY-MM-DD HH:MM:SS nebo ISO 8601 (dle vašeho nastavení v profilu). Pokud subjekt valutový nebo devizový kurzovní lístek neposkytuje, pak je hodnota prázdná, nebo není uvedena vůbec. Standardní kurzovní lístek směnárny EXCHANGE s.r.o. má vždy kód č. 1. Kurzovní lístek pro VIP klienty má vždy kód č. 2. Devizové kurzy jsou uváděny pouze společně se standardním kurzovním lístkem.
Příklad objektu subjektů:
{1:{"name":"EXCHANGE s.r.o.",
"short":"EXCHANGE",
"url":"https://www.exchange.cz/",
"extra":" onClick=\"window.open('https://www.exchange.cz/?src=projekt.cz','_blank'); return false;\"",
"valuta":"2014-01-02 09:00:00",
"deviza":"2014-01-02 10:32:00"}
2:{"name":"EXCHANGE s.r.o. - VIP kurzy",
"short":"EXCHANGE VIP",
"url":"https://www.exchange.cz/",
"extra":" onClick=\"window.open('https://www.exchange.cz/?src=projekt.cz','_blank'); return false;\"",
"valuta":"2014-01-02 09:00:00"}
buy / sell
Prvky obsahují nákupní (buy) a prodejní (sell) kurzy jednotlivých subjektů. Sadu kurzů tvoří objekt, jehož jednotlivé prvky jsou pojmenovány kódy měn. Každá měna obsahuje pole objektů, tvoří prvky s (číslo subjektu), v (valutový kurz) a d (devizový kurz). Pokud subjekt zveřejňuje pro danou měnu pouze valutový, resp. devizový kurz, pak objekt obsahuje pouze prvek v, resp. d. Pouze pro subjekt č. 2 (EXCHANGE s.r.o. - VIP kurzy) jsou uvedené navíc prvky c (změna oproti předchozímu VIP kurzu) a t (1/0/-1 jako tendence vývoje kurzu). Pokud subjekt danou měnu neobchoduje, pak není subjekt u dané měny vůbec uveden.
Příklad objektu kurzů:
{"USD":[{"s":1,"v":21.2,"d":21.46},
{"s":2,"v":21.4}],
"EUR":[{"s":1,"v":27.2,"d":27.52},
{"s":2,"v":27.4,"c":-0.05,"t":-1}]}
cnb
Prvek obsahujě kurzy České národní banky. Sadu kurzů tvoří objekt, jehož jednotlivé prvky jsou pojmenovány kódy měn. Každá měna je definována objektem obsahujícím prvky r (kurz ČNB) a c (změna proti předchozímu dni).
Příklad objektu kurzů:
{"USD":{"r":21.138,"c":0.012},
"EUR":{"r":27.675,"c":0.028}}
ukázka dat
{"currencies":[{"curr":"USD","mul":1,"name":"americký dolar"},
{"curr":"EUR","mul":1,"name":"euro"},
{"curr":"GBP","mul":1,"name":"britská libra"},
{"curr":"CHF","mul":1,"name":"švýcarský frank"}],
"subjects":{1:{"name":"EXCHANGE s.r.o.",
"short":"EXCHANGE",
"url":"https://www.exchange.cz/",
"valuta":"2014-10-21 09:00:00",
"deviza":"2014-10-21 09:36:00"},
2:{"name":"EXCHANGE s.r.o. - VIP kurzy",
"short":"EXCHANGE VIP",
"url":"https://www.exchange.cz/",
"valuta":"2014-10-21 09:00:00"}},
"buy":{"USD":[{"s":1,"v":21.2,"d":21.5},{"s":2,"v":21.4}],
"EUR":[{"s":1,"v":27.2,"d":27.58},{"s":2,"v":27.45}],
"GBP":[{"s":1,"v":34.3,"d":34.74},{"s":2,"v":34.6}],
"CHF":[{"s":1,"v":22.3,"d":22.84},{"s":2,"v":22.7}]},
"sell":{"USD":[{"s":1,"v":21.7,"d":21.54},{"s":2,"v":21.6}],
"EUR":[{"s":1,"v":27.75,"d":27.62},{"s":2,"v":27.65}],
"GBP":[{"s":1,"v":35,"d":34.8},{"s":2,"v":34.9}],
"CHF":[{"s":1,"v":23,"d":22.89},{"s":2,"v":22.9}]}
}
Popis formátu XML
Kurzovní lístek ve formátu XML má strukturu dle této definice typu dokumentu. Obsah datového souboru je v kódování UTF-8.
Sada kurzů je uzavřena ve značce exchange_rate. Tato značka se může opakovat, přičemž u společnosti EXCHANGE s.r.o. se opakuje nejvýše šestkrát, u ČNB pouze jednou a u ostatních subjektů nejvýše čtyřikrát. Obsahuje kurzy jednotlivých měn a dva atribute, které určují typ kurzů a datum počátku platnosti:
XML_RATE_TYPE_PURCHASE_VALUTA
standardní kurzy pro nákup valut (platné pro všechny subjekty kromě ČNB)
XML_RATE_TYPE_SALE_VALUTA
standardní kurzy pro prodej valut (platné pro všechny subjekty kromě ČNB)
XML_RATE_TYPE_PURCHASE_VALUTA_VIP
kurzy VIP pro nákup valut(platné pouze pro EXCHANGE)
XML_RATE_TYPE_SALE_VALUTA_VIP
kurzy VIP pro prodej valut (platné pouze pro EXCHANGE)
XML_RATE_TYPE_PURCHASE_DEVIZA
kurzy pro nákup deviz (platné pro všechny subjekty kromě ČNB)
XML_RATE_TYPE_SALE_DEVIZA
kurzy pro prodej deviz (platné pro všechny subjekty kromě ČNB)
XML_RATE_TYPE_CNB
kurzy ČNB (platné pouze pro ČNB)
Ukázka dat:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE banks_exchange_rates SYSTEM "https://stream.exchange.cz/data.dtd">
<banks_exchange_rates base_currency="CZK" version="1.0">
<exchange_rates bank="EXCHANGE" date="24.10.2014">
<exchange_rate
type="XML_RATE_TYPE_PURCHASE_VALUTA"
valid_from="24.10.2014 09:00">
<currency name="EUR" quota="1" rate="27.300"/>
<currency name="USD" quota="1" rate="21.500"/>
<currency name="GBP" quota="1" rate="34.600"/>
<currency name="CHF" quota="1" rate="22.500"/>
</exchange_rate>
<exchange_rate
type="XML_RATE_TYPE_SALE_VALUTA"
valid_from="24.10.2014 09:00">
<currency name="EUR" quota="1" rate="27.850"/>
<currency name="USD" quota="1" rate="22.100"/>
<currency name="GBP" quota="1" rate="35.300"/>
<currency name="CHF" quota="1" rate="23.100"/>
</exchange_rate>
<exchange_rate
type="XML_RATE_TYPE_PURCHASE_VALUTA_VIP"
valid_from="24.10.2014 09:00">
<currency name="EUR" quota="1" rate="27.550"/>
<currency name="USD" quota="1" rate="21.750"/>
<currency name="GBP" quota="1" rate="34.900"/>
<currency name="CHF" quota="1" rate="22.800"/>
</exchange_rate>
<exchange_rate
type="XML_RATE_TYPE_SALE_VALUTA_VIP"
valid_from="24.10.2014 09:00">
<currency name="EUR" quota="1" rate="27.750"/>
<currency name="USD" quota="1" rate="21.950"/>
<currency name="GBP" quota="1" rate="35.200"/>
<currency name="CHF" quota="1" rate="23.000"/>
</exchange_rate>
<exchange_rate
type="XML_RATE_TYPE_PURCHASE_DEVIZA"
valid_from="24.10.2014 11:45">
<currency name="EUR" quota="1" rate="27.6600"/>
<currency name="USD" quota="1" rate="21.8600"/>
<currency name="GBP" quota="1" rate="35.0700"/>
<currency name="CHF" quota="1" rate="22.9100"/>
</exchange_rate>
<exchange_rate
type="XML_RATE_TYPE_SALE_DEVIZA"
valid_from="24.10.2014 11:45">
<currency name="EUR" quota="1" rate="27.7400"/>
<currency name="USD" quota="1" rate="21.9400"/>
<currency name="GBP" quota="1" rate="35.1900"/>
<currency name="CHF" quota="1" rate="23.0100"/>
</exchange_rate>
</exchange_rates>
<exchange_rates bank="CNB" date="23.10.2014">
<exchange_rate
type="XML_RATE_TYPE_CNB"
valid_from="23.10.2014 14:00">
<currency name="EUR" quota="1" rate="27.6750" change="-0.0150"/>
<currency name="USD" quota="1" rate="21.8460" change="0.0320"/>
<currency name="GBP" quota="1" rate="35.0140" change="0.0000"/>
<currency name="CHF" quota="1" rate="22.9350" change="-0.0230"/>
</exchange_rate>
</exchange_rates>
</banks_exchange_rates>
Popis šablony XSL
Kurzovní lístek ve formátu šablony XSL pro transofrmaci XML do HTML má strukturu dle specifikace https://www.w3.org/TR/xsl/.
Před vytvářením šablony je vhodné si zkontrolvat obsah XML, uložit si jej, a teprve pak se přepnout do režimu šablony XSL.
Datový formát XML pro šablony XSL naleznete zde.
Popis šablony HTML
Kurzovní lístek ve formátu šablony HTML pro transofrmaci JSON do HTML používá speciální značky, uzavřené mezi symboly <% a %>.
V rámci struktury JSON se odkazuje pomocí cesty podpobné XPath. Základní odkaz začíná vždy lomítkem, např. /currencies, /buy apod.
Aby odkaz správně fungoval, musí být uvedena celá cesta až ke prosté hodnotě, tj. např. /buy/EUR/(s:1)/v.
Pokud je na některé urovni pole nebo objekt a v něm více hodnot, pak lze využít výčtové typy nebo filtry:
Výčtový typ je uzavřen do hranatých závorek. Pokud se jedná o prosté pole, použijí se indexy, např. [0,1,-1], které vybere první, druhý a poslední prvek pole. Pokud se jedná o objekt, pak se použijí klíče, např. [EUR,USD,GBP]. V obou případech je určení prvků určeno pořadím ve výčtu a prvky se mohou dle potřeby opakovat.
Podmínka je uzavřena do kulatých závorek. Obsahuje název jednoho klíče a jeho konkrétní hodnoty. Např. (curr:EUR) nebo (mul:100).
Jestliže je potřeba projít více prvků, pak lze použít vnořený cyklus. Ten se vytvoří tak, že se cesta oddělí čárkou od HTML kódu cyklu. V rámci cyklu se odkazujete na objekt cyklu. Speciální význam má hodnota key a $key, které odkazují na klíč objektu nebo aktuální hodnotu filtru, a hodnota /$, která odkazuje na kořenový objekt. Hodnota key se používá pouze samostatně jako ve formě <%key%>, verze se značkou dolaru se používá pro odkazování. Např. /currencies/(curr:EUR),Nákup:<%/$/buy/$key/(s:1)/v%> (značky <% a %> lze dále vnořovat, ale pomocí key a $key lze odkazovat pouze na poslední úroveň). V uvedeném příkladu se vyhledají všechny prvky pole currencies, které obsahují objekt s prvkem curr, jehož hodnota je "EUR". Podmínky lze rozšířit i na více hodnot, tj. např. /currencies/(curr:[EUR,USD,GBP])
Ukázka dat:
<html>
<body>
<p>Ukázka dat</p>
<table>
<tr>
<th>Currency</th>
<th>Buy</th>
<th>Sell</th>
</tr><%/buy/[EUR,USD,GBP],
<tr>
<td><%key%></td>
<td><%/(s:2)/v,3%></td>
<td><%/$/sell/$key/(s:2)/v,3%></td>
</tr>%>
</table>
<p>Seznam měn:
<%/currencies/(curr:[EUR,USD,GBP,EUR]),<br/><%/name%> (<%key%>)%>
</p>
<p>Poslední dvě měny v seznamu:
<%/currencies/[-2,-1],<br/><%/name%> (<%key%>)%>
</p>
</body>
</html>
Popis šablony dynamického banneru
Dynamický banner je tvořen XML kódem dle této definice.
Banner je možné volitelně transformovat do HTML pomocí XSL šablony.
Definice dynamického banneru se zapisuje ve formátu JSON, které tvoří pole objektů. Každý objekt definuje jeden prvek dynamického banneru. Prvky options, advert a xsl mají zvláštní význam.
První klíč každého objektu určuje, o jaký typ objektu se jedná.
Typy objektů
Vlastnosti ovlivňující generování dynamického banneru.
Příklad volby devizových kurzů s přesností na tři desetinná místa oddělená tečkou:
[{"options":{"data-src":"DEVIZA",
"decimal-separator":".",
"decimals":3}},
...]
Textový prvek, který se ve výstupním souboru prezentuje jako tzv. textová kreativa. Do výstupního XML přidá řádek
<creative mime-type="text__plain" seq-no="1">text</creative>
Sekvenčí číslo se zvýší s každou přidanou kreativou.
Textový prvek může volitelně obsahovat parametr keepspecialchars, který nabývá hodnoty true nebo false (výchozí) a určuje, zda mají být speciální znaky interpretovány jako HTML značky (např. < bude při zapnutém příznaku vloženo bez změny a při vypnutém příznaku jako &lt;).
Příklad dvou textů:
[{"text":"<Zkouška>"},
{"text":"<Zkouška>","keepspecialchars":true},
...]
Příklad vytvoří kreativy:
<creative seq-no="1"
mime-type="text__plain">&lt;Zkouška&gt;</creative>
<creative seq-no="2"
mime-type="text__plain"><Zkouška></creative>
HTML prvek, který se ve výstupním souboru prezentuje jako tzv. html kreativa. Do výstupního XML přidá řádek
<creative mime-type="text__html" seq-no="1">html kód</creative>
Sekvenčí číslo se zvýší s každou přidanou kreativou.
Html prvek může volitelně obsahovat parametr keepspecialchars, který nabývá hodnoty true nebo false (výchozí) a určuje, zda mají být speciální znaky interpretovány jako HTML značky (např. < bude při zapnutém příznaku vloženo bez změny a při vypnutém příznaku jako &lt;).
Příklad dvou html kreativ:
[{"html":"<b>Test"},
{"html":"<b>Test</b>","keepspecialchars":true},
...]
Příklad vytvoří kreativy:
<creative seq-no="1"
mime-type="text__html">&lt;b&gt;Test</creative>
<creative seq-no="2"
mime-type="text__html"><b>Test</b></creative>
Obrázek, který se ve výstupním souboru prezentuje jako tzv. grafická kreativa. Do výstupního XML přidá řádek
<creative mime-type="image__gif" seq-no="1" alt-text="popis" height="100" width="30">https://www.server.cz/images/image.gif</creative>
Sekvenčí číslo se zvýší s každou přidanou kreativou.
URL obrázku se uvede jako hodnota parametru image
Příklad dvou obrázkových kreativ:
[{"image":"https://www.server.cz/images/img.png",
"width":400,"height":50},
{"image":"https://www.server.cz/images/src/?id=1234",
"type":"jpg","width":260,"height":180,"alt":"Obrázek"},
...]
Příklad vytvoří kreativy:
<creative mime-type="image__png" seq-no="1" alt-text="" height="50"
width="400">https://www.server.cz/images/img.png</creative>
<creative mime-type="image__jpeg" seq-no="2"
alt-text="Obrázek" height="180"
width="260">https://www.server.cz/images/src/?id=1234</creative>
Prezentace Adobe Flash, která se ve výstupním souboru prezentuje jako tzv. grafická kreativa. Do výstupního XML přidá řádek
<creative mime-type="application__x-shockwave-flash"
seq-no="1" height="100" width="30"
>https://www.server.cz/flash/anim.swf</creative>
Sekvenčí číslo se zvýší s každou přidanou kreativou.
URL prezentace se uvede jako hodnota parametru flash
Příklad prezentace Adobe Flash:
[{"flash":"https://www.server.cz/flash/anim.swf",
"width":200,"height":80},
...]
Příklad vytvoří kreativu:
<creative mime-type="application__x-shockwave-flash"
seq-no="1" height="200" width="80"
>https://www.server.cz/flash/anim.swf</creative>
Adresa URL, která se ve výstupním souboru prezentuje jako odkaz. Do výstupního XML přidá řádek
<url seq-no="1">https://www.server.cz/cesta/soubor.html</url>
Sekvenčí číslo se zvýší s každou přidanou adresou URL. Číslování adresa je nezávislé na číslování kreativ.
Adresy URL jsou vždy uvedené v závěru výstupního XML souboru. Pokud adresu URL tvoří pouze číslo, pak se jedná o odkaz do reklamního systému Exchange a systém vytvoří odpovídající odkaz.
Adresa URL neobsahuje žádné parametry.
Příklad dvou adres URL:
[{"url":"https://www.server.cz/soubor.html"},
{"url":"12345"},
...]
Příklad vytvoří URL adresy:
<url seq-no="1">https://www.server.cz/soubor.html</url>
<url seq-no="2">https://www.exchange.cz/go/123456</url>
Vloží aktuální kurz vybrané měny. Do výstupního XML přidá více řádků.
Kód měny se uvede jako hodnoty parametru rate
- adresa URL (pokud hodnota url není nastavena na none),
- obrazová kreativa obrázku měny (pokud hodnota img není nastavena na none),
- textová kreativa s kódem měny,
- textová kreativa s nákupním kurze (formátování se řídí dle options),
- textová kreativa s prodejním kurzem (viz předchozí poznámka),
- textová nebo obrazová kreativa vývoje kurzu (viz. options -> change-mode)
URL může být číslo odkazu v reklamním systému společnosti Exchange.
Příklad dvou kurzů:
[{"rate":"EUR","src":"CNB"},
{"rate":"USD","url":"none","img":"none"},
...]
Příklad vytvoří kreativy:
<creative mime-type="image__gif" seq-no="1" alt-text="EUR" height="22" width="30">https://images.iexchange.cz/dynban_EUR.gif</creative>
<creative mime-type="text__plain" seq-no="2">EUR</creative>
<creative mime-type="text__plain" seq-no="3">25,800</creative>
<creative mime-type="image__gif" seq-no="4" alt-text="klesající tendence kurzu (dle ČNB)" height="22" width="20">https://images.iexchange.cz/dynban_down.gif</creative>
<creative mime-type="text__plain" seq-no="5">USD</creative>
<creative mime-type="text__plain" seq-no="6">22,32</creative>
<creative mime-type="text__plain" seq-no="7">22,37</creative>
<creative mime-type="image__gif" seq-no="8" alt-text="vzrůstající tendence kurzu (dle aktuálního vývoje devizového kurzu)" height="22" width="20">https://images.iexchange.cz/dynban_up.gif</creative>
Datum a čas dle zadání. Do výstupního XML přidá řádek
<creative mime-type="text__html" seq-no="1">naformátované datum</creative>
Sekvenčí číslo se zvýší s každou přidanou kreativou.
Formát data se uveden jako hodnota parametru date. Parametry pro formátování odpovídají PHP funkci date.
Příklad dvou datových údajů:
[{"date":"j.n.Y, H:m"},
{"date":"j.n.Y","src":"CNB"},
...]
Příklad vytvoří kreativy:
<creative seq-no="1"
mime-type="text__plain">2.1.2016, 16:30</creative>
<creative seq-no="2"
mime-type="text__plain">2.1.2016</creative>
Pokud definujete šablonu xsl, dojde k automatické transformaci vytvořeného XML na HTML. Toto chování lze potlačit doplněním parametru xml do URI, kterým data načítáte (např. https://stream.exchange.cz/00000000-0000-0000-0000-000000000000&xml).
Šablonu lze zapsat přímo jako textovou hodnotu parametru xsl, nebo můžete jednotlivé řádky naplnit do pole.
Příklad šablony XSL:
[{"xsl":
["<?xml version=\"1.0\" encoding=\"utf-8\"?>"
,"<!DOCTYPE xsl:stylesheet ["
," <!ENTITY nbsp \" \">"
," <!ENTITY copy \"©\">"
," <!ENTITY reg \"®\">"
," <!ENTITY trade \"™\">"
," <!ENTITY mdash \"—\">"
," <!ENTITY ldquo \"“\">"
," <!ENTITY rdquo \"”\">"
," <!ENTITY pound \"£\">"
," <!ENTITY yen \"¥\">"
," <!ENTITY euro \"€\">"
,"]>"
,"<xsl:stylesheet version=\"1.0\""
," xmlns:xsl=\"http:\/\/www.w3.org\/1999\/XSL\/Transform\">"
,"<xsl:output method=\"html\" encoding=\"utf-8\" \/>"
,"<xsl:template match=\"\/\">"
,"<\/xsl:template>"
,"<\/xsl:stylesheet>"]
}]
Tyto tři prvky určují název portálu, kód banneru a texto stavového řádku.
Ve skutečnosti se pouze status projeví vytvořením řádku ve výstupním XML:
<status-text>Text na stavovém řádku.</status-text>
Sada reklamních textů, které se náhodně namíchají do výstupního souboru XML.
Jednotlivé texty s odkazy jsou uvedené v poli přímo jako hodnota adverts.
Každý reklamní text je uveden jako textový nebo html prvek (viz. text nebo html) a je doplněn o povinný parametr url. URL může být číslo odkazu v reklamním systému společnosti Exchange.
Pokud není uveden parametr count, budou do výstupního souboru zahrnuty všechny reklamní texty.
Reklamní texty jsou vybírány vždy v náhodném pořadí. Každý reklamní text vytvoří jednu adresu URL a jednu kreativu.
Příklad sady reklamních textů:
[{"adverts":
[{"html":"Obchodujte <u>ZDARMA!<\/u>","url":1},
{"text":"Neplaťte poplatky!","url":2}],
"prefix":"<span style=\"color: #9f0707; font-weight: normal\">",
"suffix":"</span>",
"count":1},
...]
Příklad vytvoří kreativu:
<creative mime-type="text__plain" seq-no="1"><span style="color: #9f0707; font-weight: normal">Neplaťte poplatky!</span></creative>
<url seq-no="1">https://www.exchange.cz/go/2</url>
Ukázka dat
[{"options":{"data-src":"DEVIZA",
"decimal-separator":".",
"decimals":3}}
,{"text":"Aktuální kurzy měn"}
,{"date":"j.n.Y"}
,{"text":"měna"}
,{"text":"nákup"}
,{"text":"prodej"}
,{"rate":"EUR","url":-1}
,{"rate":"USD","url":-2}
,{"rate":"GBP","url":-3}
,{"rate":"CHF","url":-4}
,{"advert":[{"html":"Neplaťte poplatky za platby do zahraničí - <u>obchodujte ZDARMA!<\/u>","url":-5}
],
"prefix":"<span style=\"color: #9f0707; font-weight: normal\">",
"suffix":"</span>",
"count":1}
,{"xsl":["<?xml version=\"1.0\" encoding=\"utf-8\"?>"
,"<!DOCTYPE xsl:stylesheet ["
," <!ENTITY nbsp \" \">"
," <!ENTITY copy \"©\">"
," <!ENTITY reg \"®\">"
," <!ENTITY trade \"™\">"
," <!ENTITY mdash \"—\">"
," <!ENTITY ldquo \"“\">"
," <!ENTITY rdquo \"”\">"
," <!ENTITY pound \"£\">"
," <!ENTITY yen \"¥\">"
," <!ENTITY euro \"€\">"
,"]>"
,"<xsl:stylesheet version=\"1.0\""
," xmlns:xsl=\"http:\/\/www.w3.org\/1999\/XSL\/Transform\">"
,"<xsl:output method=\"html\" encoding=\"utf-8\" \/>"
,"<xsl:template match=\"\/\">"
,"<div style=\"border: 1px solid #9f0707; width: 296px; height: 96px; overflow: hidden; background: #fff; padding: 1px; margin: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 11px\">"
,"<div style=\"background-color: #9f0707; color: #fff; height: 16px; font-size: 13px; font-weight: bold; padding: 2px 8px\"><div style=\"font-size: 11px; font-weight: normal; float: right; margin: 1px 0px;\"><xsl:value-of select=\"\/banner\/creative[@seq-no=2]\" \/><\/div><xsl:value-of select=\"\/banner\/creative[@seq-no=1]\" \/><\/div>"
,"<div style=\"position: absolute; width: 296px; height: 76px\">"
,"<div style=\"color: #9f0707; text-decoration: underline; font-size: 9px; margin-top: 2px; height: 15px;\">"
," <div style=\"position:absolute; left: 37px;\"><xsl:value-of select=\"\/banner\/creative[@seq-no=3]\" \/><\/div>"
," <div style=\"position:absolute; left: 72px;\"><xsl:value-of select=\"\/banner\/creative[@seq-no=4]\" \/><\/div>"
," <div style=\"position:absolute; left: 111px;\"><xsl:value-of select=\"\/banner\/creative[@seq-no=5]\" \/><\/div>"
," <div style=\"position:absolute; left: 186px;\"><xsl:value-of select=\"\/banner\/creative[@seq-no=3]\" \/><\/div>"
," <div style=\"position:absolute; left: 221px;\"><xsl:value-of select=\"\/banner\/creative[@seq-no=4]\" \/><\/div>"
," <div style=\"position:absolute; left: 260px;\"><xsl:value-of select=\"\/banner\/creative[@seq-no=5]\" \/><\/div>"
,"<\/div>"
,"<div style=\"font-size: 12px; height: 22px;\">"
," <xsl:call-template name=\"currency-rate\"><xsl:with-param name=\"column\" select=\"0\" \/><xsl:with-param name=\"url\" select=\"1\" \/><xsl:with-param name=\"first-creative\" select=\"6\" \/><\/xsl:call-template>"
," <xsl:call-template name=\"currency-rate\"><xsl:with-param name=\"column\" select=\"1\" \/><xsl:with-param name=\"url\" select=\"3\" \/><xsl:with-param name=\"first-creative\" select=\"16\" \/><\/xsl:call-template>"
,"<\/div>"
,"<div style=\"font-size: 12px; height: 22px;\">"
," <xsl:call-template name=\"currency-rate\"><xsl:with-param name=\"column\" select=\"0\" \/><xsl:with-param name=\"url\" select=\"2\" \/><xsl:with-param name=\"first-creative\" select=\"11\" \/><\/xsl:call-template>"
," <xsl:call-template name=\"currency-rate\"><xsl:with-param name=\"column\" select=\"1\" \/><xsl:with-param name=\"url\" select=\"4\" \/><xsl:with-param name=\"first-creative\" select=\"21\" \/><\/xsl:call-template>"
,"<\/div>"
,"<div style=\"font-size: 9px; text-align:center; margin-top: 2px\"><a target=\"_blank\" style=\"text-decoration: none;\"><xsl:attribute name=\"href\"><xsl:value-of select=\"\/banner\/url[@seq-no=5]\" \/><\/xsl:attribute><xsl:call-template name=\"text\"><xsl:with-param name=\"creative\" select=\"26\" \/><\/xsl:call-template><\/a><\/div>"
,"<\/div>"
,"<\/div>"
,"<\/xsl:template>"
,""
,"<xsl:template name=\"linked-image\">"
,"<xsl:param name=\"url\" \/>"
,"<xsl:param name=\"creative\" \/>"
,"<xsl:element name=\"a\">"
,"<xsl:attribute name=\"href\"><xsl:value-of select=\"\/banner\/url[@seq-no=$url]\" \/><\/xsl:attribute>"
,"<xsl:attribute name=\"target\">_blank<\/xsl:attribute>"
,"<xsl:call-template name=\"image\"><xsl:with-param name=\"creative\" select=\"$creative\" \/><\/xsl:call-template>"
,"<\/xsl:element>"
,"<\/xsl:template>"
,""
,"<xsl:template name=\"image\">"
,"<xsl:param name=\"creative\" \/>"
,"<xsl:element name=\"img\">"
,"<xsl:attribute name=\"src\"><xsl:value-of select=\"\/banner\/creative[@seq-no=$creative]\" \/><\/xsl:attribute>"
,"<xsl:attribute name=\"width\"><xsl:value-of select=\"\/banner\/creative[@seq-no=$creative]\/@width\" \/><\/xsl:attribute>"
,"<xsl:attribute name=\"height\"><xsl:value-of select=\"\/banner\/creative[@seq-no=$creative]\/@height\" \/><\/xsl:attribute>"
,"<xsl:attribute name=\"alt\"><xsl:value-of select=\"\/banner\/creative[@seq-no=$creative]\/@alt-text\" \/><\/xsl:attribute>"
,"<xsl:attribute name=\"style\">border:0px<\/xsl:attribute>"
,"<\/xsl:element>"
,"<\/xsl:template>"
,""
,"<xsl:template name=\"currency\">"
,"<xsl:param name=\"url\" \/>"
,"<xsl:param name=\"creative\" \/>"
,"<xsl:element name=\"a\">"
,"<xsl:attribute name=\"href\"><xsl:value-of select=\"\/banner\/url[@seq-no=$url]\" \/><\/xsl:attribute>"
,"<xsl:attribute name=\"target\">_blank<\/xsl:attribute>"
,"<xsl:attribute name=\"style\">color: #005da8; text-decoration: underline;<\/xsl:attribute>"
,"<xsl:call-template name=\"text\"><xsl:with-param name=\"creative\" select=\"$creative\" \/><\/xsl:call-template>"
,"<\/xsl:element>"
,"<\/xsl:template>"
,""
,"<xsl:template name=\"rate\">"
,"<xsl:param name=\"url\" \/>"
,"<xsl:param name=\"creative\" \/>"
,"<xsl:element name=\"a\">"
,"<xsl:attribute name=\"href\"><xsl:value-of select=\"\/banner\/url[@seq-no=$url]\" \/><\/xsl:attribute>"
,"<xsl:attribute name=\"target\">_blank<\/xsl:attribute>"
,"<xsl:attribute name=\"style\">color: #005da8; text-decoration: none;<\/xsl:attribute>"
,"<xsl:call-template name=\"text\"><xsl:with-param name=\"creative\" select=\"$creative\" \/><\/xsl:call-template>"
,"<\/xsl:element>"
,"<\/xsl:template>"
,""
,"<xsl:template name=\"text\">"
,"<xsl:param name=\"creative\" \/>"
,"<xsl:if test=\"\/banner\/creative[@seq-no=$creative]\/@mime-type='text__plain'\"><xsl:value-of select=\"\/banner\/creative[@seq-no=$creative]\" disable-output-escaping=\"no\" \/><\/xsl:if>"
,"<xsl:if test=\"\/banner\/creative[@seq-no=$creative]\/@mime-type='text__html'\"><xsl:value-of select=\"\/banner\/creative[@seq-no=$creative]\" disable-output-escaping=\"yes\" \/><\/xsl:if>"
,"<\/xsl:template>"
,""
,"<xsl:template name=\"currency-rate\">"
,"<xsl:param name=\"column\" \/>"
,"<xsl:param name=\"url\" \/>"
,"<xsl:param name=\"first-creative\" \/>"
,"<xsl:element name=\"div\">"
,"<xsl:attribute name=\"style\">position:absolute; left: <xsl:value-of select=\"($column*149)+7\" \/>px;<\/xsl:attribute>"
,"<xsl:call-template name=\"linked-image\"><xsl:with-param name=\"url\" select=\"$url\" \/><xsl:with-param name=\"creative\" select=\"$first-creative\" \/><\/xsl:call-template>"
,"<\/xsl:element>"
,"<xsl:element name=\"div\">"
,"<xsl:attribute name=\"style\">position:absolute; left: <xsl:value-of select=\"($column*149)+36\" \/>px; margin-top: 3px;<\/xsl:attribute>"
,"<xsl:call-template name=\"currency\"><xsl:with-param name=\"url\" select=\"$url\" \/><xsl:with-param name=\"creative\" select=\"$first-creative+1\" \/><\/xsl:call-template>"
,"<\/xsl:element>"
,"<xsl:element name=\"div\">"
,"<xsl:attribute name=\"style\">position:absolute; left: <xsl:value-of select=\"($column*149)+68\" \/>px; width: 32px; margin-top: 1px; padding: 2px; background-color: #f2f2f2; text-align: right;<\/xsl:attribute>"
,"<xsl:call-template name=\"rate\"><xsl:with-param name=\"url\" select=\"$url\" \/><xsl:with-param name=\"creative\" select=\"$first-creative+2\" \/><\/xsl:call-template>"
,"<\/xsl:element>"
,"<xsl:element name=\"div\">"
,"<xsl:attribute name=\"style\">position:absolute; left: <xsl:value-of select=\"($column*149)+107\" \/>px; width: 32px; margin-top: 1px; padding: 2px; background-color: #f2f2f2; text-align: right;<\/xsl:attribute>"
,"<xsl:call-template name=\"rate\"><xsl:with-param name=\"url\" select=\"$url\" \/><xsl:with-param name=\"creative\" select=\"$first-creative+3\" \/><\/xsl:call-template>"
,"<\/xsl:element>"
,"<\/xsl:template>"
,""
,"<\/xsl:stylesheet>"]}
]