Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaMárton Lukács Megváltozta több, mint 9 éve
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
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.