net web szolgáltatások

44
1 .NET web szolgáltatások XSLT programozás XSLT hivatkozások Bilicki Vilmos [email protected] www.inf.u-szeged.hu/~bilickiv

Upload: kirk-reed

Post on 30-Dec-2015

27 views

Category:

Documents


1 download

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 Presentation

TRANSCRIPT

Page 1: NET web szolgáltatások

1

.NET web szolgáltatások

XSLT programozásXSLT hivatkozások

Bilicki [email protected]/~bilickiv

Page 2: NET web szolgáltatások

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

Page 3: NET web szolgáltatások

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

Page 4: NET web szolgáltatások

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" />

Page 5: NET web szolgáltatások

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>

Page 6: NET web szolgáltatások

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>

Page 7: NET web szolgáltatások

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

Page 8: NET web szolgáltatások

8

Források Microsoft 1913A official curriculum

http://www.gotdotnet.com/ Eszköz

http://www.xmlcooktop.com/

Page 9: NET web szolgáltatások

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

Page 10: NET web szolgáltatá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>

Page 11: NET web szolgáltatások

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>

Page 12: NET web szolgáltatások

12

1. DEMÓ

Page 13: NET web szolgáltatások

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Ó

Page 14: NET web szolgáltatások

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

Page 15: NET web szolgáltatások

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'"/>

Page 16: NET web szolgáltatások

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>

Page 17: NET web szolgáltatások

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>

Page 18: NET web szolgáltatások

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

Page 19: NET web szolgáltatások

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>

Page 20: NET web szolgáltatások

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();

Page 21: NET web szolgáltatások

21

1.5. DEMÓ

Page 22: NET web szolgáltatások

22

Ciklusok, elágazások Ciklusok használata Sorbarendezés Elágazások

Page 23: NET web szolgáltatá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>

Page 24: NET web szolgáltatások

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>

Page 25: NET web szolgáltatások

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>

Page 26: NET web szolgáltatások

26

2. DEMÓ

Page 27: NET web szolgáltatások

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

Page 28: NET web szolgáltatások

28

Hivatkozás XML dokumentumokra Több XML dokumentum használata egy

stíluslapban Kereszthivatkozások Kereszthivatkozások az eredmény

dokumentumban

Page 29: NET web szolgáltatások

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

Page 30: NET web szolgáltatások

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

Page 31: NET web szolgáltatások

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

Page 32: NET web szolgáltatások

32

3. DEMÓ

Page 33: NET web szolgáltatások

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

Page 34: NET web szolgáltatások

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>

Page 35: NET web szolgáltatások

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]”/>

Page 36: NET web szolgáltatások

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

Page 37: NET web szolgáltatások

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"/>

Page 38: NET web szolgáltatások

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>

Page 39: NET web szolgáltatások

39

4. DEMÓ

Page 40: NET web szolgáltatások

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>

Page 41: NET web szolgáltatások

41

5. DEMÓ

Page 42: NET web szolgáltatások

42

Tippek Definiáljuk az alap URI-t a document()

függvényhez Használjunk kulcsokat

Page 43: NET web szolgáltatások

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

Page 44: NET web szolgáltatások

44

A következő előadás tartalma Web szolgáltatások

WSDL WS-profilok