460 likes | 548 Views
.NET web szolgáltatások. XSLT Bilicki Vilmos bilickiv@inf.u-szeged.hu www.inf.u-szeged.hu/~bilickiv. A z el őző előadás tartalma. ASP .NET felhasználó azonosítás IIS Név nélküli Alap Kivonatolt Windows beágyazott Űrlap alapú Microsoft Passport XML kezelés XML dokumentum
E N D
.NET web szolgáltatások XSLT Bilicki Vilmos bilickiv@inf.u-szeged.hu www.inf.u-szeged.hu/~bilickiv
Azelőző előadás tartalma • ASP.NETfelhasználó azonosítás • IIS • Név nélküli • Alap • Kivonatolt • Windows beágyazott • Űrlap alapú • Microsoft Passport • XML kezelés • XML dokumentum • XPATH kifejezések • Bevezető • XPath adat modell • Navigálás a dokumentumban elérési utak segítségével • Operátorok és Függvények használata elérési utakban
Az előadás tartalma • Bevezetés az XSLT-be • Bevezetés az XSLT-be • Sablon szabályok • Fejlett sablon szabályok • Stíluslapok kombinálása • A dokumentum tartalom sorbarendezése • A kimenet testreszabása • Stíluslapok beszúrása és importálása
Források • Microsoft 1913A official curriculum • http://www.gotdotnet.com/ • Eszköz • http://www.xmlcooktop.com/
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ó
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
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
XSLT stíluslap struktúra • Egy <xsl:stylesheet> elem, vagy <xsl:transform> • Felső szintű elemek. Pl.: sablon szabályok • XSLT, Implementáció spec., Felh. Def. • Utasítás elemek <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> </xsl:stylesheet> <xsl:template match="/"> … … … </xsl:template> <xsl:apply-templates select="employees/employee" /> <xsl:template match="employee"> … … … </xsl:template> <xsl:value-of select="name" />
Sablon szabályok definiálása • A csomópontok kiválasztása a <xsl:template> egyezés tuladjonsá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 <xsl:value-of> elemmel <xsl:template match= "/"> <xsl:value-of select="//employee"/> </xsl:template>
Stíluslapok statikus használata • Stíluslap statikus használata egy XML dokumentumban • Használjuk a <?xml-stylesheet …?> elemet az XML dokumentumban • Adjuk meg a stíluslap helyét <?xml-stylesheet type="text/xsl" href="MySheet.xsl"?> <employees> … XML document content … </employees>
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); XsltCommand xslt = new XsltCommand(); xslt.OnMessageEvent += new QueryEventHandler(MessageCallBack); xslt.Compile("output.xsl"); xslt.Execute("books.xml", "books.html");
DEMÓ 1 • Statikus XSLT sablon használat • Dinamikus XSLT sablon használat • Informatika weboldal
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
Sablon szabályok definiálása • A <xsl:template> szintakszis a leggyakrabban alkalmazott elem • match vagy name • XSLT Fa Modell • Az XSLT transzformációk sorrendje • <apply-templates> • IE alap stíluslapja: • res://msxml3.dll/defaultss.xsl
A sablon tartalom definiálása • <xsl:value-of> a csomópont szöveges értékét írja ki • <xsl:copy-of> a csomópont XML tartalmát írja ki <xsl:template match="employee"> <xsl:value-of select="name"/> <xsl:copy-of select="emergencycontact"/> </xsl:template> James Wilson <emergencycontact> <name>Kathryn Wilson</name> <relationship>Spouse</relationship> <contactnumber>425123456</contactnumber> </emergencycontact>
Sablon szabályok definiálása <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <HTML><xsl:apply-templates/> </HTML> </xsl:template> <xsl:template match="employees"> <H1>Employees details</H1> <xsl:apply-templates/> </xsl:template> <xsl:template match="employee"> <xsl:value-of select="name"/>, <xsl:value-of select="salary"/> </xsl:template> </xsl:stylesheet>
Szöveges eredmény elemek • HTML, szkript, vagyszövegmásolása a kimeneti fára • XSLT részeket értelmezi az értelmező • A névtér elemek kimásolódnak
Fejlett sablon szabályok • Sablon szabály minták • Sablonok alkalmazása válogatott csomópontokra • Névterek használata stíluslapokban • Demó 2
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']
Sablonok illesztése válogatott mintára • <xsl:apply-templates> alapértelmezett működése • A sablonokat a gyermek elemekre illeszti • Csak adott gyermek elemekre illeszteni: • Aselecttulajdonság segítségével <xsl:apply-templates> <xsl:template match="/"> <xsl:apply-templates select=”employee”/> </xsl:apply-templates>
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:template match="nw:employee"> <xsl:value-of select="nw:name"/> </xsl:template> <xsl:template match="con:employee"> <xsl:value-of select="con:surname"/>, <xsl:value-of select="con:given-name"/>, </xsl:template> </xsl:stylesheet>
DEMÓ 2. • Apply-template • Néhány XPath kifejezés • Select
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
Tartalom sorbarendezése • Csomópontok rendezése • Több rendezési kulcs definiálása • A sorbarendezés finomítása • DEMÓ 3
Csomópontok sorbarendezése • Az XSLT segítségével sorbarendezhetjük a csomópontokat • Használjuk a <xsl:sort> a <xsl:apply-templates> elemben • Példa • Minden <employee> elemre séma illesztés • A <employee> elemekrendezése <name> érték alapján <xsl:apply-templates select="employee"> <xsl:sort select="name"/> </xsl:apply-templates>
Több rendező kulcs definiálása • Több kulcsot is definiálhatunk • Több <xsl:sort> elem segítségével • Példa • Rendezzük az <employee> elemeket <region> szerint • Majd az <employee> elemek azonos <region> elemben név szerint vannak rendezve <xsl:apply-templates select="employee"> <xsl:sort select="region"/> <xsl:sort select="name"/> </xsl:apply-templates>
Rendezés finomítása • <xsl:sort> 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 <employee> elemeket <salary> elem alapján csökkenő sorrendben <xsl:apply-templates select="employee"> <xsl:sort select="salary" order="descending" data-type="number"/> </xsl:apply-templates>
DEMÓ 3 • Sorbarendezés • Növekvő • Csökkenő • Többszintű
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
Számok formázása • A format-number() segítségével format-number(number, format-string) • Gyakori megoldások • 0 a szükségesés # az opcionális számra • Használjuk a ,-t mint csoportosító és a .-t mint decimális eválasztót format-number(12345.729, '#000') 12346 format-number(12345.729, '#,000.00') 12,345.73 • format-number() használata <xsl:value-of select="format-number(salary, '#.00')"/>
Lokális szabályok • format-number()-ben • Használjuk a <xsl:decimal-format> -ot a lokalizált szám formátum definiálására • Példa <xsl:decimal-format name="Euro" grouping-separator="." decimal-separator=","/> format-number(1234.5, '#,000.00', 'Euro') 1.234,50
<A><B>Hello</B> <C>World</C></A> • Szóköz eltávolítása <xsl:strip-space> • Szóköz megtartása <xsl:preserve-space> • Példák • Szóköz eltávolítása minden elemből A <xsl:strip-space elements="*"/> B C • Szóköz eltváloítása megadott csomópontokból <xsl:strip-space elements="name address"/> a white space node Hello World • Szóköz megtartása megadott csomópontoknál <xsl:strip-space elements="*"/> <xsl:preserve-space elements="paragraph heading"/> another text node a text node Szóköz kezelése
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 <xsl:output> segítségével megadhatjuk a kimenet típusát • XML kimenet • HTML kimenet • Szöveg kimenet <xsl:output method="xml"… /> <xsl:output method="html"… /> <xsl:output method="text"… />
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 <xsl:output method="xml"/> elemben adhatjuk meg <xsl:output method="xml" encoding="iso-8859-1" indent="yes" cdata-section-elements="company script" doctype-system="employees.dtd"/>
HTML, Szöveg kimenet • A <xsl:output method="html"/> segítségével lehet a HTML kimenetet testreszabni • A <xsl:output method="text"/> segítségével lehet a szöveget testreszabni <xsl:output method="html" encoding="iso-8859-1" indent="yes"/> <xsl:output method="text" encoding="us-ascii"/>
DEMÓ 4. • Formázás • Számok • Szóközök • Kimenet testreszabása • XML • HTML • Szöveg
<xsl:stylesheet…> … </xsl:stylesheet> Starter.xsl Stíluslapok beszúrása • Egy stíluslap felhasználhat másik stíluslapokat • Ugyanúgy kell használnunk őket • Példa … <xsl:stylesheet…> … </xsl:stylesheet> <xsl:include href="Starter.xsl"/> <!–– use included rules ––>
<xsl:stylesheet…> … </xsl:stylesheet> Starter.xsl Stíluslapok importálása • Egy stíluslap felhasználhat másik stíluslapokat • Az importált stíluslapok felülírhatóak • Példa … <xsl:stylesheet…> </xsl:stylesheet> <xsl:import href="Starter.xsl"/> <!–– use or override imported rules ––>
<xsl:stylesheet…> <xsl:template match="salary"> … </xsl:stylesheet> Starter.xsl Felülírt szabályok • Felülírás engedélyezése <xsl:apply-imports> • Példa: <xsl:stylesheet…> <xsl:import href="Starter.xsl"/> </xsl:stylesheet> <xsl:template match="salary"> </xsl:template> <B> <xsl:apply-imports/> </B>
D.xsl B.xsl … … E.xsl F.xsl import F.xsl … Import sorrend • Több stíluslapot tudunk beilleszteni és importálni • Import precedence rules apply A.xsl import B.xsl New.xsl import A.xsl include C.xsl include E.xsl … C.xsl import D.xsl
Tippek • Definiáljunk konzisztens numerikus formátumot • Ne használjuk az <xsl:output> 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: <xsl:include>, testreszabás: <xsl:import> • Konzisztencia, skálázhatóság • Fejlesztési, karbantartási idő csökken
Az előadás tartalma • Bevezetés az XSLT-be • Bevezetés az XSLT-be • Sablon szabályok • Fejlett sablon szabályok • Stíluslapok kombinálása • A dokumentum tartalom sorbarendezése • A kimenet testreszabása • Stíluslapok beszúrása és importálása
ZH tartalom • Web szolgáltatások • SOA • .NET platform • Architektúra • Objektumok • Meta Adatok • Futtató környezet • Szemétgyűjtő • ADO.NET • Adatközpontú alkalmazás • Csatlakozás adatforrásokhoz • Online műveletek • Offline műveletek
ZH tartalom • ASP.NET • Web űrlapok • Vezérlés, megjelenítés elkülönítése • Követés, hibakeresés • Felhasználói bevitel ellenőrzése • Web űrlapok • Vezérlés, megjelenítés elkülönítése • Követés, hibakeresés • Felhasználói bevitel ellenőrzése • Saját vezérlők gyártása • Állapot kezelés • Gyorstár kezelés
ZH tartalom • XPATH • XML dokumentum • XPATH kifejezések • Bevezető • XPath adat modell • Navigálás a dokumentumban elérési utak segítségével • Operátorok és Függvények használata elérési utakban • XSLT • Bevezetés az XSLT-be • Bevezetés az XSLT-be • Sablon szabályok • Fejlett sablon szabályok • Stíluslapok kombinálása • A dokumentum tartalom sorbarendezése • A kimenet testreszabása • Stíluslapok beszúrása és importálása