stream.exchange.czOdběr kurzovních lístků

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.

Základním prvkem dokumentu je značka banks_exchange_rates, která obsahuje sadu subjektů a dva atributy:

base_currency - základní měna kurzovního lístku (CZK)

version - verze souboru (aktuálně 1.0)

Subjekt je uzavřen ve značce exchange_rates. Tato značka se může libovolně opakovat. Obsahuje sadu kurzů a dva atributy, které určují subjekt a datum kurzů:

bank - identifikátor banky, např. EXCHANGE, KB, CNB apod.

date - datum ve formátu dd.mm.rrrr

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:

type - typ kurzů, který může nabývat jedné z následujících hodnot:

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)

valid_from - počátek platnosti kurzů ve formátu dd.mm.rrrr hh:mm

Kurzy jednotlivých měn jsou uzavřené ve značce currency. Tato značka se opakuje pro všechny měny, jejichž kurz daný subjekt pro daný typ kurzu zveřejnil. Obsahuje pouze tři, příp. čtyři atributy, které určují kód měny, násobek měny a kurz, příp. ještě změnu vůči poslednímu zveřejněnému kurz (pouze pro kurzy ČNB).

name - třípísmenný kód měny dle ISO 4217

quota - násobek měny pro přepočet kurzu (zpravidla 1, ale např. pro JPY má hodnotu 100)

rate - aktuální kurz; oddělovačem desetinných míst je tečka

change - změna kurz proti předchozímu kurzu (pouze pro kurzy ČNB); hodnota začíná znaménkem mínus (-), pokud Kč vůči měně od posledního zveřejnění posílila (tj. kurz je nižší); oddělovačem desetinných míst je tečka

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.

Podporované hodnoty:

url-redir - adresa, která je vložena před každou adresu URL (viz. url, výchozí hodnota není definována)

xsl-template - odkaz na definici XML (výchozí hodnota je http://1.im.cz/dtd/dynamicbanner.dtd)

data-src - výchozí typ dato pro generování kurzů (viz. objekt rate)

change-mode - styl zobrazení vývoje kurzu:
0 = výchozí chování (obrázek nebo text)
1 = obrázek (viz. change-xxx-img)
2 = text (viz. change-xxx-text)
3 = změna kurzu ČNB (přesné číslo)
4 = změna kurzu VIP (přesné číslo)
5 = změna devizového kurzu (jen -1/0/1)
6 = změna kurzu ČNB (procento)
7 = změna kurzu VIP (procento)

change-up-img - grafický soubor při oslabení koruny (výchozí hodnota je https://images.iexchange.cz/dynban_up.gif)

change-none-img - grafický soubor při zachování kurzu (výchozí hodnota je https://images.iexchange.cz/dynban_none.gif)

change-down-img - grafický soubor při posílení koruny (výchozí hodnota je https://images.iexchange.cz/dynban_down.gif)

change-width - šířka obrázků vývoje kurzu (výchozí hodnota je 20)

change-height - výška obrázků vývoje kurzu (výchozí hodnota je 22)

change-up-text - textový popis při oslabení koruny (výchozí hodnota není definována)

change-none-text - textový popis zachování kurzů (výchozí hodnota není definována)

change-down-text - textový popis při posílení koruny (výchozí hodnota není definována)

currency-folder - umístění obrázků měn (názvy musí začínat dynban_EUR apod., výchozí hodnota je https://images.iexchange.cz/)

currency-ext - přípona obrázků měn (musí začínat tečkou, výchozí hodnota je .gif)

currency-width - šířka obrázků měn (udává se v pixelech, výchozí hodnota je 30)

currency-height - výška obrázků měn (udává se v pixelech, výchozí hodnota je 22)

decimal-separator - oddělovač desetinných míst kurzů měn (výchozí hodnota je ",")

decimals - počet desetinných míst (výchozí hodnota je 2)

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ř. &lt; bude při zapnutém příznaku vloženo bez změny a při vypnutém příznaku jako &amp;lt;).

Příklad dvou textů:

[{"text":"&lt;Zkouška&gt;"},
 {"text":"&lt;Zkouška&gt;","keepspecialchars":true},
...]

Příklad vytvoří kreativy:

<creative seq-no="1"
  mime-type="text__plain">&amp;lt;Zkouška&amp;gt;</creative>
<creative seq-no="2"
  mime-type="text__plain">&lt;Zkouška&gt;</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ř. &lt; bude při zapnutém příznaku vloženo bez změny a při vypnutém příznaku jako &amp;lt;).

Příklad dvou html kreativ:

[{"html":"&lt;b&gt;Test"},
 {"html":"&lt;b&gt;Test&lt;/b&gt;","keepspecialchars":true},
...]

Příklad vytvoří kreativy:

<creative seq-no="1"
  mime-type="text__html">&amp;lt;b&amp;gt;Test</creative>
<creative seq-no="2"
  mime-type="text__html">&lt;b&gt;Test&lt;/b&gt;</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

Obrázek obsahuje tyto další parametry:

width určuje šířku obrázku (v obrazových bodech).

height určuje výšku obrázku (v obrazových bodech).

type (volitelný) určuje typ obrázku gif, png nebo jpg (pokud není typ uveden, odvodí se z koncovky souboru).

alt (volitelný) určuje alternativní popis obrázku.

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

Prezentace Adobe Flash obsahuje tyto další parametry:

width určuje šířku prezentace (v obrazových bodech).

height určuje výšku prezentace (v obrazových bodech).

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

Kurz obsahuje tyto další parametry:

src (volitelný) určuje zdroj hodnoty kurzu, výchozí hodna je určena v options. Možné hodnoty jsou:
ČNB nebo CNB - kurz i změna dle kurzovního lístku ČNB
DEV nebo DEVIZA - kurz i změna dle aktuálního devizového kurzu (pouze indikace změny -1/0/1)
VAL, VALUTA nebo VIP - kurz i změna dle kurzovního lístku pro VIP klienty
VAL_CNB, VAL_ČNB, VIP_CNB, VIP_ČNB, DEV_CNB nebo DEV_ČNB - kurz dle kurzovního lístku pro VIP klienty, změna dle kurzovního lístku ČNB
default - výchozí nastavení, tj. kurz dle aktuálního devizového kurzu, změna dle kurzovního lístku ČNB

url (volitelný) určuje adresu URL, která bude uložena společně s měnou, pro přeskočení použijte hodnotu none.

img (volitelný) umožňuje individuálně přepsat automaticky generovanou kreativu obrázku měny, pro vynechání obrázku použijte hodnotu none.

Do výstupního souboru budou postupně přidány:

  • 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.

Datum může volitelně obsahovat parametr src, který určuje zdroj data:

ČNB nebo CNB - datum kurzovního lístku ČNB

DEV nebo DEVIZA - datum a čas devizového kurzovního lístku (výchozí, pokud deviza obchoduje)

VAL nebo VALUTA - datum a čas valutového kurzovního lístku (výchozí, pokud deviza neobchoduje)

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 \"&#160;\">"
   ," <!ENTITY copy \"&#169;\">"
   ," <!ENTITY reg \"&#174;\">"
   ," <!ENTITY trade \"&#8482;\">"
   ," <!ENTITY mdash \"&#8212;\">"
   ," <!ENTITY ldquo \"&#8220;\">"
   ," <!ENTITY rdquo \"&#8221;\">"
   ," <!ENTITY pound \"&#163;\">"
   ," <!ENTITY yen \"&#165;\">"
   ," <!ENTITY euro \"&#8364;\">"
   ,"]>"
   ,"<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.

Sada reklamních textů může obsahovat tyto další parametry:

prefix určuje text, který bude vložen před každý reklamní text,

postfix určuje text, který bude vložen na konec za každý reklamní text,

count určuje počet reklmních textů, které budou zahrnuty do výstupního souboru.

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   \"&#160;\">"
  ,"  <!ENTITY copy   \"&#169;\">"
  ,"  <!ENTITY reg    \"&#174;\">"
  ,"  <!ENTITY trade  \"&#8482;\">"
  ,"  <!ENTITY mdash  \"&#8212;\">"
  ,"  <!ENTITY ldquo  \"&#8220;\">"
  ,"  <!ENTITY rdquo  \"&#8221;\">"
  ,"  <!ENTITY pound  \"&#163;\">"
  ,"  <!ENTITY yen    \"&#165;\">"
  ,"  <!ENTITY euro   \"&#8364;\">"
  ,"]>"
  ,"<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>"]}
]