net web szolgáltatások
DESCRIPTION
.NET web szolgáltatások. XSLT programozás XSLT hivatkozások Bilicki Vilmos [email protected] www.inf.u-szeged.hu/~bilickiv. Kötelező feladat. Két fős csoportok NIM játék megvalósítása 1 függvény (WSDL-ben fogom definiálni) Game() Regisztráció az UDDI-ban fellelt Játékmesterben - PowerPoint PPT PresentationTRANSCRIPT
2
Kötelező feladat Két fős csoportok
NIM játék megvalósítása• 1 függvény (WSDL-ben fogom definiálni)
• Game()
• Regisztráció az UDDI-ban fellelt Játékmesterben
Csoport honlap létrehozása• Lehessen
• Vezérelni a NIM játékot• Statisztikát nézegetni
3
Az előző előadás tartalma Bevezetés az XSLT-be
Bevezetés az XSLT-beSablon szabályokFejlett sablon szabályok
Stíluslapok kombinálásaA dokumentum tartalom sorbarendezéseA kimenet testreszabásaStíluslapok beszúrása és importálása
4
XSLT stíluslap struktúra Egy <xsl:stylesheet> elem, vagy <xsl:transform>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
</xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
</xsl:stylesheet>
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" />
5
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>
<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>
6
Rendezés <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>
<xsl:apply-templates select="employee"> <xsl:sort select="salary" order="descending" data-type="number"/></xsl:apply-templates>
7
Az előadás tartalma XSLT programozás
Nevesített sablonokVáltózó, paraméterekCiklusok, feltételek
XSLT hivatkozásokTöbb XML dokumentum használata egy
stíluslapbanKereszthivatkozásokKereszthivatkozások az eredmény
dokumentumban
8
Források Microsoft 1913A official curriculum
http://www.gotdotnet.com/ Eszköz
http://www.xmlcooktop.com/
9
XSLT programozás Nevesített minták
Definiálása Hivatkozás nevesített mintára
Váltózó, paraméterek Változók deklarálása Értékadás Változók használata Eredmény fa részletek létrehozása és használata Paraméterek használata Paraméterek átadása minta szabályoknak Paraméterek átadása stíluslapoknak
Ciklusok, feltételek Ciklusok használata Sorbarendezés Elágazások
10
Nevesített minták Feladatuk:
A kód egyszerűsítésKód újrafelhasználás
Egyszerű minta a név attribútum ki van töltve
Függvények procedurális programozási nyelvekben
Tartalmazhat egyezés elemet is (match)
<xsl:template name="concatnames"><xsl:value-of select="firstname"/> <xsl:value-of select="lastname"/>
</xsl:template>
<xsl:template name="concatnames"><xsl:value-of select="firstname"/> <xsl:value-of select="lastname"/>
</xsl:template>
11
Nevesített minta meghívása Meghívható: <xsl:call-template> Az aktuális csomópont és csomópont lista
változatlan (<xsl:apply-template> esetén) Ha nem találja akkor hiba jelzéssel tér vissza
<xsl:template match="employee"><xsl:call-template name="concatnames"/><br/>
</xsl:template>
<xsl:template match="employee"><xsl:call-template name="concatnames"/><br/>
</xsl:template>
12
1. DEMÓ
13
Változó és paraméterek
Változók deklarálása Értékadás Változók használata Eredmény fa részletek létrehozása és
használata Paraméterek használata Paraméterek átadása minta szabályoknak Paraméterek átadása stíluslapoknak DEMÓ
14
Változók deklarálása Adattárolásra használandók
Ha egyszer ki lett értékelve nem lehet megváltoztatni (ezzel biztosítjuk azt, hogy a szabályok sorrendje tetszőleges, nem hatnak egymásra, a végeredmény azonos)
A hatókör a definiálás helyétől függ A mintában definiáltak lokálisak A legfelsőbb szinten deklaráltak globálisak
Típusai: karakterlánc szám logikai csomópont gyűjtemény
15
Érték adás A select attribútummal
Egy idézőjel a Washington elem értékét jelentené
A sablon tartalmával
<xsl:variable name="state">Washington</xsl:variable> <xsl:variable name="state">Washington</xsl:variable>
<xsl:variable name="state" select="'Washington'"/><xsl:variable name="state" select="'Washington'"/>
16
Változók használata
<xsl:variable name="country" select="' US '"/><xsl:variable name="currency" select="' dollars'"/> <xsl:template match="employee">
<xsl:variable name="job" select="concat(jobtitle, 's Department')"/> <xsl:value-of select="name"/> works in the <xsl:value-of select="$job"/> and earns <xsl:value-of select="salary"/> <xsl:value-of select="$country"/> <xsl:value-of select="$currency"/><br/>
</xsl:template>
<xsl:variable name="country" select="' US '"/><xsl:variable name="currency" select="' dollars'"/> <xsl:template match="employee">
<xsl:variable name="job" select="concat(jobtitle, 's Department')"/> <xsl:value-of select="name"/> works in the <xsl:value-of select="$job"/> and earns <xsl:value-of select="salary"/> <xsl:value-of select="$country"/> <xsl:value-of select="$currency"/><br/>
</xsl:template>
17
Eredmény Fa rész használata
<xsl:variable name="pagefooter"><table><tr>
<td>Date</td><td><xsl:value-of select="$deptname"></td><td>Time</td>
</tr></table></xsl:variable> <xsl:template match="/">
<HTML><BODY><!--Various outputs--><xsl:copy-of select="$pagefooter">
</BODY></HTML></xsl:template>
<xsl:variable name="pagefooter"><table><tr>
<td>Date</td><td><xsl:value-of select="$deptname"></td><td>Time</td>
</tr></table></xsl:variable> <xsl:template match="/">
<HTML><BODY><!--Various outputs--><xsl:copy-of select="$pagefooter">
</BODY></HTML></xsl:template>
18
Változók használata A hívó adja meg az értékét
Alapértelmezett érték beállítható Lokális paraméterek
Sablon szabályban Global Parameters
Stílus lapban
19
Sablon paraméterek átadása
<xsl:template match="employee"><xsl:call-template name="contact-details">
<xsl:with-param name="emp" select="name"/></xsl:call-template>
</xsl:template> <xsl:template name="contact-details">
<xsl:param name="emp"/><xsl:value-of select="$emp"/>'s contact is <xsl:value-of select="next_of_kin/name"/><br/>
</xsl:template>
<xsl:template match="employee"><xsl:call-template name="contact-details">
<xsl:with-param name="emp" select="name"/></xsl:call-template>
</xsl:template> <xsl:template name="contact-details">
<xsl:param name="emp"/><xsl:value-of select="$emp"/>'s contact is <xsl:value-of select="next_of_kin/name"/><br/>
</xsl:template>
20
Stíluslap paraméter átadása
XslTransform xslt = new XslTransform();xslt.Load(stylesheet);
XsltArgumentList xslArg = new XsltArgumentList();DateTime d = DateTime.Now;xslArg.AddParam("date", "", d.ToString());XmlTextWriter writer = new XmlTextWriter(Console.Out);xslt.Transform(new XPathDocument(filename), xslArg, writer, null);writer.Close();
XslTransform xslt = new XslTransform();xslt.Load(stylesheet);
XsltArgumentList xslArg = new XsltArgumentList();DateTime d = DateTime.Now;xslArg.AddParam("date", "", d.ToString());XmlTextWriter writer = new XmlTextWriter(Console.Out);xslt.Transform(new XPathDocument(filename), xslArg, writer, null);writer.Close();
21
1.5. DEMÓ
22
Ciklusok, elágazások Ciklusok használata Sorbarendezés Elágazások
23
Ciklus Csomópontok halmazán mehetünk végig A <xsl:for-each> utasítás
<xsl:apply-template> 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()
<xsl:template match="employees"><xsl:for-each select="employee">
<xsl:value-of select="name"/><br/></xsl:for-each>
</xsl:template>
<xsl:template match="employees"><xsl:for-each select="employee">
<xsl:value-of select="name"/><br/></xsl:for-each>
</xsl:template>
24
Sorrend megadása Az <xsl:sort> utasítás a <xsl:for-each>
utasításon belül Ugyanaz mint az <xsl:apply-template><xsl-
sort> eleme
<xsl:template match="employees"> <xsl:for-each select="employee"> <xsl:sort select="region" order="descending"/> <xsl:sort select="name"/> <xsl:value-of select="name"/><br/><br/> </xsl:for-each></xsl:template>
<xsl:template match="employees"> <xsl:for-each select="employee"> <xsl:sort select="region" order="descending"/> <xsl:sort select="name"/> <xsl:value-of select="name"/><br/><br/> </xsl:for-each></xsl:template>
25
Elágazások
<xsl:template match="employee"><xsl:if test="salary>50000">
High Tax -- </xsl:if><xsl:value-of select="name"/><br/>
</xsl:template>
<xsl:template match="employee"><xsl:if test="salary>50000">
High Tax -- </xsl:if><xsl:value-of select="name"/><br/>
</xsl:template>
<xsl:template match="employee"><xsl:choose>
<xsl:when test="salary>50000">High -- </xsl:when><xsl:when test="salary>25000">Avg --</xsl:when><xsl:otherwise>Low --</xsl:otherwise>
</xsl:choose><xsl:value-of select="name"/><br/></xsl:template>
<xsl:template match="employee"><xsl:choose>
<xsl:when test="salary>50000">High -- </xsl:when><xsl:when test="salary>25000">Avg --</xsl:when><xsl:otherwise>Low --</xsl:otherwise>
</xsl:choose><xsl:value-of select="name"/><br/></xsl:template>
26
2. DEMÓ
27
Tippek Használjunk nevesített sablonokat Használjuk a <xsl:apply-templates> a gyakran
változó dokumentumokhoz Használjuk az <xsl:for-each> -et a statikus
dokumentumokhoz Használjuk az <xsl:choose> -t több feltétel
tesztelésére
28
Hivatkozás XML dokumentumokra Több XML dokumentum használata egy
stíluslapban Kereszthivatkozások Kereszthivatkozások az eredmény
dokumentumban
29
Hivatkozott dokumentumok használata
<employee> <surname>Philips</surname> <rgn>R</rgn></employee>
<employee> <surname>Philips</surname> <rgn>R</rgn></employee>
<xsl:template match="employee">
<xsl:value-of select="surname"/> <br/>
<xsl:value-of select="document('Regions.xml') //region[@code=current()/rgn]/@place"/> <br/><br/>
</xsl:template>
<xsl:template match="employee">
<xsl:value-of select="surname"/> <br/>
<xsl:value-of select="document('Regions.xml') //region[@code=current()/rgn]/@place"/> <br/><br/>
</xsl:template>
<region code="R" place="Redmond"/><region code="D" place="Dallas"/>
<region code="R" place="Redmond"/><region code="D" place="Dallas"/>
Employees.xml
AddressbyRegion.xsl
Regions.xml
30
Hivatkozott dokumentumok
<xsl:for-each select="region">
<xsl:value-of select="@place"/> <br/>
<xsl:for-each select="document(@href)//employee"> <xsl:value-of select="surname"/> <br/> </xsl:for-each> <br/>
</xsl:for-each>
<xsl:for-each select="region">
<xsl:value-of select="@place"/> <br/>
<xsl:for-each select="document(@href)//employee"> <xsl:value-of select="surname"/> <br/> </xsl:for-each> <br/>
</xsl:for-each>
<regions><region place="Dallas" href="dallasemp.xml" /><region place="Redmond" href="redmondemp.xml" />
</regions>
<regions><region place="Dallas" href="dallasemp.xml" /><region place="Redmond" href="redmondemp.xml" />
</regions>
Regions.xml
RegionLookup.xsl
31
<regions><region place="Dallas" href="dallasemp.xml" /><region place="Redmond" href="redmondemp.xml" />
</regions>
<regions><region place="Dallas" href="dallasemp.xml" /><region place="Redmond" href="redmondemp.xml" />
</regions>
Regions.xml
<xsl:for-each select = "document(@href, 'www.litware.com/data')//employee">
<xsl:value-of select="surname"/> <br/>
</xsl:for-each>
<xsl:for-each select = "document(@href, 'www.litware.com/data')//employee">
<xsl:value-of select="surname"/> <br/>
</xsl:for-each>
RegionLookup.xsl
Alap URI megadása Alapértelmezésként az URI-k a stíluslaphoz vannak
viszonyítva A document() függvény második paraméterében
megadható egyébb alap URI
32
3. DEMÓ
33
Kereszthivatkozások Az összefüggő információk egy
dokumentumba sűrítése Implicit kereszthivatkozás Explicit kereszthivatkozás XSLT kulcs definiálása Csomópontok címzése XSLT kulcsokkal 4. Demó Kulcsok kiolvasása más dokumentumokból
34
Az összefüggő információk egy dokumentumba sűrítése
<orders><order id="10285" customer-code="191">
<product code="654"/></order>…
<customers><customer code="191">
<name>Carol Philips</name><address>432, 23rd Way, Redmond</address>
</customers>…
<products> <product code="654">
<description>Wool sweater</description> <price>27.99</price>
</product></products>…
</orders>
<orders><order id="10285" customer-code="191">
<product code="654"/></order>…
<customers><customer code="191">
<name>Carol Philips</name><address>432, 23rd Way, Redmond</address>
</customers>…
<products> <product code="654">
<description>Wool sweater</description> <price>27.99</price>
</product></products>…
</orders>
35
Implicit kereszthivatkozások XPath segítségével hivatkozunk a kapcsolódó
információra Problémás:
Nehéz olvasni, kódolniNehéz karbatartani
<xsl:apply-templates select=”/orders/customres/customer[@code=current()/@customer-code]”/>
36
Explicit Kereszthivatkozások Az adatok szabványos attribútumokon
keresztül csatlakoznakID, IDREF, vagy IDREFS XML Sémában
Adatok címzése Használjuk az XSLT id(objektum) függvényt
ProblémákA sémát meg kell osztaniAttribútumokat használunk hivatkozásra nem
elemeket
37
XSLT Kulcs definiálása Az adatokat XSLT kulcsokkal is
összekapcsolhatjukKulcs bármilyen tartalomból készíthetőNem kell sémaIndex készíthető
XSLT kulcsok definiálása
<xsl:key name="custcode" match="customer" use="zip"/><xsl:key name="prodcode" match="product" use="@code"/>
<xsl:key name="custcode" match="customer" use="zip"/><xsl:key name="prodcode" match="product" use="@code"/>
38
Csomópontok címzése XSLT kulcsokkal
Karakterlánc argumentummal
Csomópont gyűjteménnyel
<xsl:key name="custcode" match="customer" use="@code"/><xsl:template match="order"> <xsl:apply-templates select="key('custcode',customer/@code)"/></xsl:template>
<xsl:key name="custcode" match="customer" use="@code"/><xsl:template match="order"> <xsl:apply-templates select="key('custcode',customer/@code)"/></xsl:template>
<xsl:key name="prodcode" match="product" use="@code"/> <xsl:template match="order"> <xsl:apply-templates select="key('prodcode',item/code)"/></xsl:template>
<xsl:key name="prodcode" match="product" use="@code"/> <xsl:template match="order"> <xsl:apply-templates select="key('prodcode',item/code)"/></xsl:template>
39
4. DEMÓ
40
Egyedi azonosítók gyártása
<xsl:for-each select="//product"> <tr>
<td><a href="#{generate-id(description)}"><xsl:value-of select="description"/></a></td><td><xsl:value-of select="department"/></td><td><xsl:value-of select="price"/></td>
</tr></xsl:for-each>
<xsl:for-each select="//product"> <tr>
<td><a href="#{generate-id(description)}"><xsl:value-of select="description"/></a></td><td><xsl:value-of select="department"/></td><td><xsl:value-of select="price"/></td>
</tr></xsl:for-each>
<xsl:for-each select="//product/description"> <b><a name="{generate-id()}"> <xsl:value-of select="../description"/></a></b></br> <xsl:value-of select="../details"/><br/></xsl:for-each>
<xsl:for-each select="//product/description"> <b><a name="{generate-id()}"> <xsl:value-of select="../description"/></a></b></br> <xsl:value-of select="../details"/><br/></xsl:for-each>
41
5. DEMÓ
42
Tippek Definiáljuk az alap URI-t a document()
függvényhez Használjunk kulcsokat
43
Az előadás tartalma Bevezetés az XSLT-be
Bevezetés az XSLT-beSablon szabályokFejlett sablon szabályok
Stíluslapok kombinálásaA dokumentum tartalom sorbarendezéseA kimenet testreszabásaStíluslapok beszúrása és importálása
44
A következő előadás tartalma Web szolgáltatások
WSDL WS-profilok