Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Programrendszerek fejlesztése Bilicki Vilmos

Hasonló előadás


Az előadások a következő témára: "Programrendszerek fejlesztése Bilicki Vilmos"— Előadás másolata:

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 ...

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 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 Blue jeans 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 …

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 … … … … … …

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 Employees details, 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 , ,

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

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 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

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

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 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


Letölteni ppt "Programrendszerek fejlesztése Bilicki Vilmos"

Hasonló előadás


Google Hirdetések