1 / 43

4iz210 – cvičení XML

4iz210 – cvičení XML. Tomáš Kliegr , David Chudán upravil D. Pejčoch. Osnova. Procvičování regulárních výrazů XML , XML schéma, XSLT Práce v SW Kernow (open source ) Práce v SW Oxygen (komerční) Jak na úkol č. 2. XML. Formát pro výměnu dat

ronan-mejia
Download Presentation

4iz210 – cvičení XML

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 4iz210 – cvičení XML Tomáš Kliegr, David Chudán upravil D. Pejčoch

  2. Osnova • Procvičování regulárních výrazů • XML, XML schéma, XSLT • Práce v SW Kernow (open source) • Práce v SW Oxygen (komerční) • Jak na úkol č. 2

  3. XML • Formát pro výměnu dat • Odděluje data od způsobu jejich prezentace • Snadno čitelný a editovatelný • Standardizován W3C, odvozen od SGML • Zaměřeno na obsah • Stromová struktura <?xmlversion=“1.0” encoding = “utf-8”> <Message> Hello <bold>world!<bold> </Message>

  4. Seznam – Zboží.cz • Služba, s jejíž pomocí je možné vyhledávat informace o nabízeném zboží a jeho cenách mezi internetovými obchody registrovanými na www.zbozi.cz • Jedná se o zprostředkování prodeje • Nápověda pro službu k dispozici na http://napoveda.seznam.cz/cz/zbozi/napoveda-pro-internetove-obchody/

  5. Zboží.cz – klíčové (povinné) tagy • <shop> - kořenový tag pro celý obchod • <shopitem> - tag pro jednu nabízenou položku • <description> - popis výrobku • <url> - odkaz na stránku s nabídkou výrobku • <dues> - součet ceny všech poplatků, které je nutné zaplatit při zakoupení výrobku • Celý přehled tagů: http://napoveda.seznam.cz/cz/specifikace-xml.html

  6. XML Schema Feed.xsd • XML Schema umožňuje vytvořit vlastní„datový formát“ • Definujeme • povolené elementy, • atributy, • přípustné kombinace elementů a atributů, • vlastní datové typy odvozené od existujících typů • Syntaxe je založena XML, soubor má příponu .xsd • Validace: Proces kontroly, zda XML dokument odpovídá schématu

  7. Úprava XML Schématu • Detailní pokrytí XML Schématu je předmětem kurzu 4iz238 • Tento kurz pokrývá pouze základní úpravy XML schémat bez jmenných prostorů • Komentář k souboru zbozi_feed.xsd <?xmlversion="1.0" encoding="UTF-8"?><xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element type="SHOP_TYPE" name="SHOP"/> Dokument musí obsahovat element "SHOP", struktura tohoto elementu je dána typem SHOP_TYPE Typy XML Schématu jsou komplexní a jednoduché.

  8. Komplexní typ Komplexní typy se mohou skládat z elementů a atributů. Například SHOP_TYPE je komplexní typ: <xs:complexTypename="SHOP_TYPE"> <xs:sequenceminOccurs="1" maxOccurs="unbounded"> <xs:element type="SHOPITEM_TYPE" name="SHOPITEM"></xs:element></xs:sequence> </xs:complexType> Elementy typu SHOP_TYPE musí obsahovat alespoň jeden element SHOPITEM, který je typu SHOPITEM_TYPE

  9. Element typu SHOPITEM_TYPE SHOPITEM_TYPE je opět komplexní typ. Skládá se z elementů DESCRIPTION, DUES,… FIRMY_CZ. Atribut minOccurs a maxOccurs udává, kolikrát se může element vyskytovat, výchozí hodnota atributu je 1. Pokud nejsou atributy uvedeny, musí se element vyskytovat právě jednou. <xs:complexTypename="SHOPITEM_TYPE"> <xs:all> <xs:element name="PRODUCT" type="PRODUCT_NAME"/> <xs:element name="DESCRIPTION" type="PRODUCT_DESCRIPTION"/> <xs:element minOccurs="0" name="DUES" type="CZK_PRICE"/> <xs:element minOccurs="0" name="DISCUSSION_SIZE" type="xs:nonNegativeInteger"/> <xs:element minOccurs="0" name="DISCUSSION_URL" type="xs:anyURI"/> <xs:element name="AVAILABILITY" type="xs:nonNegativeInteger" minOccurs="0"/> <xs:element minOccurs="0" name="SHOP_DEPOTS" type="xs:string"/> <xs:element name="URL" type="xs:anyURI"/> <xs:element name="IMGURL" type="xs:anyURI" minOccurs="0"/> <xs:element name="ITEM_TYPE" type="ITEM_TYPE_TYPE" minOccurs="0"/> <xs:element name="AVAILABILITY" minOccurs="0" type="xs:nonNegativeInteger"/> <xs:element minOccurs="0" name="PRICE" type="CZK_PRICE"/> <xs:element name="VAT" minOccurs="0" type="VAT_TYPE"/> <xs:element name="PRICE_VAT" type="CZK_PRICE" minOccurs="0"/> <xs:element name="TOLLFREE" minOccurs="0" maxOccurs= "1" type="TOLLFREE_TYPE"> </xs:element> <xs:element name="FIRMY_CZ" minOccurs="0" type="FIRMY_CZ_TYPE"/> </xs:all> </xs:complexType> Instrukce <xs:all> udává, že elementy mohou být v XML dokumentu uvedeny v libovolnémpořadí

  10. Jednoduchý typ • XML Schéma obsahuje základní / primitivní datové typy jako xs:string, xs:boolean, xs:decimal, xs:dateTime, xs:anyURI.. • Můžeme definovat vlastní datové typy restrikcí nebo odvozením existujících datových typů <xs:element name="PRODUCT" type="PRODUCT_NAME"/> … <xs:element minOccurs="0" name="DISCUSSION_URL" type="xs:anyURI"/> <xs:element name="DESCRIPTION" type="PRODUCT_DESCRIPTION"/> Se odvolává na uživatelsky definovaný datový typ: <xs:simpleTypename="PRODUCT_DESCRIPTION"><xs:restriction base="xs:string"> <xs:minLengthvalue="1"/> <xs:maxLengthvalue="512"/> </xs:restriction> </xs:simpleType> Tento uživatelsky definovaný datový typ vzniknul odvozením restrikcí od předdefinovaného datového typu xs:string. Restrikce spočívá v tom, že přípustný popis produktu musí mít alespoň jeden znak a nejvíce 512 znaků.

  11. Příklad rozšíření XML schématu • Rozšíření o výrobce produktu <xs:complexType name="SHOPITEM_TYPE"> <xs:all> <xs:element name="PRODUCT" type="PRODUCT_NAME"/> <xs:element name="DESCRIPTION" type="PRODUCT_DESCRIPTION"/> <xs:element name= "MANUFACTURER"type="xs:string"minOccurs="0" />… Na libovolné místo v definici komplexního typu vložíme nový řádek, který zavádí nový nepovinný element MANUFACTURER

  12. Uživatelsky definovaný jednoduchý typ • Rozšíření o EAN Kód <xs:complexType name="SHOPITEM_TYPE"> <xs:all><xs:element name="PRODUCT" type="PRODUCT_NAME"/><xs:element name="DESCRIPTION" type="PRODUCT_DESCRIPTION"/> <xs:element name= "MANUFACTURER"type="xs:string"minOccurs="0" /> <xs:element name= "EAN"type="EANTYPE"minOccurs="0" /> … </xs:all> </xs:complexType> EAN bychom mohli definovat jednoduše přímo jako xs:integer, ale můžeme využít uživatelského typu ke kontrole počtu číslic. <xs:simpleTypename="EAN_TYPE"> <xs:restriction base="xs:integer"> <xs:totalDigitsvalue="13"></xs:totalDigits> </xs:restriction> </xs:simpleType> Pokud může XML obsahovat EAN13 nebo EAN8 kód, můžeme využít regulárního výrazu <xs:simpleTypename="EAN_TYPE"> <xs:restriction base="xs:integer"> <xs:patternvalue="[0-9]{13}|[0-9]{8}"></xs:totalDigits> </xs:restriction> </xs:simpleType>

  13. XSL(T) • Stylový jazyk • Oddělení obsahu dokumentu od jeho vzhledu • Plní dvě funkce: • Transformace XML dokumentů (XSLT) • Definice vzhledu formátování (XSL)

  14. Použití stylů, význam

  15. Připojení stylu k dokumentu <?xmlversion="1.0" encoding="utf-8"?> <?xml-stylesheethref="mujstyl.xsl" type="text/xsl"?> <dokument> ... </dokument>

  16. Zpracování stylu - šablony • Jsou základem každého stylu, základní tvar je: <xsl:templatematch="vzor"> tělo šablony </xsl:template> • Tělo šablony definuje, jak se budou části šablony, vyhovující konkrétnímu výrazu, zpracovávat.

  17. Klíčové příkazy v těle šablony • <xsl:value-ofselect="výraz"> Vybere obsah textových uzlů, které jsou potomky elementu určeného pomocí výrazu. Tento výraz použijeme, pokud nechceme aplikovat na další šablony. • <xsl:apply-templates> Daná větev stromu se má zpracovávat dále (další potomci uzlu, pro který je vybrána šablona, se nezpracovávají automaticky) a mají se pro její uzly hledat odpovídající šablony.

  18. Podmíněné zpracování • Podmíněný příkaz <xsl:if> • <xsl:if test="podmínka"> příkazy </xsl:if> • Pokud je výraz pravdivý, provedou se příkazy v této podmínce. • Není zde k dispozici část else, místo toho se využívá <xsl:choose>

  19. XSL Transformace, konkrétně XSLT transformace se skládá ze šablon (template) <xsl:templatematch="SHOP"> Atributmatchobsahuje XPath výraz určující uzly na které se má šablona uplatnit. Tato šablona se má uplatnit na kořenový uzel – element SHOP Výklad jazyka XPath přesahuje rámec kurzu 4iz210. Pro účely seminární práce není třeba nové šablony přidávat nebo měnit množinu uzlů, na které se šablony aplikují. Pokud se šablona uplatní, vypíše se její obsah na výstup. V tomto případě se jedná o značky jazyka HTML. <html> <head> <title>Nabídka produktů našeho eshopu</title> </head> <h1>Výpis produktů:</h1> … <!-- Příkaz pro nalezení a provedení šablony pro element SHOPITEM--> <xsl:apply-templatesselect="SHOPITEM"/> </body> </html></xsl:template>

  20. Šablona pro zpracování kořenového elementu • Ukázkový XML Feed obsahuje dvě šablony, První šablona zpracuje kořenový element XML dokumentu a vypíše základní strukturu výstupního HTML souboru <xsl:templatematch="SHOP"> <html> <head> <title>Nabídka produktů našeho eshopu</title> </head> <body> <xsl:apply-templates select="SHOPITEM"/> </body></html> Instrukce <xsl:apply-templates select="SHOPITEM"/> Zavolá šablonu pro výpis konkrétních produktů.

  21. Úprava šablony • V šabloně upravte HTML kód <xsl:template match="SHOP"> <html> <head> <title>Seznam služeb nabízený firmou XYZ</title> </head> <body> <h1>Stručná charakteristika portfolia firmy </h1> … <h2> Seznam služeb</h2> <xsl:apply-templates select="SHOPITEM"/> <strong>Nebudete-li s našimi službami spokojeni, vrátíme vám peníze!</strong> </body></html> Tučně jsou označeny provedené úpravy.

  22. Šablona pro zpracování konkrétní položky <xsl:template match="SHOPITEM"> <hr/> <h2><xsl:value-of select="PRODUCT"/></h2> <table> <tr><td rowspan="4" ><img src="{IMGURL}" alt=""/></td><td>Popis</td><td><xsl:value-of select="DESCRIPTION"/></td></tr> <!-- XML dokument musí obsahovat PRICE nebo PRICE_VAT a VAT--> <xsl:if test="PRICE"><tr><td width="150px">Cena v Kč bez DPH</td><td><xsl:value-of select="PRICE"/></td></tr></xsl:if> <xsl:if test="PRICE_VAT"><tr><td>Cena v Kč s DPH</td><td><xsl:value-of select="PRICE_VAT"/></td></tr></xsl:if> <xsl:if test="VAT"><tr><td>Sazba DPH</td><td><xsl:value-of select="VAT"/></td></tr></xsl:if> </table> </xsl:template> Podmíněný výpis obsahu elementu Instrukce xsl:if zajistí, že její obsah se vypíše, pouze pokud je XPath výraz v atributu test splněn. <xsl:if test="PRICE"><tr><td width="150px">Cena v Kč bez DPH</td><td><xsl:value-of select="PRICE"/></td></tr></xsl:if> Řádek s cenou bez DPH je vypsán, obsahuje-li právě zpracovávaná položka element cena Hodnotu z XML souboru vypíšeme pomocí instrukce xsl:value-of select= "XPath výraz" Cena aktuálně zpracovávané položky je uložena v jejím dětském elementu PRICE, XPath výraz je v tomto případě jednoduchý – na dítě aktuálního elementu odkážeme pouhým uvedením jeho názvu. <xsl:value-of select="PRICE"/>

  23. Ukázková úprava šablony <xsl:templatematch="SHOPITEM"> <hr/> <h2><xsl:value-ofselect="PRODUCT"/></h2> <xsl:if test="AVAILABILITY>0"><font style="color:red">Pozor, tentoprodukt je k dodání až za <xsl:value-ofselect="AVAILABILITY"/>dní!</font></xsl:if> <table> <tr><tdrowspan="4" ><imgsrc="{IMGURL}" alt=""/></td><td>Popis</td><td><xsl:value-ofselect="DESCRIPTION"/></td></tr> <xsl:if test="PRICE"><tr><tdwidth="150px">Cena v Kč bez DPH</td><td><xsl:value-ofselect="PRICE"/></td></tr></xsl:if> <xsl:if test="PRICE_VAT"><tr><td>Cena v Kč s DPH</td><td><xsl:value-ofselect="PRICE_VAT"/></td></tr></xsl:if> <xsl:if test="VAT"><tr><td>Sazba DPH</td><td><xsl:value-ofselect="VAT"/></td></tr></xsl:if> <xsl:if test="EAN"><tr><td>EAN kód</td><td><xsl:value-ofselect="EAN"/></td></tr></xsl:if> </table> </xsl:template>

  24. SW - Kernow (opensource) • http://kernowforsaxon.sourceforge.net/ • Program není nutné instalovat, stačí rozbalit a spustit

  25. Úprava XML schématu a XML souboru XML soubor XSD soubor (schéma) Výsledek validace

  26. Uložení • Upravené schéma a XML Soubor si nezapomeňte uložit zkopírováním přes schránku do souboru.

  27. Úprava XSLT transformace XSLT transformace XML Soubor Hlášení, pokud je chyba v transformaci Výstup transformace

  28. Uložení • Upravenou XSLT transformaci si nezapomeňte uložit zkopírováním přes schránku do souboru.

  29. Validace proti schématu XML Schéma Validovaný XML dokument Výsledek validace

  30. XSL Transformace – souborový vstup • Pokud XML schéma a XSLT transformaci upravené v Schema Sandbox a XSLT Sandbox uložíte do souboru

  31. SW – Oxygen (komerční) • Alternativou k open source programu Kernow je program Oxygen, který nabízí mnohem větší komfort při tvorbě XML dokumentů, XSL transformacích a validaci. • Oxygen nabízí mj. codecompletion a XSLT debugger. • Na učebnách ho najdete v Application Exploreru • Pro účely seminární práce si ho můžete nainstalovat i na domácí počítač či notebook - licenci získáte (oproti vašemu xname a heslu do školní sítě) na https://badame.vse.cz/oxygen/index.php

  32. Oxygen – hlavní obrazovka Pás s otevřenými soubory Vedlejší okno, kde je možné označovat jednotlivé položky (všimněte si, že v hlavních okně je související položka SHOPITEM označená) Hlavní okno

  33. Validace XML souboru • Validaci je možno uskutečnit dvojím způsobem: • Pomocí schématu jakožto externího souboru. • Přiřazením schématu přímo do XML souboru.

  34. Validace externím souborem • Pro validaci externím souborem zvolíme ikonu Validate • Zde vybereme Externalvalidation • Následně soubor najdeme a potvrdíme, čímž se validace provede.

  35. Validace přiřazením schématu • Pro přiřazení schématu do XML souboru zvolíme ikonu Associateschema • V následujícím menu vybereme schéma a potvrdíme

  36. Validace přiřazením schématu • Přiřazení schématu do XML souboru si můžeme ověřit tím, že přibylo přiřazení schématu (viz. obrázek) Nyní můžeme zvalidovat pomocí ikony Validate

  37. Výsledek validace • Validace může buď proběhnout bez chyb (dokument je zvalidován a je v souladu se schématem) nebo může nějaké chyby obsahovat. Validace neproběhla bez chyb Validace proběhla bez chyb Seznam chyb najdeme v okně umístěném ve spodní části obrazovky

  38. Přiřazení XSLT stylu • XSLT styl přiřadíme pomocí následující ikony (která se nachází vedle přiřazení schématu) • V následujícím okně opět vybereme příslušný soubor a potvrdíme. • Nyní si opět můžeme všimnout toho, že v XML souboru máme přiřazenou šablonu se stylem.

  39. Přiřazení XSLT stylu

  40. Transformace • Nyní klikneme na ikonu Applytransformationscenario, potvrdíme a dojde k vygenerování HTML stránky a jejímu spuštění ve výchozím prohlížeči.

  41. Výsledek transformace

  42. Procvičování • Do ukázkových souborů přidejte alespoň dva nové elementy (vyplňte u 5 produktů ze stránky http://www.fair-bio.cz/ ) • Změňte styl tak, aby byl ve výstupu nadpis každého produktu červeně a podtržený, text více odsaďte od obrázku a v tabulce budou u vámi vybraných (naeditovaných) produktů zobrazeny příslušné informace. • Aktivujte jednoduché okraje jednotlivých buněk tabulky. • Po provedených úpravách vygenerujte HTML stránku, která musí všechny výše uvedené změny zohlednit.

  43. Zdroje • http://www.kosek.cz/clanky/xml/index.html • http://www.kosek.cz/clanky/xml/xml-xsl.html • http://help.seznam.cz/cz/specifikace-xml.html • Přednáška XML od Tomáše Kliegra

More Related