Programrendszerek fejlesztése Bilicki Vilmos
A mai előadás tartalma: 2 XPath XSLT
Irodalom 3 Don Box: Essential XML us/dnxml/html/desxsdlib.asp us/dnxml/html/desxsdlib.asp
XSD 4 Típusokat definiálhatunk Beépített típusokat használhatunk ( Szűkítéses származtatás Az érték határok mellett a lexikális formátum is definiált (0,1-true,false) -> kompatibilitás
Értékek, Lexikális típusok 5 Beépített adattípusokat használhatunk
Típusok definiálása névtéren belül 6 A felhasználók definiálhatnak típusokat(UDT) Típus definiáláskor hasonlóan az OO nyelvekhez célszerű névtereket használni
Példa 7 <xsd:schema xmlns:xsd=" targetNamespace=" xmlns:tns="
XSD Alapelemek 8 Egyszerű típus: xsd:simpleType csak szöveges elemek értéke és attribútuma lehet Összetett típus: xsd:complexType struktúrát definiál Elem definiálása: xsd:element Attribútum definiálása: xsd:attribute Egyszerű típus konstrukció: xsd:restriction xsd:union xsd:list
Használatuk XML-ben 9... Vagy <genericId xmlns:x=" xmlns:xsi=" xsi:type="tns:AuthorId" >
Szűkítési minták 10 xsd:enumeration (lista) xsd:fractionDigits (a tizedesjegy után) xsd:length () xsd:maxExclusive xsd:maxInclusive xsd:maxLength xsd:minExclusive xsd:minInclusive xsd:minLength xsd:pattern xsd:totalDigits xsd:whiteSpace
Példa: Egyszerű típusok
Példa: Lexikális szűkítés
Példa: felsorolás
Példa: unió
Komplex típusok 15 xsd:complexType: xsd:sequence xsd:choice xsd:all ref névtér definiálás: ##any ##other ##targetNamespace ##local Lista
16
XPath 17 W3C szabvány Az XML dokumentumot faként kezeli Gyökér Elem Tulajdonság Szöveg Megjegyzés Feldolgozási információ Névterek Segítségével csomópontokat, vagy csomópontok csoportjait jelölhetjük ki Elérési útvonalak csomópontok kijelölésére XPath operátorok és függvények
Miért használjuk 18 Az XSLT stílus lapokban, minta illesztésre SQL Server-nél, XML-t is tud generálni XPointer-ben, a dokumentumok csatolására A DOM-ban,csomópontok kiválasztására XML XPath
XPath fa struktúra 19 XML dokumentum XPath faként <catalog xmlns="urn:litwareinc"> Blue jeans <catalog xmlns="urn:litwareinc"> Blue jeans "123" "Blue jeans" Root "urn:litware" "comment " "proc-instr" "urn:litwareinc"
A csomópontokból kinyerhető információk 20 Csomópont típusok Gyökér Egyed Tulajdonság Szöveg Névtér Feld. utasítások Megjegyzés Minden csomópont rendelkezik tulajdonságokkal Tulajdonságok Érték Név Szülő csomóp. Gyerek csomóp.
Elérési útvonalak 21 Elérési útvonal egy olyan XPath kifejezés mely XML dokumentumban egy vagy több elemet jelöl ki Lehet: Relatív A jelenlegi csomóponthoz viszonyítva Abszolút ”/” karakterrel kezdődik A gyökérhez viszonyítja
Elérési útvonalak 22 Útvonalat ábrázol Relatív útvonal Abszolút útvonal Balról jobbra vannak kiértékelve Útvonal az XML dokumentumban Minden lépés három részből áll Példa lépés product/price /catalog/product/price axis::node-test[predicate]… child::product[price > 35.95][3]
Tengelyek 23 self child descendant parent attribute descendant-or-self ancestor ancestor-or-self following following-sibling preceding-sibling preceding code=123 Root node code= code=
Tengelyek használata 24 A gyakori XPath tengelyeknek van rövidített alakja is A többinek nincs Példa – ancestor::node() Tengely child attribute self parent Példa teljes child::price attribute::code self::node() parent::node() Példa rövidített descendant-or-self//price/descendant-or-self()/price
Csomópont kritériumok 25 Név alapján Egy adott név Minden csomóp. Név és névtér Minden csomóp. a név.térben Típus alapján axis::node-type-function() Például a gyermek tengelyen: text() processing-instruction() comment() node() price * * aprefix:* aprefix:price Attribute examples
Predikátumok használata 26 Egy lépés egy vagy több predikátumot használhat Csomópont gyűjtemény szűrése Pozíció Tartalom Létezés alapján Több predikátumot is használhatunk Balról jobbra vannak kiértékelve axis::node-test[predicate]… product[last()]
Operátorok és függvények használata 27 Csomópont gyűjtemény kifejezések és függvények Logikai kifejezések és függvények Szám kifejezések és függvények Karakterlánc kifejezések és függvények
Csomópont gyűjtemény 28 Az elérési útvonalak csomópont gyűjteményt adnak vissza Csomópont gyűjteményeket (“ | ”) jellel tudunk összefűzni Gyűjtemény függvények is használhatóak cd | dvd (cd | /*/(cd | dvd) cd[position() = last()] > 5.8])
Logikai kifejezések 29 Logikai operátorok = != > >= < <= Logikai függvények Példa: product[(price > 25 and price 50] true() false() boolean() not() lang() and not(discount-policy)]
Szám kifejezések 30 Egyenlőtlenség Bináris operátorok, + - * div mod Függvények Példa account[balance >= - overdraft-limit] number() floor() ceiling() round() sum() account[sum(transaction-amount) > 0] account[(balance mod 100) > 0]
Karakterláncok 31 Kerekterlánc szűrő Karakterlánc módosító customer[ "Mac") ] customer[ "Mac") ] 1, 1) "]") normalize-space(" To be or not to be ") substring-before("12/3/1964", "/") or substring-after translate(str, "aeiou", "AEIOU")
Tanácsok 32 Rövidített szintaxist használjuk ha van Egyszerűbb karbantartani Kerüljük a túl általános kifejezéseket: // Ha tudjuk akkor szűkítsük le: /*/product Ne használjuk a count() –ot arra hogy megnézzük van-e eleme Használjuk a last()-ot Ne használjuk a name() a név vizsgálatra Használjuk a namespace-URI() és local-name() függvényeket helyette
Bevezetés az XSLT-be 33 Az XSLT alkalmazási területei Az XSLT mint deklaratív programozási nyelv XSLT stíluslap struktúra Minták definiálása Stíluslapok statikus használata Stíluslapok dinamikus használata
Az XSLT felhasználási területei 34 W3C gondozza XSL-ből származik Egy XML dokumentum más struktúrájú domukentummá konvertálása XML HTML-é konvertálása XML szöveggé konvertálása Adat szűrése, kinyerése, összefűzése
XSLT képességek 35 Sok különböző transzformációra képes Példák: Egy XML szintaxis másikra cserélése Adat szűrés Adat rendezés XML átstruktúrálás Számítások elvégzése
XML HTML-é transzformálás 36 XSLT XML dokumentum XSLT stílus lap + XSLT processor HTML dokumentum Reid … Reid … Reid … Reid …
XML más XML szintakszissá 37 Más szintakszis XML dokumentum XSLT stílus lap + XSLT processor Más XML nyelvtan Reid … Reid … <staff-member name="Reid" pay="91000"/> … <staff-member name="Reid" pay="91000"/> …
XSLT mint deklaratív programozási nyelv 38 Szabályokon, nem eljárásokon alapul A stílus lap szabályok bármilyen sorrendben végrehajthatóak A stílus lap szabályok egymástól függetlenek lehetnek A stílus lap szabályok független a bevitel, kimenet sorrendtől
XSLT stíluslap struktúra 39 Egy elem, vagy Felső szintű elemek. Pl.: sablon szabályok XSLT, Implementáció spec., Felh. Def. Utasítás elemek <xsl:template match="/"> … … … </xsl:template> <xsl:apply-templates select="employees/employee" /> <xsl:template match="employee"> … … … </xsl:template> <xsl:value-of select="name" />
Sablon szabályok definiálása 40 A csomópontok kiválasztása a egyezés tulajdonságával A gyökér elem sablon szabályának definiálása (megvalósítás függő) Kimenet produkálása a elemmel
Stíluslapok statikus használata 41 Stíluslap statikus használata egy XML dokumentumban Használjuk a elemet az XML dokumentumban Adjuk meg a stíluslap helyét … XML document content … … XML document content …
Stíluslapok dinamikus használata 42 XslTransform használata (jelenleg) XslCommand használata (2005) XslTransform xslttrans = new XslTransform(); eloadas\stylesheet0701.xsl"); eloadas\demo1eredmeny.txt", null); XslTransform xslttrans = new XslTransform(); eloadas\stylesheet0701.xsl"); eloadas\demo1eredmeny.txt", null); XsltCommand xslt = new XsltCommand(); xslt.OnMessageEvent += new QueryEventHandler(MessageCallBack); xslt.Compile("output.xsl"); xslt.Execute("books.xml", "books.html"); XsltCommand xslt = new XsltCommand(); xslt.OnMessageEvent += new QueryEventHandler(MessageCallBack); xslt.Compile("output.xsl"); xslt.Execute("books.xml", "books.html");
Sablon szabályok 43 Sablon szabályok definiálása Sablon tartalom definiálása Több sablon szabály használata Literális eredmény elemek használata
Sablon szabályok definiálása 44 A szintakszis a leggyakrabban alkalmazott elem match vagy name XSLT Fa Modell Az XSLT transzformációk sorrendje IE alap stíluslapja: res://msxml3.dll/defaultss.xsl
A sablon tartalom definiálása 45 a csomópont szöveges értékét írja ki a csomópont XML tartalmát írja ki James Wilson Kathryn Wilson Spouse James Wilson Kathryn Wilson Spouse
Sablon szabályok definiálása 46 <xsl:stylesheet version="1.0" xmlns:xsl=" Employees details, <xsl:stylesheet version="1.0" xmlns:xsl=" Employees details,
Szöveges eredmény elemek 47 HTML, szkript, vagy szöveg másolása a kimeneti fára XSLT részeket értelmezi az értelmező A névtér elemek kimásolódnak
Sablon szabály minták 48 XPath kifejezések használata A rekurzív művelet használata (//) Boolean operátorok használata employees/employee/empname //employee/empname employees/employee[type='full' or type='part']
Sablonok illesztése válogatott mintára 49 alapértelmezett működése A sablonokat a gyermek elemekre illeszti Csak adott gyermek elemekre illeszteni: A select tulajdonság segítségével
Névterek használata 50 <xsl:stylesheet version="1.0" xmlns:xsl=" xmlns:nw="urn:nwtraders" xmlns:con="urn:contoso" >, <xsl:stylesheet version="1.0" xmlns:xsl=" xmlns:nw="urn:nwtraders" xmlns:con="urn:contoso" >,
Csomópontok sorbarendezése 51 Az XSLT segítségével sorbarendezhetjük a csomópontokat Használjuk a a elemben Példa Minden elemre séma illesztés A elemek rendezése érték alapján
Több rendező kulcs definiálása 52 Több kulcsot is definiálhatunk Több elem segítségével Példa Rendezzük az elemeket szerint Majd az elemek azonos elemben név szerint vannak rendezve
Rendezés finomítása 53 a következő tulajdonságokkal rendelkezik: order – "ascending" vagy "descending" case-order – "upper-first" vagy "lower-first" lang – nyelv kód (pl.: "en") data-type – "text" vagy "number" Például Rendezzük az elemeket elem alapján csökkenő sorrendben <xsl:sort select="salary" order="descending" data-type="number"/> <xsl:sort select="salary" order="descending" data-type="number"/>
A kimenet testreszabása 54 Számok formázása A szám formátumok lokalizálása A szóközök kezelése Az eredmény dokumentum definiálása XML kimenet definiálása HTML és szöveg kimenet definiálása
Számok formázása 55 A format-number() segítségével format-number( , '#000') Használjuk a,-t mint csoportosító és a.-t mint decimális eválasztót format-number( , '#,000.00') , format-number(number, format-string) Gyakori megoldások 0 a szükséges és # az opcionális számra format-number() használata
Lokális szabályok 56 format-number()-ben Használjuk a -ot a lokalizált szám formátum definiálására <xsl:decimal-format name="Euro" grouping-separator="." decimal-separator=","/> <xsl:decimal-format name="Euro" grouping-separator="." decimal-separator=","/> format-number(1234.5, '#,000.00', 'Euro') 1.234,50 Példa
Kimeneti formátum 57 Az XSLT stílus lapok két fázisban dolgozódnak fel: Egy eredmény fa generálódik Az eredmény fa a kimeneti dokumentumba íródik A segítségével megadhatjuk a kimenet típusát XML kimenet HTML kimenet Szöveg kimenet
XML kimenet 58 Az XSLT két XML kimenet típust tud generálni Jól formázott XML dokumentumokat Külső általános egyedek Az elemben adhatjuk meg <xsl:output method="xml" encoding="iso " indent="yes" cdata-section-elements="company script" doctype-system="employees.dtd"/> <xsl:output method="xml" encoding="iso " indent="yes" cdata-section-elements="company script" doctype-system="employees.dtd"/>
HTML, Szöveg kimenet 59 A segítségével lehet a szöveget testreszabni A segítségével lehet a HTML kimenetet testreszabni <xsl:output method="html" encoding="iso " indent="yes"/> <xsl:output method="html" encoding="iso " indent="yes"/> <xsl:output method="text" encoding="us-ascii"/> <xsl:output method="text" encoding="us-ascii"/>
Stíluslapok beszúrása 60 Egy stíluslap felhasználhat másik stíluslapokat Ugyanúgy kell használnunk őket … … … … Starter.xsl … Példa
Stíluslapok importálása 61 Egy stíluslap felhasználhat másik stíluslapokat Az importált stíluslapok felülírhatóak … … Starter.xsl … Példa
Felülírt szabályok 62 Felülírás engedélyezése … … Starter.xsl Példa:
Ciklusok, elágazások 63 Ciklusok használata Sorbarendezés Elágazások
Ciklus 64 Csomópontok halmazán mehetünk végig A utasítás is ugyanezt csinálja Biztonságosabb, nem függ a szerkezeti változásoktól A ciklus gyorsabb és átláthatóbb Aktuális csomópont pozíciója: position()
Sorrend megadása 65 Az utasítás a utasításon belül Ugyanaz mint az eleme
Elágazások "> High Tax "> High Tax ">High ">Avg -- Low ">High ">Avg -- Low --
Hivatkozott dokumentumok használata 67 Regions.xml Philips R Philips R <xsl:value-of select="document('Regions.xml') <xsl:value-of select="document('Regions.xml') Employees.xml AddressbyRegion.xsl
A mai előadás tartalma: 68 XPath XSD XSLT
A következő előadás tartalma 69 JDBC