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


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

Hasonló előadás


Google Hirdetések