Fejlett Programozási Technikák 2.

Slides:



Advertisements
Hasonló előadás
Tananyag: konzultáció
Advertisements

JQuery 8. előadás.
Grafikus tervezőrendszerek programozása 10. előadás.
Hatékonyságvizsgálat, dokumentálás
1 XML •Az Extensible Markup Language (XML, kiterjeszthető leíró nyelv) a W3C által ajánlott általános célú leíró nyelv speciális célú leíró nyelvek létrehozására.
Document Type Definitions (DTD) XML séma
Delphi programozás alapjai
Extensible Markup Language
JavaScript.
11. előadás (2005. május 10.) A make segédprogram Alacsony szintű műveletek és bitmezők Fájl, katalógus rendszer hívások 1.
Fejlett programozási technikák II.
Programrendszerek fejlesztése Bilicki Vilmos
Előadás vázlat Az XML története és alkalmazási területe
Hernyák Zoltán XML validálás.
Közös kinézet Mester oldal, témák, skin-ek, css Webalkalkalmazás fejlesztése ASP.NET-ben Krizsán Zoltán.
PHP Webprogramozás alapjai
ADATBÁZISOK
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
6. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Önleíró adatok: XML INFO ÉRA, Békéscsaba
Vizuális Programozás 2. Előadás Készítette: Sipeky Attila egy. adj. PTE PMMK MIT.
Webszerkesztés Stíluslapok (CSS).
Kifejezések. A legfontosabb függvények.
Az UML kiterjesztési lehetőségei
SOAP alapismeretek A SOAP egy egyszerű XML alapú protokoll, ami lehetővé teszi, hogy az alkalmazások információt cseréljenek a HTTP-én keresztül. Forrás:
WEB Technológiák WEB-DB és XML ME Általános Informatikai Tsz. dr. Kovács László.
WEB Technológiák WEB-DB és XML ME Általános Informatikai Tsz. dr. Kovács László.
Microsoft Access Űrlapok tervezése.
XML támogatás adatbázis-kezelő rendszerekben
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
- adatbázisséma definiálása (DDL) Data Definition Languages, - adatok aktualizálása (DML),Data Maniputaion Language - lekérdezési lehetőségek (DML) Data.
Az SQL nyelv alapjai.
Webes Információs Rendszerek fejlesztése
1.NET web szolgáltatások XSLT Bilicki Vilmos
.NET web szolgáltatások
1.NET web szolgáltatások XSLT programozás XSLT hivatkozások Bilicki Vilmos
Access XP Kifejezés-szerkesztő Összehasonlító operátorok:
Funkcionális programozás 2. gyakorlat
Grafikus tervezőrendszerek programozása 11. előadás.
Klasszikus Programozás a FoxPro-ban
Operátorok Értékadások
Hernyák Zoltán XML Schema sémadefiníció.
Hernyák Zoltán XSLT transzformációk.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
XML fejlesztések TSQL fejlesztések Tábla paraméter SQLCLR fejlesztések 8k limit feloldása Több paraméteres UDA-ek Ordered UDF-ek Entity Framework ADO.NET.
XML adatkezelés 1. témakör Az XML szabvány.
– SQL 3: SELECT - 1. – Tarcsi Ádám, január 31. Adatbázis gyakorlat.
XML Mi az XML?  Extensible Markup Language  Kiterjeszthető jelölő nyelv  Adatok, adatstruktúrák leírására szolgál  A HTML és az SGML tapasztalataira.
Készítette: Turócziné Kiscsatári Nóra
Turócziné Kiscsatári Nóra
Többtáblás lekérdezések, hierarchikus lekérdezések, allekérdezések
Webprogramozó tanfolyam
A Visual Basic nyelvi elemei
– SELECT - 1. – Tarcsi Ádám január Adatbázis gyakorlat.
Java web programozás 7-8..
Java web programozás 2..
Webes tartalmakban alkalmazható szteganográfiai módszerek vizsgálata
1 Fejlett Programozási Technikák 2. 15/2. Fejlett Programozási Technológiák 2. 2 A mai előadás tartalma: DTD XSD XPath XSLT.
Alkalmazásfejlesztés F#-ban Dunaújvárosi Főiskola Kiss Gyula mérnökinformatikus hallgató Nemzeti Tehetség Program Tehetségútlevél Program „NTP-TÚP ”
Fejlett Programozási Technikák 2.
Web Technológiák HTML 4.01 World Wide Web Consortium
Informatikai gyakorlatok 11. évfolyam
Fejlett Programozási Technikák 2.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Fejlett Programozási Technikák 2.
A CLIPS keretrendszer
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Cascading Style Sheet.
XML lekérdezőnyelvek XPath XQuery.
Függvénysablonok használata
Előadás másolata:

Fejlett Programozási Technikák 2. 15/2

A mai előadás tartalma: DTD XSD XPath XSLT

Irodalom Don Box: Essential XML 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/

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ó

DTD Öndokumentálás Nyelvtan Elemkészlet Hibadetektálás (B2B)

Példa <!ELEMENT Pelda1:Feladat (Pelda1:vegrehajto, Pelda1:megbizo, Pelda1:hatarido)> <!ELEMENT Pelda1:vegrehajto (#PCDATA)> <!ELEMENT Pelda1:megbizo (#PCDATA)> <!ELEMENT Pelda1:hatarido (#PCDATA)>

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

Tulajdonságok <!ATTLIST feladat munkahely (irinyi|arpadter)> 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”

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

XSD Típusokat definiálhatunk Beépített típusokat használhatunk (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

Értékek, Lexikális típusok Beépített adattípusokat használhatunk

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

Példa <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.org/publishing" xmlns:tns="http://example.org/publishing"> <!-- type definitions --> <xsd:simpleType name="AuthorId"> <!-- define value space details here --> </xsd:simpleType> <xsd:complexType name="AuthorType"> <!-- define structural details here --> </xsd:complexType> <!-- global element/attribute declarations --> <xsd:element name="author" type="tns:AuthorType"/> <xsd:attribute name="authorId" type="tns:AuthorId"/> ... </xsd:schema>

XSD Alapelemek Egyszerű típus: Összetett típus: Elem definiálása: 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

Használatuk XML-ben <x:author xmlns:x="http://example.org/publishing"> <!-- structure determined by complexType definition --> ... </x:author> Vagy <genericId xmlns:x="http://example.org/publishing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="tns:AuthorId" >333-33-3333</genericId>

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

Példa: Egyszerű típusok ... <xsd:simpleType name="RoyaltyRate"> <xsd:restriction base="xsd:double"> <xsd:minInclusive value="0"/> <xsd:maxInclusive value="100"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="Pubs2003"> <xsd:restriction base="xsd:date"> <xsd:minInclusive value="2003-01-01"/> <xsd:maxInclusive value="2003-12-31"/> <xsd:element name="rate" type="tns:RoyaltyRate"/> <xsd:element name="publicationDate" type="tns:Pubs2003"/>

Példa: Lexikális szűkítés ... <xsd:simpleType name="SSN"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{3}-\d{2}-\d{4}"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="PublisherAssignedId"> <xsd:pattern value="\d{2}-\d{8}"/> <xsd:simpleType name="Phone"> <xsd:pattern value="\(\d{3}\)\d{3}-\d{4}"/> <xsd:element name="authorId" type="tns:SSN"/> <xsd:element name="pubsAuId" type="tns:PublisherAssignedId"/> <xsd:element name="phone" type="tns:Phone"/>

Példa: felsorolás ... <xsd:simpleType name="PublicationType"> <xsd:restriction base="xsd:NMTOKEN"> <xsd:enumeration value="Book"/> <xsd:enumeration value="Magazine"/> <xsd:enumeration value="Journal"/> <xsd:enumeration value="Online"/> </xsd:restriction> </xsd:simpleType> <xsd:element name="pubType" type="tns:PublicationType"/>

Példa: unió ... <xsd:simpleType name="AuthorId"> <xsd:union memberTypes="tns:SSN tns:PublisherAssignedId"/> </xsd:simpleType> <xsd:element name="authorId" type="tns:AuthorId"/>

Komplex típusok xsd:complexType: névtér definiálás: xsd:sequence xsd:choice xsd:all ref névtér definiálás: ##any ##other ##targetNamespace ##local Lista

<xsd:complexType name="AddressType"> <xsd:all> <xsd:element name="street" type="xsd:string"/> <xsd:element name="city" type="xsd:string" minOccurs="0"/> <xsd:element name="state" type="tns:State" minOccurs="0"/> <xsd:element name="zip" type="tns:Zip"/> </xsd:all> </xsd:complexType> <xsd:complexType name="PublicationsListType"> <xsd:choice maxOccurs="unbounded"> <xsd:element name="book" type="xsd:string"/> <xsd:element name="article" type="xsd:string"/> <xsd:element name="whitepaper" type="xsd:string"/> </xsd:choice> <xsd:complexType name="AuthorType"> <xsd:sequence> <xsd:choice> <xsd:element name="name" type="xsd:string"/> <xsd:element name="fullName" type="xsd:string"/> <xsd:element name="address" type="tns:AddressType"/> <xsd:element name="phone" type="tns:Phone" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="recentPublications„ type="tns:PublicationsListType"/> </xsd:sequence> <xsd:attribute name="id" type="tns:AuthorId"/> <xsd:element name="author" type="tns:AuthorType"/>

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

Miért használjuk XPath Az XSLT stílus lapokban, minta illesztésre A DOM-ban,csomópontok kiválasztására XML XPath XPath XML XPointer-ben, a dokumentumok csatolására SQL Server-nél, XML-t is tud generálni

Csomópont információk XPath fa struktúra és csomópont típusok A csomópontokbó kinyerhető információk DOM használata

XPath fa struktúra XML dokumentum XPath faként <catalog xmlns="urn:litwareinc"> <?proc instr?> <!--comment--> <product code="123"> Blue jeans </product> </catalog> "123" "Blue jeans" Root "urn:litware" "comment " "proc-instr" <product> "urn:litwareinc" <catalog>

A csomópontokból kinyerhető információk Minden csomópont rendelkezik tulajdonságokkal Csomópont típusok Gyökér Egyed Tulajdonság Szöveg Névtér Feld. utasítások Megjegyzés Tulajdonságok Érték Név Szülő csomóp. Gyerek csomóp.

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

Elérési útvonalak Útvonalat ábrázol Balról jobbra vannak kiértékelve 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]

Tengelyek self following child following-sibling parent preceding <catalog> <product code="123"> <price>35.99</price> </product> <product code="456"> <price>22.95</price> <discount> <amount>25</amount> </discount> <product code="789"> <price>185.00</price> </catalog> <catalog> <product code="123"> <price>35.99</price> </product> <product code="456"> <price>22.95</price> <discount> <amount>25</amount> </discount> <product code="789"> <price>185.00</price> </catalog> self following child following-sibling parent preceding attribute preceding-sibling descendant descendant-or-self ancestor ancestor-or-self Root node <catalog> <product> <product> <product> code=123 <price> code=456 <price> <discount> code=789 <price> 35.99 22.95 <amount> 185.00 25

Tengelyek használata A gyakori XPath tengelyeknek van rövidített alakja is A többinek nincs Példa – ancestor::node() Tengely Példa teljes Példa rövidített child child::price price attribute attribute::code @code self self::node() . parent parent::node() .. descendant-or-self /descendant-or-self()/price //price

Csomópont kritériumok Child examples Attribute examples 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: price @code * @* aprefix:price @aprefix:code aprefix:* @aprefix:* text() processing-instruction() node() comment()

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[@code] product[3][@discount]

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

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) (cd | dvd)/@capacity cd[position() = last()] count(cd[@capacity > 5.8])

Logikai kifejezések Logikai operátorok = != > >= < <= Logikai függvények Példa: product[(price > 25 and price < 35) or price > 50] true() false() boolean() not() lang() product[not(@code) and not(discount-policy)]

Szám kifejezések Egyenlőtlenség Bináris operátorok, + - * div mod Függvények Példa account[balance >= - overdraft-limit] account[(balance mod 100) > 0] number() floor() ceiling() round() sum() account[sum(transaction-amount) > 0]

Karakterláncok Kerekterlánc szűrő Karakterlánc módosító string-length(customer/@last-name) customer[ starts-with(@last-name, "Mac") ] customer[ contains(@last-name, "Mac") ] concat(@last-name, "[", @first-name, "]") substring(@middle-name, 1, 1) substring-before("12/3/1964", "/") or substring-after normalize-space(" To be or not to be ") translate(str, "aeiou", "AEIOU")

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

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

XML HTML-é transzformálás XSLT XML dokumentum HTML dokumentum + XSLT processor XSLT stílus lap <employees> <employee> <name>Reid</name> <salary>91000</salary> </employee> … </employees> <HTML><TABLE> <TR> <TD>Reid</TD> <TD>91000</TD> </TR> … </TABLE></HTML>

XML más XML szintakszissá Más szintakszis XML dokumentum Más XML nyelvtan + XSLT processor XSLT stílus lap <employees> <employee> <name>Reid</name> <salary>91000</salary> </employee> … </employees> <staff> <staff-member name="Reid" pay="91000"/> … </staff>

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

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 match="employee"> <xsl:value-of select="name"/>, <xsl:value-of select="salary"/> </xsl:stylesheet>

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

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: A select tulajdonsá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:stylesheet>

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

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> elemek rendezé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>

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 Gyakori megoldások 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()-ben format-number(1234.5, '#,000.00', 'Euro') 1.234,50

Szóköz kezelése <A><B>Hello</B> <xsl:strip-space elements="*"/> Példák Szóköz eltávolítása minden elemből Szóköz megtartása megadott csomópontoknál <xsl:strip-space elements="name address"/> <xsl:preserve-space elements="paragraph heading"/> Szóköz eltváloítása megadott csomópontokból Szóköz eltávolítása <xsl:strip-space> Szóköz megtartása <xsl:preserve-space> A B C Hello World a white space node a text node another text node <A><B>Hello</B> <C>World</C></A>

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 <xsl:output method="html" encoding="iso-8859-1" indent="yes"/> A <xsl:output method="text"/> segítségével lehet a szöveget testreszabni <xsl:output method="text" encoding="us-ascii"/>

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> Starter.xsl … <xsl:stylesheet…> … </xsl:stylesheet> <xsl:include href="Starter.xsl"/> <!–– use included rules ––>

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> Starter.xsl … <xsl:stylesheet…> </xsl:stylesheet> <xsl:import href="Starter.xsl"/> <!–– use or override imported rules ––>

Felülírt szabályok Felülírás engedélyezése <xsl:apply-imports> Példa: <xsl:stylesheet…> <xsl:template match="salary"> … </xsl:stylesheet> Starter.xsl <xsl:stylesheet…> <xsl:import href="Starter.xsl"/> </xsl:stylesheet> <xsl:template match="salary"> </xsl:template> <B> <xsl:apply-imports/> </B>

Import sorrend Több stíluslapot tudunk beilleszteni és importálni Import precedence rules apply A.xsl B.xsl … import B.xsl New.xsl import A.xsl include C.xsl include E.xsl … C.xsl D.xsl … import D.xsl E.xsl import F.xsl F.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

A következő előadás tartalma Menedzselt kód