1 / 32

Extensible Markup Language

Extensible Markup Language. XSLT transzformációk. Hernyák Zoltán http://aries.ektf.hu/~hz hz@aries.ektf.hu. XML - XSLT. Extensible Style Sheet Language Transformation XSLT Ez egy ”programozási nyelv” XML-ben van a forráskód  feldolgoz egy XML filet

quinta
Download Presentation

Extensible Markup Language

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. Extensible Markup Language XSLT transzformációk Hernyák Zoltán http://aries.ektf.hu/~hz hz@aries.ektf.hu

  2. XML - XSLT Extensible Style Sheet Language Transformation XSLT Ez egy ”programozási nyelv” XML-ben van a forráskód  feldolgoz egy XML filet eredménye egy újabb HTML, CSS, XLS, XML file

  3. XML - XSLT • Kell egy „futtató” program hozzá (xslt feldolgozó) • Xalan (Java alapú) http://www.apache.org • Saxon (C# alapú) http://saxon.sourceforge.net/ transform.exe-xsl:person_templ.xls-s:person.xml -s:<forrás> az adatokat tartalmató xml file -xsl:<program> az xslt transzformációs program A program ”outputja” a transzformáció eredménye

  4. XML névterek Az XML elemeket névterekbe lehet rakni Több XML esetén az azonos nevű elemeket így lehet egymástól elkülöníteni Egy XML-en belül is hasznos, ha azonos nevű elemeknek más-más lehetséges tartalmi leírást adunk Első lépés: definiálni kell a névteret Második lépés: használni kell a névteret <java xmlns:java=”http://www.sun.com/java” xmlns:delphi=”http://www.borland.com/delphi”> …. <delphi:integer name=”a” value=”12” /> <java:integer name=”x” value=”34” /> </java>

  5. XML - XSLT <people> <person> <name>Jane Doe</name> <pet>Fluffy</pet> </person> </people> <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="person"> I found a person element! </xsl:template> </xsl:stylesheet> Az XSLT processor az xls névtér elemeit dolgozza fel

  6. XML - XSLT <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> …. </xsl:stylesheet> Az XSLT file ezzel kezdődik Innen ismeri majd fel a feldolgozó program mire számítson

  7. XML - XSLT <xsl:template match="person"> I found a person element! </xsl:template> Egy vagy több template van benne Egy ilyen template tartalma kiíródik, ha az XML file beolvasása közben egyezést talál a feldolgozó Template-k nem egymásba ágyazhatóak!

  8. XML - XSLT <people> <person> <name>Jane Doe</name> <pet>Fluffy</pet> </person> </people> Ebben a formában az apply-templates kiírja a tag-ekhez tartozó értékeket <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="person"> ---- person ----- <xsl:apply-templates /> </xsl:template> </xsl:stylesheet>

  9. XML - XSLT <xsl:template match="person"> -- A Person -- <xsl:apply-templates /> </xsl:template> <xsl:template match="name"> Name: <xsl:apply-templates /> </xsl:template> <xsl:template match="pet"> Pet: <xsl:apply-templates /> </xsl:template>

  10. XML - XSLT <?xml version="1.0"?> <xsl:stylesheet … > <xsl:output method=”text” /> <xsl:strip-space elements=”name pet” /> … </xsl:stylesheet> Output-method = text -> nem írja ki az xml fejlécet Output-method = html ->html kimenetet produkál Output-method = xml -> XML kimenetet produkál strip-space: a felsorolt elemek között eltávolítja a white-space-eket preserve-space: … megtartja a white space-eket (def.)

  11. XML - XSLT Készítsünk ilyet!

  12. XML - XSLT

  13. XML - XSLT Meg kell írni a template-t az elemekre

  14. XML - XSLT Az apply-templates feldolgozza a közbeeső elemeket <body> … </body> -t ki lehet írni XHTML kötelező (a tag-eket le is kell zárni!)

  15. XML - XSLT HTML tagokat tudunk beépíteni az outputba a megfelelő helyre

  16. XML - XPATH Leíró technika, elemeket azonosít egy XML-en belül A gyökér elemet / jel szimbolizálja /people/person/name - minden „name” elemet kiválaszt a /people/person-n belül

  17. XML – XPATH szabályok nodename - minden elem kiválasztása, akinek a szülője az adott nevű node / - kiindulás a gyökérelemből // - kiválasztja az aktuális elemből kiinduló minden elemet, bármely mélységbe . aktuális elem kiválasztása .. szülő elem kiválasztása @ attribútum-kiválasztás

  18. XML - XPATH person - minden elem kiválasztása, akinek a szülője „person” /people/person/name - minden „name” elemet kiválaszt a /people/person-n belül person//name - minden name kiválasztása, akinek a szülője „person” //name - minden „name” elemet kiválaszt az XML-en belül //pet/@breed - a pet elemek breed attribútumai //@* - minden attribútumot kiválaszt //@species - minden species attribútumot kiválaszt

  19. XML - XPATH Mivel gyakori, hogy egy Xpath útvonal több elemet is kiválaszt, de ezekből csak egy kell – prédikátumok kellenek a további azonosításhoz… //person[1] - az első találat //person[last()] - utolsó találat //person[last()-1] - utolsó előtti találat //pet[.=‘Fluffy’] . szimbolizálja az aktuális elemet kiválasztja azokat az elemeket, amelyeknek az értéke ‘Fluffy’ //pet[.=‘Fluffy’]/.. kiválasztja a szülő elemét, a ‘Fluffy’ értékű node-nak //name[contains(.,’Jane’)] minden „name” elemet, amelyben szerepel „Jane”

  20. XML - XPATH //pet[@breed] - az összes pet elem, amelynek van breed attr-a //pet[@breed=‘collie’] - az összes pet elem, amelynek van breed-ke amelynek értéke „collie” //pet[@breed=‘collie’]/.. a szülő elemek, amelyeknek van collie breed-jük //pet[@species=‘cat’] | //pet[@species=’dog’] az elemek melyek vagy cat-ok vagy dog-ok

  21. XML - XSLT <xsl:template match=”/people/person"> --- PEOPLE – <xsl:apply-templates /> </xsl:template> A match is egy XPATH leírás Ezen találat csak a fenti útvonalon talált person-okra illeszkedik rá <xsl:template match=”/"> <html> <body> <xls:apply-templates /> </body> </html> </xsl:template> Gyökér elemre illeszkedő template

  22. XML - XSLT <xsl:template match=”//name[@address]"> Name: <xsl:apply-templates /> (with address) </xsl:template> <xsl:template match=”name"> Name: <xsl:apply-templates /> </xsl:template> Ha van neki „address” property-je, akkor felső szabály szerint íródik ki, Ha nincs neki, akkor az alsó A sorrend nem számít az xsl-en belül

  23. XML - XSLT <xsl:template match=”//name[@address]"> Name: <xsl:apply-templates /> (with address) </xsl:template> <xsl:template match=”name"> Name: <xsl:apply-templates /> </xsl:template> Ha van neki „address” property-je, akkor felső szabály szerint íródik ki, Ha nincs neki, akkor az alsó A sorrend nem számít az xsl-en belül

  24. XML – XSLTtengelyek ancestor minden ős (felfelé rekúrzívan) ancestor-or-self saját maga és minden őse attribute az aktuális node összes attribútuma child az aktuális node összes gyerek node-ja descendant minden gyerek node (lefelé rekúrzívan)

  25. XML – XSLTtengelyek following az aktuális node bezáró tagja után _minden_ following-sibling az akt.node után következő minden testvér namespace az akt.node minden névtér node -ja parent az őse az akt.node-nak preceding a megelőző tartalom (akt.node előtti tartalom) preceding-sibling node előtti összes testvér self saját maga

  26. XML – XSLTtengelyek child::book minden „book” ami gyerekeleme az akt.node-nak child::* az akt.node minden gyerekeleme descendant::book az akt.node alatt bárhol szereplő „book”-k ancestor::book felettünk bárhol szereplő „book”-k child::*/child::price 2 szinttel alattunk lévő „price” elemek //pet[@breed=’calico’]/parent::* minden pet element, amelynek van „breed” attribútuma, amely „calico” értékű

  27. XML - XSLT Elem értékének lekérése: value-of Az aktuális node alatti gyerek elemek közül a name értéke <xsl:value-ofselect=”name” /> Az aktuális node „breed” attribútumának értéke <xsl:value-ofselect=”@breed” />

  28. XML - XSLT XSLT transzformációban alkalmazni a value-of -t <xsl:templatematch="pet"> <b>Pet: </b> <xsl:apply-templates /><br /> Species: <xsl:value-of select="@species" /><br /> Breed: <xsl:value-of select="@breed" /><br /> </xsl:template>

  29. XML - XSLT @* minden attribútum kiválasztása name() megadja az attribútum nevét <xsl:templatematch="@*"> <xsl:value-ofselect="name()" /> : <xsl:value-ofselect="." /><br /> </xsl:template>

  30. XML - XSLT Feltételes output készítése <xsl:iftest=”… kifejezés …” /> … szöveg kiiírás … </xls:if> <xsl:iftest=”@species=‘cat’” /> <imgsrc=”cat.gif” /><br> </xls:if>

  31. XML - XSLT Feltételes output készítése <xsl:iftest=”@species=‘cat’” /> <imgsrc=”cat.gif” /><br> </xls:if>

  32. XML - XSLT Készítsünk el egy DVD nyilvántartó XML filet. Egy DVD-t jellemez a címe, kiadás éve, ára. A DVD kategóriáját adjuk meg attribútum formájában (akció|zene|rajzfilm). Ezen XML file alapján készítsünk el egy HTML outputot, ahol a DVD címe legyen pirossal írva, ha az akciófilm, egy DVD film információi egy sorba kerüljenek. Készítsünk el egy CSV kimenetet is, vesszővel tagolt text file, melyet Excelben be lehet olvasni.

More Related