Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Tomáš Kliegr, David Chudán upravil D. Pejčoch

Podobné prezentace


Prezentace na téma: "Tomáš Kliegr, David Chudán upravil D. Pejčoch"— Transkript prezentace:

1 Tomáš Kliegr, David Chudán upravil D. Pejčoch
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 <?xml version=“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 Jedná se o zprostředkování prodeje Nápověda pro službu k dispozici na da-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ů: xml.html

6 XML Schema Syntaxe je založena XML, soubor má příponu .xsd
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 <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs=" <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:complexType name="SHOP_TYPE"> <xs:sequence minOccurs="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:complexType name="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ém poř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:simpleType name="PRODUCT_DESCRIPTION"> <xs:restriction base="xs:string"> <xs:minLength value="1"/> <xs:maxLength value="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:simpleType name="EAN_TYPE"> <xs:restriction base="xs:integer"> <xs:totalDigits value="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:simpleType name="EAN_TYPE"> <xs:restriction base="xs:integer"> <xs:pattern value="[0-9]{13}|[0-9]{8}"></xs:totalDigits> </xs:restriction>

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
<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet href="mujstyl.xsl" type="text/xsl"?> <dokument> ... </dokument>

16 Zpracování stylu - šablony
Jsou základem každého stylu, základní tvar je: <xsl:template match="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-of select="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:template match="SHOP"> Atribut match obsahuje 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-templates select="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:template match="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:template match="SHOPITEM"> <hr/> <h2><xsl:value-of select="PRODUCT"/></h2> <xsl:if test="AVAILABILITY>0"><font style="color:red">Pozor, tento produkt je k dodání až za <xsl:value-of select="AVAILABILITY"/>dní!</font></xsl:if> <table> <tr><td rowspan="4" ><img src="{IMGURL}" alt=""/></td><td>Popis</td><td><xsl:value-of select="DESCRIPTION"/></td></tr> <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> <xsl:if test="EAN"><tr><td>EAN kód</td><td><xsl:value-of select="EAN"/></td></tr></xsl:if> </table> </xsl:template>

24 SW - Kernow (opensource)
Program není nutné instalovat, stačí rozbalit a spustit

25 Úprava XML schématu a XML souboru
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
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. code completion 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

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 External validation 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 Associate schema 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 Apply transformation scenario, 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 ) 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
xsl.html xml.html Přednáška XML od Tomáše Kliegra


Stáhnout ppt "Tomáš Kliegr, David Chudán upravil D. Pejčoch"

Podobné prezentace


Reklamy Google