Internet standardy: Porovnání verzí
m (Zamyká „Internet standardy“ [edit=sysop:move=sysop]) |
m (naimportována 1 revize) |
(Žádný rozdíl)
|
Aktuální verze z 31. 7. 2015, 17:35
Výměna dat prostřednictvím Internetu
Pro výměnu dat o výrobcích a výrobních kapacitách byla vyvinuta řada standardů. Většina standardů je dnes postavena na značkovacím jazyku XML.
Princip si ukážeme na příkladu. Zvolíme si konkrétní výrobek, třeba čerpadlo a popíšeme jej několika způsoby. Pro jednoduchost budeme uvažovat jen základní parametry čerpadla:
- Název: 80 KDFU 130-13-AO, ponorné kalové čerpadlo SIGMA
- Kód: SIGMA_80KDFU13
- Napětí: 400 V
- Příkon: 3550 W
- Maximální dopravní výtlak: 15m
- Průtok: 480 l/min
Ve skutečnosti jsou často čerpadla takto popsána a zveřejněna v katalozích na webu. Výrobce pak většinou nabízí podrobnější popis nejčastěji jako PDF soubor.
Tento přístup je přímočarý a jednoduchý, ale není správný. Proč? Pokud se nad příkladem zamyslíte, najdete hned několik problémů.
Především názvy jsou česky a v podstatě jsou vyloučeni zahraniční zákazníci.
Podobný problém nastává u jednotek, kde v anglosaském světě je zvykem používat jiné jednotky, jako jsou například palce a galony.
Konečně poslední problém, který není již tak zřejmý, spočívá v tom, že takto popsaný výrobek se nedá počítačově zpracovat. Představte si obchodníka s čerpadly, který ve svém internetovém obchodě chce zákazníkům nabídnout možnost vyhledat čerpadla podle zadaných parametrů. Každý výrobce dodá sice v potřebné informace, ale každý v jiném formátu, s jinými popisy a v různých jednotkách.
Vytvoření XML protokolu
Všechny tři problémy lze vyřešit pomocí XML, které pomůže oddělit obsah a formu prezentace. V následujícím příkladu vytvoříme jednoduchý XML jazyk pro popis čerpadel a ukážeme si i jednoduchou transformaci do prezentačního formátu HTML.
<?xml version="1.0" encoding="utf-8"?> <Pump> <Model>80 KDFU 130-13-AO</Model> <Code Catalog="PumpShop">SIGMA_80KDFU13</Code> <Description lang="cz">ponorné kalové čerpadlo SIGMA</Description> <Tension Unit="V">400</Tension> <MotorInput Unit="W">3550</MotorInput> <MaxDisplacement Unit="m">15</MaxDisplacement> <PumpCapacity Unit="l/min">480</PumpCapacity> </Pump>
Čerpadlo (Pump) je identifikováno modelem (Model), katalogovým číslem (Code), které je dále blíže určeno katalogem (Catalog).
Popisů (Description) může být více, v různých jazycích (lang).
Technické parametry jsou jmenovité napětí motoru (Tension), jmenovitý výkon (MotorInput), maximální výtlak (MaxDisplacement) a maximální průtok (PumpCapacity). U hodnoty parametrů jsou vždy uvedeny jednotky (Unit).
Tento XML jazyk bychom tímto stylem dále postupně rozšiřovali o další důležité parametry. To však nyní dělat nebudeme a ukážeme si poměrně jednoduchý postup, který si můžete vyzkoušet přímo v browseru na svém počítači.
Naším cílem bude transformovat XML do HTML stránky, kde se zobrazí údaje v angličtině a v imperiálních jednotkách a česky v jednotkách SI. Nejprve do XML přidáme ještě jedno čerpadlo a do hlavičky uvedeme jméno XSL, tedy šablony, kterou se XML bude transformovat do HTML stránky. XSL transformaci napíšeme později.
Po rozšíření bude náš ukázkový XML soubor vypadat takto:
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="pumpcz.xsl" type="text/xsl"?> <Pumps> <Pump> <Model>80 KDFU 130-13-AO</Model> <Code Catalog="PumpShop">SIGMA_80KDFU13</Code> <Description lang="cz">ponorné kalové čerpadlo SIGMA</Description> <Description lang="en">submersible sludge pump SIGMA</Description> <Tension Unit="V">400</Tension> <MotorInput Unit="W">3550</MotorInput> <MaxDisplacement Unit="m">15</MaxDisplacement> <PumpCapacity Unit="l/min">480</PumpCapacity> </Pump> <Pump> <Model>100-KDFU-150-13,5-AO</Model> <Code Catalog="PumpShop">SIGMA_100KDFU15</Code> <Description lang="cz">ponorné kalové čerpadlo SIGMA</Description> <Description lang="en">submersible sludge pump SIGMA</Description> <Tension Unit="V">400</Tension> <MotorInput Unit="W">3000</MotorInput> <MaxDisplacement Unit="m">27</MaxDisplacement> <PumpCapacity Unit="m3/hod">86</PumpCapacity> </Pump> </Pumps>
Doplnili jsme anglické popisy a zejména <?xml-stylesheet href="pumpcz.xsl" type="text/xsl"?>, který je procesní instrukcí pro browser, který znamená "toto xml transformuj do jiné podoby, podle příkazů v souboru pumpcz.xsl".
XSL Transformace z XML do HTML
Nyní tedy napíšeme transformační xsl soubor. Budeme chtít zobrazit data v přehledné tabulce. V XML jsou také u průtoků použity různé jednotky (l/min a m3/hod), které sjednotíme na l/min, pro výkon použijeme kW.
Obsah souboru pumpcz.xsl pak bude vypadat takto:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"> <xsl:template match="Pumps"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"/> <title>Pumpy našeho podniku</title> </head> <body> <table border="1"> <caption>Naše čerpadla</caption> <thead> <tr> <th>Model</th> <th>Kód</th> <th>Popis</th> <th>Jmenovité napětí [V]</th> <th>Jm. výkon motoru [kW]</th> <th>Výtlak max. [m]</th> <th>Průtok max. [l/min]</th> </tr> </thead> <tbody> <xsl:for-each select="Pump"> <tr> <td><xsl:value-of select="Model"/></td> <td><xsl:value-of select="Code"/></td> <td><xsl:value-of select="Description[@lang='cz']"/></td> <td><xsl:value-of select="Tension"/></td> <td> <xsl:choose> <xsl:when test="MotorInput/@Unit='W'"> <xsl:value-of select="MotorInput div 1000"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="MotorInput"/> </xsl:otherwise> </xsl:choose> </td> <td><xsl:value-of select="MaxDisplacement"/></td> <td> <xsl:choose> <xsl:when test="PumpCapacity/@Unit='m3/hod'"> <xsl:value-of select="format-number(PumpCapacity * 1000 div 60,'#0')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="PumpCapacity"/> </xsl:otherwise> </xsl:choose> </td> </tr> </xsl:for-each> </tbody> </table> </body> </html> </xsl:template> </xsl:stylesheet>
Jednotlivé XSL příkazy jsou dobře vysvětleny v mnoha jiných zdrojích na internetu (viz například odkazy níže). Povšimněte si zejména přepočtu jednotek MotorInput div 1000 (převod z W na kW) a PumpCapacity * 1000 div 60 (převod z m3/hod na l/min).
Výsledkem transformace je pak tabulka:
Naše čerpadla
Model | Kód | Popis | Jmenovité napětí [V] | Jm. výkon motoru [kW] | Výtlak max. [m] | Průtok max. [l/min] |
---|---|---|---|---|---|---|
80 KDFU 130-13-AO | SIGMA_80KDFU13 | ponorné kalové čerpadlo SIGMA | 400 | 3.55 | 15 | 480 |
100-KDFU-150-13,5-AO | SIGMA_100KDFU15 | ponorné kalové čerpadlo SIGMA | 400 | 3 | 27 | 1433 |
Pro zákazníky a partnery z anglosaských zemí použijeme stejná data ale jinou transformaci, kde kromě anglických textů budou i jednotky jako stopa a galon.
Založíme další soubor s názvem pumpen.xsl s následujícím obsahem:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"> <xsl:template match="Pumps"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"/> <title>Our company pumps</title> </head> <body> <table border="1"> <caption>Our pumps</caption> <thead> <tr> <th>Model</th> <th>Code</th> <th>Description</th> <th>Tension [V]</th> <th>Motor input [hp]</th> <th>Displacement max. [ft]</th> <th>Capacity max. [gal/min]</th> </tr> </thead> <tbody> <xsl:for-each select="Pump"> <tr> <td><xsl:value-of select="Model"/></td> <td><xsl:value-of select="Code"/></td> <td><xsl:value-of select="Description[@lang='en']"/></td> <td><xsl:value-of select="Tension"/></td> <td> <xsl:choose> <xsl:when test="MotorInput/@Unit='W'"> <xsl:value-of select="format-number(MotorInput div 745.7,'#0.00')"/> </xsl:when> <xsl:when test="MotorInput/@Unit='kW'"> <xsl:value-of select="format-number(MotorInput div 0.7457,'#0.00')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="MotorInput"/> </xsl:otherwise> </xsl:choose> </td> <td><xsl:value-of select="format-number(MaxDisplacement * 3.28,'#0.00')"/></td> <td> <xsl:choose> <xsl:when test="PumpCapacity/@Unit='m3/hod'"> <xsl:value-of select="format-number(PumpCapacity * 1000 div 3.785 div 60,'#0')"/> </xsl:when> <xsl:when test="PumpCapacity/@Unit='l/min'"> <xsl:value-of select="format-number(PumpCapacity div 3.785,'#0')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="PumpCapacity"/> </xsl:otherwise> </xsl:choose> </td> </tr> </xsl:for-each> </tbody> </table> </body> </html> </xsl:template> </xsl:stylesheet>
Aby se nová transformace projevila je nutné změnit odkaz v souboru pump.xml na <?xml-stylesheet href="pumpen.xsl" type="text/xsl"?>.
Kromě anglických názvů si povšimněte jiného přepočtu jednotek MotorInput div 745.7 (převod z W na hp), PumpCapacity div 3.785 (převod z l/min na gal/min) a MaxDisplacement * 3.28 (převod z m na stopy).
Výsledkem transformace je pak tabulka:
Our pumps
Model | Code | Description | Tension [V] | Motor input [hp] | Displacement max. [ft] | Capacity max. [gal/min] |
---|---|---|---|---|---|---|
80 KDFU 130-13-AO | SIGMA_80KDFU13 | submersible sludge pump SIGMA | 400 | 4.76 | 49.20 | 127 |
100-KDFU-150-13,5-AO | SIGMA_100KDFU15 | submersible sludge pump SIGMA | 400 | 4.02 | 88.56 | 379 |
Vyzkoušejte sami
- Stáhněte si archiv PumpXmlXslt.zip
- Archiv rozbalte na disk.
- V browseru otevřete soubor pump.xml.
- V souboru pump.xml změňte odkaz na xsl soubor (pumpcz.xsl nebo pumpen.xsl).
- V browseru vždy po změně aktualizujte obsah, aby se změny projevily.
- Pokuste se přidat další čerpadlo do pump.xml soboru.
- Pokuste se vylepšit nebo změnit transformaci do HTML, zkuste vytvořit transformaci do dalšího jazyka, například vytvořte soubor pumpde.xsl pro německé zákazníky.
Další zdroje
Některé z používaných standardů naleznete na stránkách standardizačních organizací, nebo na portálech věnovaných XML standardům:
Prostřednictvím těchto standardů si podniky vyměňují informace o produktech, jejich vlastnostech a dodávkách (stav skladových zásob, podmínky a stav dodání).
Kromě těchto protokolů existují i specializované portály jako je Wer Liefert Was nebo česká verze služby wlw.cz
Zpět na úvod - Materiály a poznámky k přednáškám