Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Programrendszerek fejlesztése Bilicki Vilmos bilickiv@inf.u-szeged.hu
2
A mai előadás tartalma: 2 XPath XSLT
3
Irodalom 3 Don Box: Essential XML http://msdn.microsoft.com/library/default.asp?url=/library/en- us/dnxml/html/desxsdlib.asp http://msdn.microsoft.com/library/default.asp?url=/library/en- us/dnxml/html/desxsdlib.asp http://www.w3.org/TR/xmlschema-2/#built-in-datatypes http://www.w3.org/TR/xmlschema-2/#built-in-datatypes http://www.zvon.org/xxl/XSLTutorial/Books/Book1/ http://www.zvon.org/xxl/XSLTutorial/Books/Book1/
4
XSD 4 Típusokat definiálhatunk Beépített típusokat használhatunk (http://www.w3.org/TR/xmlschema-2/)http://www.w3.org/TR/xmlschema-2/ 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
5
Értékek, Lexikális típusok 5 Beépített adattípusokat használhatunk
6
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
7
Példa 7 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.org/publishing" xmlns:tns="http://example.org/publishing">...
8
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
9
Használatuk XML-ben 9... Vagy <genericId xmlns:x="http://example.org/publishing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="tns:AuthorId" >333-33-3333
10
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
11
Példa: Egyszerű típusok 11......
12
Példa: Lexikális szűkítés 12......
13
Példa: felsorolás 13......
14
Példa: unió 14......
15
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
16
17
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
18
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
19
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"
20
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.
21
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
22
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]
23
Tengelyek 23 self child descendant parent attribute descendant-or-self ancestor ancestor-or-self following following-sibling preceding-sibling preceding 35.99 22.95 25 185.00 35.99 22.95 25 185.00 35.99 code=123 Root node code=456 22.95 code=789 185.00 25
24
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 price @code... descendant-or-self//price/descendant-or-self()/price
25
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 Child examples @code @* @aprefix:* @aprefix:code Attribute examples
26
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()] product[@code="123"] product[3][@discount] product[@code]
27
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
28
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 | dvd)/@capacity /*/(cd | dvd) cd[position() = last()] count(cd[@capacity > 5.8])
29
Logikai kifejezések 29 Logikai operátorok = != > >= < <= Logikai függvények Példa: product[(price > 25 and price 50] true() false() boolean() not() lang() product[not(@code) and not(discount-policy)]
30
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]
31
Karakterláncok 31 Kerekterlánc szűrő Karakterlánc módosító string-length(customer/@last-name) customer[ contains(@last-name, "Mac") ] customer[ starts-with(@last-name, "Mac") ] substring(@middle-name, 1, 1) concat(@last-name, "[", @first-name, "]") normalize-space(" To be or not to be ") substring-before("12/3/1964", "/") or substring-after translate(str, "aeiou", "AEIOU")
32
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
33
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
34
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
35
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
36
XML HTML-é transzformálás 36 XSLT XML dokumentum XSLT stílus lap + XSLT processor HTML dokumentum Reid 91000 … Reid 91000 … Reid 91000 … Reid 91000 …
37
XML más XML szintakszissá 37 Más szintakszis XML dokumentum XSLT stílus lap + XSLT processor Más XML nyelvtan Reid 91000 … Reid 91000 … <staff-member name="Reid" pay="91000"/> … <staff-member name="Reid" pay="91000"/> …
38
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
39
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" />
40
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
41
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 …
42
Stíluslapok dinamikus használata 42 XslTransform használata (jelenleg) XslCommand használata (2005) XslTransform xslttrans = new XslTransform(); xslttrans.Load(@"D:\users\bilickiv\dotnet\7es eloadas\stylesheet0701.xsl"); xslttrans.Transform(@"D:\users\bilickiv\dotnet\7es eloadas\demo0701.xml“, @"D:\users\bilickiv\dotnet\7es eloadas\demo1eredmeny.txt", null); XslTransform xslttrans = new XslTransform(); xslttrans.Load(@"D:\users\bilickiv\dotnet\7es eloadas\stylesheet0701.xsl"); xslttrans.Transform(@"D:\users\bilickiv\dotnet\7es eloadas\demo0701.xml“, @"D:\users\bilickiv\dotnet\7es 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");
43
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
44
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
45
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 425123456 James Wilson Kathryn Wilson Spouse 425123456
46
Sablon szabályok definiálása 46 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> Employees details, <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> Employees details,
47
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
48
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']
49
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
50
Névterek használata 50 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:nw="urn:nwtraders" xmlns:con="urn:contoso" >, <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:nw="urn:nwtraders" xmlns:con="urn:contoso" >,
51
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
52
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
53
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"/>
54
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
55
Számok formázása 55 A format-number() segítségével format-number(12345.729, '#000') Használjuk a,-t mint csoportosító és a.-t mint decimális eválasztót format-number(12345.729, '#,000.00') 12346 12,345.73 format-number(number, format-string) Gyakori megoldások 0 a szükséges és # az opcionális számra format-number() használata
56
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
57
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
58
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-8859-1" indent="yes" cdata-section-elements="company script" doctype-system="employees.dtd"/> <xsl:output method="xml" encoding="iso-8859-1" indent="yes" cdata-section-elements="company script" doctype-system="employees.dtd"/>
59
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-8859-1" indent="yes"/> <xsl:output method="html" encoding="iso-8859-1" indent="yes"/> <xsl:output method="text" encoding="us-ascii"/> <xsl:output method="text" encoding="us-ascii"/>
60
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
61
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
62
Felülírt szabályok 62 Felülírás engedélyezése … … Starter.xsl Példa:
63
Ciklusok, elágazások 63 Ciklusok használata Sorbarendezés Elágazások
64
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()
65
Sorrend megadása 65 Az utasítás a utasításon belül Ugyanaz mint az eleme
66
Elágazások 66 50000"> High Tax -- 50000"> High Tax -- 50000">High -- 25000">Avg -- Low -- 50000">High -- 25000">Avg -- Low --
67
Hivatkozott dokumentumok használata 67 Regions.xml Philips R Philips R <xsl:value-of select="document('Regions.xml') //region[@code=current()/rgn]/@place"/> <xsl:value-of select="document('Regions.xml') //region[@code=current()/rgn]/@place"/> Employees.xml AddressbyRegion.xsl
68
A mai előadás tartalma: 68 XPath XSD XSLT
69
A következő előadás tartalma 69 JDBC
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.