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

1 Fejlett Programozási Technikák 2. 15/2. Fejlett Programozási Technológiák 2. 2 A mai előadás tartalma: DTD XSD XPath XSLT.

Hasonló előadás


Az előadások a következő témára: "1 Fejlett Programozási Technikák 2. 15/2. Fejlett Programozási Technológiák 2. 2 A mai előadás tartalma: DTD XSD XPath XSLT."— Előadás másolata:

1 1 Fejlett Programozási Technikák 2. 15/2

2 Fejlett Programozási Technológiák 2. 2 A mai előadás tartalma: DTD XSD XPath XSLT

3 Fejlett Programozási Technológiák 2. 3 Irodalom 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.zvon.org/xxl/XSLTutorial/Books/Book1/

4 Fejlett Programozási Technológiák 2. 4 Aktuális a téma? Microsoft: Az XML alapú technológiák adnak lehetőséget a komponensek együttműködésére. Oracle: Az OTN magazin több mint 1/3-ad része webes technológiákkal foglalkozik. Integráció

5 Fejlett Programozási Technológiák 2. 5 DTD Öndokumentálás  Nyelvtan  Elemkészlet Hibadetektálás (B2B)

6 Fejlett Programozási Technológiák 2. 6 Példa <!ELEMENT Pelda1:Feladat (Pelda1:vegrehajto, Pelda1:megbizo, Pelda1:hatarido)>

7 Fejlett Programozási Technológiák 2. 7 Ismétlődés operátorok Nincs Pontosan egyszer kell szerepelnie ? Egyszer vagy egyszer sem + Legalább egyszer * Akárhányszor (0 is) <!ELEMENT Pelda1:Feladat ((Pelda1:vegrehajto, Pelda1:hatarido))+, Pelda1:megbizo)>

8 Fejlett Programozási Technológiák 2. 8 Tulajdonságok Módosító: #IMPLIED -- Nem feltétlenül szükséges. #REQUIRED -- Szükséges. #FIXED-- Kötelező a jelenléte és az értéke egyaránt. ”alapértelmezett érték”

9 Fejlett Programozási Technológiák 2. 9 XML Schema Definition Language XML elemkészletet és nyelvtant definiál XML szintaxist használ (SAX,DOM) A legtöbb programnyelvben használt adattípusokat használhatjuk A névterek használata lehetővé teszi több séma egybeolvasztását

10 Fejlett Programozási Technológiák 2. 10 XSD 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

11 Fejlett Programozási Technológiák 2. 11 Értékek, Lexikális típusok Beépített adattípusokat használhatunk

12 Fejlett Programozási Technológiák 2. 12 Típusok definiálása névtéren belül 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

13 Fejlett Programozási Technológiák 2. 13 Példa <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.org/publishing" xmlns:tns="http://example.org/publishing">...

14 Fejlett Programozási Technológiák 2. 14 XSD Alapelemek 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

15 Fejlett Programozási Technológiák 2. 15 Használatuk XML-ben... Vagy <genericId xmlns:x="http://example.org/publishing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="tns:AuthorId" >333-33-3333

16 Fejlett Programozási Technológiák 2. 16 Szűkítési minták 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

17 Fejlett Programozási Technológiák 2. 17 Példa: Egyszerű típusok......

18 Fejlett Programozási Technológiák 2. 18 Példa: Lexikális szűkítés......

19 Fejlett Programozási Technológiák 2. 19 Példa: felsorolás......

20 Fejlett Programozási Technológiák 2. 20 Példa: unió......

21 Fejlett Programozási Technológiák 2. 21 Komplex típusok xsd:complexType:  xsd:sequence  xsd:choice  xsd:all  ref névtér definiálás:  ##any  ##other  ##targetNamespace  ##local  Lista

22 Fejlett Programozási Technológiák 2. 22

23 Fejlett Programozási Technológiák 2. 23 XPath 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

24 Fejlett Programozási Technológiák 2. 24 Miért használjuk 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

25 Fejlett Programozási Technológiák 2. 25 Csomópont információk XPath fa struktúra és csomópont típusok A csomópontokbó kinyerhető információk DOM használata

26 Fejlett Programozási Technológiák 2. 26 XPath fa struktúra 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"

27 Fejlett Programozási Technológiák 2. 27 A csomópontokból kinyerhető információk Tulajdonságok  Érték  Név  Szülő csomóp.  Gyerek csomóp. 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

28 Fejlett Programozási Technológiák 2. 28 Elérési útvonalak 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

29 Fejlett Programozási Technológiák 2. 29 Elérési útvonalak Ú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]

30 Fejlett Programozási Technológiák 2. 30 Tengelyek 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

31 Fejlett Programozási Technológiák 2. 31 Tengelyek használata 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

32 Fejlett Programozási Technológiák 2. 32 Csomópont kritériumok 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

33 Fejlett Programozási Technológiák 2. 33 Predikátumok használata Egy lépés egy vagy több predikátumot használhat Csomópont gyűjtemény szűrése  Pozíció  Partalom  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]

34 Fejlett Programozási Technológiák 2. 34 Operátorok és függvények használata 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

35 Fejlett Programozási Technológiák 2. 35 Csomópont gyűjtemény 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])

36 Fejlett Programozási Technológiák 2. 36 Logikai kifejezések 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)]

37 Fejlett Programozási Technológiák 2. 37 Szám kifejezések 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]

38 Fejlett Programozási Technológiák 2. 38 Karakterláncok 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")

39 Fejlett Programozási Technológiák 2. 39 Tanácsok Rövidített szintakszist 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

40 Fejlett Programozási Technológiák 2. 40 Bevezetés az XSLT-be 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 Demó

41 Fejlett Programozási Technológiák 2. 41 Az XSLT felhasználási területei 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

42 Fejlett Programozási Technológiák 2. 42 XSLT képességek 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

43 Fejlett Programozási Technológiák 2. 43 XSLT XML HTML-é transzformálás XML dokumentum XSLT stílus lap + XSLT processor HTML dokumentum Reid 91000 … Reid 91000 … Reid 91000 … Reid 91000 …

44 Fejlett Programozási Technológiák 2. 44 XML más XML szintakszissá 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"/> …

45 Fejlett Programozási Technológiák 2. 45 XSLT mint deklaratív programozási nyelv 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

46 Fejlett Programozási Technológiák 2. 46 XSLT stíluslap struktúra 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" />

47 Fejlett Programozási Technológiák 2. 47 Sablon szabályok definiálása 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

48 Fejlett Programozási Technológiák 2. 48 Stíluslapok statikus használata 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 …

49 Fejlett Programozási Technológiák 2. 49 Stíluslapok dinamikus használata 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");

50 Fejlett Programozási Technológiák 2. 50 Sablon szabályok 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

51 Fejlett Programozási Technológiák 2. 51 Sablon szabályok definiálása 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

52 Fejlett Programozási Technológiák 2. 52 A sablon tartalom definiálása 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

53 Fejlett Programozási Technológiák 2. 53 Sablon szabályok definiálása <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,

54 Fejlett Programozási Technológiák 2. 54 Szöveges eredmény elemek 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

55 Fejlett Programozási Technológiák 2. 55 Sablon szabály minták 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']

56 Fejlett Programozási Technológiák 2. 56 Sablonok illesztése válogatott mintára 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

57 Fejlett Programozási Technológiák 2. 57 Névterek használata <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" >,

58 Fejlett Programozási Technológiák 2. 58 Ajánlott megoldások Használjunk explicit névtereket  Ez lehetővé teszi az elem nevek szabad használatát Definiáljunk szabályokat a gyökér elemre  Ekkor biztosak lehetünk a kódunk működésében

59 Fejlett Programozási Technológiák 2. 59 Csomópontok sorbarendezése 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

60 Fejlett Programozási Technológiák 2. 60 Több rendező kulcs definiálása 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

61 Fejlett Programozási Technológiák 2. 61 Rendezés finomítása 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"/>

62 Fejlett Programozási Technológiák 2. 62 A kimenet testreszabása 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

63 Fejlett Programozási Technológiák 2. 63 format-number(12345.729, '#000') Használjuk a,-t mint csoportosító és a.-t mint decimális eválasztót Számok formázása A format-number() segítségével 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

64 Fejlett Programozási Technológiák 2. 64 Használjuk a -ot a lokalizált szám formátum definiálására Lokális szabályok format-number()-ben <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

65 Fejlett Programozási Technológiák 2. 65 A B C Hello World a white space node a text node another text node Hello World Hello World Példák Szóköz eltávolítása minden elemből Szóköz megtartása megadott csomópontoknál Szóköz eltváloítása megadott csomópontokból Szóköz eltávolítása Szóköz megtartása Szóköz kezelése

66 Fejlett Programozási Technológiák 2. 66 Kimeneti formátum 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

67 Fejlett Programozási Technológiák 2. 67 XML kimenet Az XSLT két XML kimenet típust tud generálni  Jól formázott XML dokumentumokat  Külső álltalá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"/>

68 Fejlett Programozási Technológiák 2. 68 A segítségével lehet a HTML kimenetet testreszabni HTML, Szöveg kimenet A segítségével lehet a szöveget 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"/>

69 Fejlett Programozási Technológiák 2. 69 … … … … Starter.xsl Stíluslapok beszúrása Egy stíluslap felhasználhat másik stíluslapokat  Ugyanúgy kell használnunk őket … Példa

70 Fejlett Programozási Technológiák 2. 70 Stíluslapok importálása Egy stíluslap felhasználhat másik stíluslapokat  Az importált stíluslapok felülírhatóak … … Starter.xsl … Példa

71 Fejlett Programozási Technológiák 2. 71 Felülírt szabályok Felülírás engedélyezése … … Starter.xsl Példa:

72 Fejlett Programozási Technológiák 2. 72 Több stíluslapot tudunk beilleszteni és importálni  Import precedence rules apply Import sorrend New.xsl import A.xsl include C.xsl include E.xsl … import A.xsl include C.xsl include E.xsl … A.xsl C.xsl import D.xsl D.xsl … … E.xsl import F.xsl F.xsl … … import B.xsl B.xsl … …

73 Fejlett Programozási Technológiák 2. 73 Tippek Definiáljunk konzisztens numerikus formátumot Ne használjuk az elemet amíg nem szükséges  Az XSLT gyakran kitalálja a követelményeket Definiáljunk könyvtárakat az atomi műveleteknek  Újrahasznosítás:, testreszabás:  Konzisztencia, skálázhatóság  Fejlesztési, karbantartási idő csökken

74 Fejlett Programozási Technológiák 2. 74 A következő előadás tartalma Menedzselt kód


Letölteni ppt "1 Fejlett Programozási Technikák 2. 15/2. Fejlett Programozási Technológiák 2. 2 A mai előadás tartalma: DTD XSD XPath XSLT."

Hasonló előadás


Google Hirdetések