460 likes | 550 Vues
Learn about XSLT implementation in .NET web services, including styling rules, content ordering, and customization. Explore static and dynamic stylesheet usage, along with demos showcasing template rules and transformations. Discover the power of XSLT as a declarative programming language.
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