Jezyk XLS

background image

-]\N;6/

*

Tomasz Traczyk

Instytut Automatyki i Informatyki Stosowanej, Politechnika Warszawska

e-mail: ttraczyk@ia.pw.edu.pl

Abstrakt.

-]\N ;6/ eXtensible Stylesheet Language VWDQRZL X]XSHáQLHQLH ;0/ : ]DáR*HQLX PD RQ

VáX*\üGRIRUPDWRZDQLDGRNXPHQWyZZ;0/SRGREQLHMDN&66GOD+70/0R*HE\üWDN*HX*\ZDQ\GR

SU]HNV]WDáFDQLDGRNXPHQWyZ;0/RZ\FKGRWHJRV]F]HJyOQLHGREU]HQDGDMHVLSRG]ELyU;6/QD]ZDQ\
XSLT (XSL Transformations

5HIHUDW VWDQRZL NRQW\QXDFM SUH]HQWDFML SRZLFRQ\FK M]\NRZL ;0/ ]

dwóch poprzednich konferencji PLOUG [1, 2]. Przedstawiono w nim podstawy XSL i XSLT oraz zaprezen-
WRZDQRPR*OLZRFLX*\FLDW\FKM]\NyZZSRZL]DQLX]SRSXODUQ\PLSU]HJOGDUNDPL:::RUD]]'%06
Oracle.

1. Wprowadzenie

'RNXPHQWZ;0/SRZLQLHQE\ü]EXGRZDQ\QD]DVDG]LH]QDNRZDQLD]QDF]HQLRZHJRDQLHWy-

po

JUDILF]QHJR&DáDLQIRUPDFMDRVSRVRELHIRUPDWRZDQLDGRNXPHQWXSU]H]SU]HJOGDUNPXVLE\ü

]DWHPVIRUPXáRZDQDRVREQR

'R RNUHOHQLD VSRVREX SUH]HQWDFML GRNXPHQWyZ VáX* W]Z DUNXV]H VW\OLVW\F]QH stylesheets).

:áDQLH GR GHILQLRZDQLD DUNXV]\ VW\OLVW\F]Q\FK GOD GRNXPHQWyZ Z ;0/ VWZRU]RQR M]\N ;6/
(eXtensible Stylesheet Language).

3RP\VáVSRVREXSU]HWZDU]DQLDZ\NRU]\VWDQ\Z;6/SRFKRG]L]'666/Document Style Se-

mantics and Specification Language

²]ZL]DQHJR]6*0/M]\NDSRGREQHJRGRLISP-u. XSL

SU]HMáRG'666/RJyOQLGHDOHMHJRVNáDGQLD]RVWDáDZSHáQL]GHILQLRZDQDZ;0/]X*\FLHP
przestrzeni nazw (namespaces).

;6/SRP\ODQ\SLHUZRWQLHMDNRURGHNGHILQLRZDQLDDUNXV]\VW\OLVW\F]Q\FKRND]DáVLWDN*H

]QDNRPLW\PQDU]G]LHPGRSU]HNV]WDáFDQLDGRNXPHQWyZ;0/²WDNLH]DVWRVRZDQLHZ\GDMHVL

WH*V]F]HJyOQLHLQWHUHVXMFHGODSURMHNWDQWyZV\VWHPyZ]ED]DPLGDQ\FK

2. Podstawy XSL

3UH]HQWDFMDGRNXPHQWX]X*\FLHP;6/SROHJDQDWUDQVIRUPDFMLGU]HZDKLHUDUFKLL]QDF]QLNyZ

GRNXPHQWXZHMFLRZHJRQDGU]HZRW]Zformatting objects, NWyU\PSU]\SLVDQRRNUHORQHVSRVRE\

SUH]HQWDFML3U]HJOGDUNDVáX*FDGRSUH]HQWDFMLSRZLQQDUR]XPLHüM]\NRZ\FKRELHNWyZIRUPa-
tuj

cych.

2EHFQLHSU]HJOGDUNL]DSRPRFNWyU\FKSUH]HQWRZDQHVGRNXPHQW\;0/QLHPDMPR*OLZo-

FLLQWHUSUHWDFMLRSLVXIRUPDWRZDQLDZ\UD*RQHJRZSURVWZ;6/DOHVSU]\VWRVRZDQHGRSUH]HQWa-

FMLGRNXPHQWyZZ +70/ 3UDNW\F]Q\P VSRVREHP IRUPDWRZDQLD GRNXPHQWyZ ]D SRPRF ;6/

MHVWZLFSU]HWZRU]HQLHLFKQD+70/7DNWH*VNRQVWUXRZDQ\]RVWDáSU]\NáDGSRGDQ\SRQi*HM

2.1. Rzut oka na XSL

3RGDQRWXSURVW\SU]\NáDGNWyU\SR]ZDOD]RULHQWRZDüVLMDNZ\JOGDüPR*HDUNXV]VW\OLVW\Fz-

Q\Z;6/LMDNDMHVW]DVDGDMHJRG]LDáDQLD

*

Praca wspierana z

JUDQWX']LHNDQD:\G]LDáX(OHNWURQLNLL7HFKQLN,QIRUPDF\MQ\FK3ROLWHFKQLNL:Dr-

szawskiej.

background image

120

Tomasz Traczyk

3U]\NáDG

3U]HGVWDZLRQ\SU]\NáDG

1

dokumentu w XML pochodzi z rzeczywistego systemu informacyjne-

JRZVSRPDJDMFHJR]DU]G]DQLHGX*\PZ\G]LDáHPZ\*V]HMXF]HOQL>1, 2].

2WRSU]\NáDGRZ\GRNXPHQW

<?xml version="1.0" encoding="ISO-8859-2"?>

<!DOCTYPE eres_konspekty SYSTEM "konspekty.dtd">

<?xml-stylesheet type="text/xsl" href="konspekty.xslt"?>
.RPHQWDU]WRMHVWSU]\NáDGQU!
<eres_konspekty>

<przedmiot id=”KBD2” wersja=”1”>

<slowo_kluczowe>bazy danych</slowo_kluczowe>

<slowo_kluczowe>Oracle</slowo_kluczowe>

<konspekt>

<czesc_konspektu id=”Streszczenie”>

3!0RQRJUDILF]Q\SU]HGPLRWSRZLFRQ\ED]LHGDQ\FKLQDU]G]LRP

Oracle.

</P>

</czesc_konspektu>

F]HVFBNRQVSHNWXLG ´7UHü´!

3!2PDZLDQHVSRGVWDZRZH]DJDGQLHQLD]ZL]DQH]Z\NRU]\VWDQLHP

RDBMS Oracle7 i <I>Oracle8</I> oraz administrowaniem nimi.

</P>
3!3U]HGVWDZLDQHVWDN*HQDU]G]LDGREXGRZ\DSOLNDFML
</P>

<UL>

<LI> Oracle Forms, </LI>

<LI> Oracle Reports. </LI>

</UL>

</czesc_konspektu>

</konspekt>

</przedmiot>

</eres_konspekty>

3U]\NáDG

3RQL*V]\VNU\SWZ;6/VáX*\GRSUH]HQWDFMLNRQVSHNWXGRNXPHQWX]SU]\NáDGX

<?xml version="1.0" encoding="windows-1250"?>
7RMHVWSU]\NáDGQU!
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:output method="html" indent="yes" encoding="windows-1250" />

<xsl:template match="eres_konspekty">
[VOFRPPHQW!:\JHQHURZDQR]DSRPRFVNU\SWXNRQVSHNW\[VOW[VOFRPPHQW!
<HTML>

<HEAD><TITLE>Konspekty</TITLE></HEAD>

<BODY>

<H1>Konspekty przedmiotów</H1>

<xsl:apply-templates select="przedmiot">

<xsl:sort select="@id" />

</xsl:apply-templates>

</BODY>

1

7HQ VDP SU]\NáDGRZ\ GRNXPHQW ;0/ E\á SUH]HQWRZDQ\ Z UHIHUDFLH QD SRSU]HGQLHM NRQIHUHQFML

PLOUG [2

@7HUD]MHGQDNEG]LHRQIRUPDWRZDQ\]DSRPRFLQQHJRVNU\SWX;6/]Z\NRU]\VWDQLHPQRw-

V]HMZHUVMLM]\ND

background image

-]\N;6/

121

</HTML>

</xsl:template>

<xsl:template match="przedmiot">

<H2>

<xsl:value-of select="@id" />

(<xsl:value-of select="@wersja" />)

</H2>

<xsl:if test="slowo_kluczowe">
+!6áRZDNOXF]RZH+!
<TABLE BORDER="1">

<xsl:for-each select="slowo_kluczowe">

<xsl:sort select="text()"/>

<TR><TD><xsl:value-of select="."/></TD></TR>

</xsl:for-each>

</TABLE>

</xsl:if>

<xsl:apply-templates select="*[name() != 'slowo_kluczowe']"/>

<HR/>

</xsl:template>

<xsl:template match="konspekt">

<H3>Konspekt</H3>

<xsl:apply-templates />

</xsl:template>

<xsl:template match="czesc_konspektu">

<H4>

<xsl:value-of select="@id"/>

</H4>

<xsl:apply-templates />

</xsl:template>

<xsl:template match="P | I | UL | OL | LI">

<xsl:element name="{name()}">

<xsl:apply-templates/>

</xsl:element>

</xsl:template>

</xsl:stylesheet>

,VWRWG]LDáDQLDSRZ\*V]HJRVNU\SWXVWDQRZLUHNXUHQF\MQHSU]HWZDU]DQLH]QDF]QLNyZ,QVWUXk-

cja

xsl:apply-templates

MHVWZ\ZRáDQLHPRZHMUHNXUHQFML$WU\EXW\

select

]DZ*DM]a-

NUHVG]LDáDQLDGRZ\EUDnych elementów dokumentu. Atrybuty

match

SRGDMZ]RU]HF]QDF]QLND

który jest przetwa

U]DQ\ ]D SRPRF GDQHJR V]DEORQX

template

:]RUFH PDM SRVWDü FLH*HN

(paths

RNUHODMF\FKPLHMVFHHOHPHQWXOXEDWU\EXWXZKLHUDUFKLF]QHMVWUXNWXU]HGRNXPHQWX

Instrukcje

value-of

SRZRGXMZáF]HQLHRGSRZLHGQLHMF]FLSU]HWZDU]DQHJRGRNXPHQWXGR

dokumentu wynikowego. Nazwy poprzedzone znakiem

@

R]QDF]DMRGZRáDQLHGRZDUWRFLDWUy-

butu.

(IHNW\ IRUPDWRZDQLD SU]\NáDGRZHJR GRNXPHQWX ]D SRPRF SRZ\*V]HJR VNU\SWX SU]HGVWDZLD

Rys. 1.

background image

122

Tomasz Traczyk

<!--Wygenerowano za pomoc

VNU\SWX

konspekty.xslt-->

<HTML>

<HEAD>

<META http-equiv="Content-Type"

content="text/html;

charset=windows-1250">

<TITLE>Konspekty</TITLE>

</HEAD>

<BODY>

<H1>Konspekty przedmiotów</H1>

.........

</BODY>

</HTML>

Rys. 1

:\QLNIRUPDWRZDQLDGRNXPHQWX;0/]DSRPRF;6/

2.2.

=DVDGDG]LDáDQLD;6/

3U]HWZDU]DQLH]DSRPRF;6/GRW\F]\GU]HZUHSUH]HQWXMF\FKKLHUDUFKLHOHPHQWyZLDWU\Eu-

tów. Schemat przetwarzania przedstawiono na Rys. 2.

Dokument

XML

Rozbiór

gramatyczny

Transformacja

XSL

Serializacja

Drzewo

wej

FLRZH

Drzewo

wynikowe

Dokument
wyj

FLRZ\

Rys. 2. Fazy przetwarzania XSL

:HMFLRZ\GRNXPHQWMHVWSRGGDZDQ\UR]ELRURZLJUDPDW\F]QHPXSU]H]parser. W wyniku roz-

ELRUXSRZVWDMHGU]HZRUHSUH]HQWXMFHKLHUDUFKLHOHPHQWyZLDWU\EXWyZ

6NU\SWZM]\NX;6/VWHUXMHSU]HNV]WDáFHQLHPWHJRGU]HZDZGU]HZRZ\QLNRZHNWyUHPR*H

PLHü]XSHáQLHLQQVWUXNWXU1DVWSQLHGU]HZRZ\QLNRZHPR*HE\ü²ZZ\QLNXSURFHVXW]Z

VHULDOL]DFML²SU]HNV]WDáFRQHZGRNXPHQWZ\QLNRZ\QSZ;0/OXE+70/=DPLDVWserializacji

PR*HE\üZ\NRQDQHLQQHG]LDáDQLHQSEH]SRUHGQLDSUH]HQWDFMDGU]HZDZ\QLNRZHJRSU]H]SU]e-

JOGDUNSRGGaQLHGU]HZDZ\QLNRZHJRNROHMQ\PSU]HNV]WDáFHQLRPLWS

,VWRWG]LDáDQLD;6/MHVWZLFSU]HNV]WDáFDQLHGU]HZUHSUH]HQWXMF\FKVWUXNWXUGRNXPHQWyZ

3U]HNV]WDáFHQLHWDNLHQD]\ZDVLWUDQVIRUPDFM;6/XSL transformation).

$E\ SU]HNV]WDáFHQLH E\áR PR*OLZH GRNXPHQW ZHMFLRZ\ PXVL E\ü SRSUDZQ\ SU]\QDMPQLHM Z

sensie well-formed, by parser

;0/PyJáSU]HNV]WDáFLüJRGRSRVWDFLGU]HZD

3RSUDZQRüGRNXPHQWX;0/ZVHQVLHwell-formed (patrz [3, 4@R]QDF]DSU]HGHZV]\VWNLPL*

GRNXPHQWPDGRNáDGQLHMHGHQHOHPHQWJáyZQ\]QDF]QLNLSRF]WNRZHLNRFRZHHOHPHQWyZQLHV

ÄVNU]\*RZDQH´ ND*GD NRQVWUXNFMD ]DZDUWD Z LQQHM PXVL E\ü Z QLHM ]DZDUWD Z FDáRFL RUD]

ZV]\VWNLH]QDF]QLNLVMDZQLH]DNRF]RQH

background image

-]\N;6/

123

3U]\NáDG

3RQL*HMSRGDQRGZDPDáHGRNXPHQW\Z+70/

lewy jest poprawnym dokumentem HTML, ale nie jest poprawnym w sensie well-formed do-
kumentem XML;

SUDZ\MHVWSRSUDZQ\WDN*HZVHQVLHwell-formedLPR*HE\üSU]HWZDU]DQ\]DSRPRFQDU]-
dzi dla XML.

Paragraf pierwszy.<P>

Paragraf drugi.

<UL>

<LI> Pozycja 1.

<LI> Pozycja 2.

</UL>

<HTML>

<P>Paragraf pierwszy.</P>

<P>Paragraf drugi.</P>

<UL>

<LI>Pozycja 1.</LI>

<LI>Pozycja 2.</LI>

</UL>

</HTML>

Proces

VHULDOL]DFMLQLHPXVLSURZDG]LüGRSRZVWDQLDGRNXPHQWXSRSUDZQHJR]SXQNWXZLG]HQLD

VSHF\ILNDFML;0/²QSZ\MFLRZ\GRNXPHQWZ+70/PR*HQLHVSHáQLDüZDUXQNyZ]DP\NDQLD
znaczników.

3U]HNV]WDáFHQLD V VWHURZDQH ]D SRPRF W]Z V]DEORQyZ template rules). Szablon zawiera

zwykle atrybut

match

SRGDMF\ Z]RU]HF pattern NWyU\ RNUHOD HOHPHQW\ GU]HZD ZHMFLRZHJR

SU]HWZDU]DQH]DSRPRFV]DEORQX:HZQWU]XV]DEORQXRNUHODVLFRPD]QDOH(üVLZGU]HZLH
wynikowym. Przetwarzanie ma charakter rekurencyjny.

-DNRX]XSHáQLHQLHSU]HWZDU]DQLDUHNXUHQF\MQHJRVWRVRZDQHMHVWWDN*HSU]HWZDU]DQLHSURFHGXUDl-

QHSWOHSU]HELHJDMFHSU]H]Z\EUDQHZ]á\GU]HZDZHMFLRZHJRZDUXQNLUR]JDá]LHQLD0R*Oi-

ZHMHVWWH*Z\ZRá\ZDQLHVNU\SWyZZM]\NXECMAScript

2

.

;6/PDVáX*\üGRGHILQLRZDQLDDUNXV]\VW\OLVW\F]Q\FK]DWHPRSUyF]GHILQLRZDQLDSU]HNV]WDá-

FH ZLQLHQ WDN*H XPR*OLZLDü RNUHODQLH VSRVREX SUH]HQWDFML 6áX* GR WHJR HOHPHQW\ ]ZDQH

RELHNWDPLIRUPDWXMF\PLformatting objects-HOLZGU]HZLHZ\QLNRZ\P]QDMGVLRZHRELHNW\

WRSRZLQQ\RQHE\üLQWHUSUHWRZDQHSU]H]SU]HJOGDUNLVWHURZDüVSRVREHPSUH]HQWDFML

2.3.

&]FLLZHUVMHVSHF\ILNDFML;6/

3RQLHZD*F]üM]\ND;6/VWHUXMFDSU]HNV]WDáFHQLDPLMHVWNOXF]RZDZWRNXSUDFQDGM]y-

NLHPZ\G]LHORQRMZRVREQVSHF\ILNDFMQD]ZDQ;6/7XSL Transformations) [9@SUDFHQDGW

F]FLVSHF\ILNaFMLZ]DVDG]LHXNRF]RQR

: WUDQVIRUPDFMDFK ;6/ GR ]QDOH]LHQLD HOHPHQWX Z GU]HZLH ZHMFLRZ\P X*\ZDQH V Z]RUFH

(patterns

]DSLV\ZDQHZSRVWDFLW]ZFLH*HNpaths6SHF\ILNDFMDRZ\FKFLH*HN²ZVSyOQDGOD

;6/M]\ND;3RLQWHUSDWU]>3, 4]) oraz XML Query²]RVWDáDZ\G]LHORQDSRGQD]Z;3DWK>10]

LWDN*HMHVWXNRF]RQD

3HáQDGHILQLFMDM]\ND;6/VNáDGDVL]DWHP]GHILQLFMLSU]HNV]WDáFH;6/7Z]RUFyZ;3DWK

RUD]VáRZQLNDRELHNWyZIRUPDWXMF\FK

1LHVWHW\SUDFQDGVSHF\ILNDFMRELHNWyZIRUPDWXMF\FKMHV]F]HQLHXNRF]RQRQLHPDWH*LFK

LPSOHPHQWDFML Z SRSXODUQ\FK SU]HJOGDUNDFK 'ODWHJR REHFQLH QDMEDUG]LHM W\SRZ\P VSRVREHP

Z\NRU]\VWDQLD;6/GRWZRU]HQLDDUNXV]\VW\OLVW\F]Q\FKMHVWSLVDQLHVNU\SWyZSU]HNV]WDáFDMF\FK

;0/QD+70/:\GDZDáRE\VL*HGRWHJRFHOXQDOH*\X*\üZHUVMLM]\ND]DZDUWHMZVSHF\ILNa-

FML;6/7OHF]QLHVWHW\LWDF]ü;6/QLHMHVWMHV]F]H]DLPSOHPHQWRZDQDZSRSXODUQ\FKSU]HJO-

2

ECMAScript jest to

XVWDQGDU\]RZDQDRGPLDQDM]\NDJavaScript.

background image

124

Tomasz Traczyk

GDUNDFK'ODWHJRGRSLVDQLDDUNXV]\VW\OLVW\F]Q\FKX*\ZDVLQLHNLHG\VWDUV]HMZHUVML;6/NWyUHM

SURFHVRUMHVWF]FLSU]HJOGDUNLMicrosoft Internet Explorer 5 (MSIE 5) — i tak skonstruowano

SU]\NáDGSRGaQ\Z]HV]áRURF]Q\PUHIHUDFLH>2].

=QDF]QLH Z\JRGQLHMV]HM QRZV]HM ZHUVML M]\ND WUDQVIRUPDFML ZJ VSHF\ILNDFML ;6/7 PR*QD

QDWRPLDVW ] SRZRG]HQLHP X*\ZDü GR VDPHJR SU]HNV]WDáFDQLD GRNXPHQWyZ ;0/ Z LQQH GRNu-

PHQW\;0/OXE+70/LVWQLHMMX*ERZLHPSURFHVRU\;6/]JRGQH]QDMQRZV]VSHF\ILNDFM

3RQLHZD*SUDFHQDGSHáQGHILQLFMM]\NDWUZDMREHFQLHGRVWSQDMHVWMHG\QLHZHUVMDworking

draft

VSHF\ILNDFMLFDáRFL;6/>7].

2.4.

6NáDGQLDM]\ND

6NáDGQLD;6/]RVWDáDZSHáQL]GHILQLRZDQDZ;0/]X*\FLHPSU]HVWU]HQLQD]Znamespaces).

2.4.1.

3URORJLHOHPHQWJáyZQ\

6NU\SWF]\DUNXV]VW\OLVW\F]Q\Z;6/MHVWGRNXPHQWHP;0/PR*HZLFUR]SRF]\QDüVLRG

instrukcji przetwarzania

<?xml... ?>

-HOLVNU\SW;6/PD]DZLHUDü]QDNLQDURGRZHZNRGo-

ZDQLX LQQ\P RG 87) VWDQGDUGX GOD ;0/ WR WD LQVWUXNFMD SU]HWZDU]DQLD MHVW RERZL]NRZD L

PXVL]DZLHUDüDWU\EXW

encoding

SRGDMF\ZáDFLZHNRGRZDQLHSDWU]SU]\NáDG

-DN ND*G\ GRNXPHQW ;0/RZ\ VNU\SW Z ;6/ ]DZLHUD MHGHQ HOHPHQW JáyZQ\

xsl:stylesheet

: ]QDF]QLNX HOHPHQWX JáyZQHJR GHILQLXMH VL SU]HVWU]H QD]Z SDWU] >3, 4])

M]\ND;6/'ODZHUVML;6/]DLPSOHPHnWRZDQHMZ06,(]QDF]QLNSRF]WNRZ\Z\JOGDWDN

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

]DGOD;6/7WDN

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

przy czym atrybut

version

MHVW RERZL]NRZ\ 3URFHVRU\ ;6/ SRZLQQ\ DQDOL]RZDü DGUHV 85,

podany w atrybucie

xmlns

LZ]DOH*QRFLRGQLHJRRGSRZLHGQLRLQWHUSUHWRZDü]DZDUWRüVNU\SWX

2F]\ZLFLH Z VNU\SWDFK ;6/ PR*QD WDN*H XPLHV]F]Dü NRPHQWDU]H Z VSRVyE ZáDFLZ\ GOD

;0/SDWU]SU]\NáDG

2.4.2. Przypisanie arkusza stylistycznego do dokumentu

-HOLVNU\SW;6/PDSHáQLüGODGRNXPHQWX;0/URODUNXV]DVW\OLVW\F]QHJRWRSRWU]HEQHMHVW

SRZL]DQLH GRNXPHQWX ;0/ ] RZ\P VNU\SWHP 6SRVyE ZVND]DQLD GRP\OQHJR DUNXV]D VW\Oi-

VW\F]QHJRRNUHODRVREQDVSHF\ILNDFMD>11@'HILQLXMHRQDLQVWUXNFMSU]HWZDU]DQLDRQDVWSXMFHM

SRVWDFLSDWU]SU]\NáDG

<?xml-stylesheet type="text/xsl" href="

plik_arkusza_stylistycznego"?>

,QVWUXNFMWXPLHV]F]DVLZSURORJXIRUPDWRZDQHJRGRNXPHQWX;0/
3RQLHZD*GRNXPHQWPR*HZ\PDJDüUy*QHJRIRUPDWRZDQLDZ]DOH*QRFLRGVSRVREXSU]HSUo-

ZDG]DQLDSUH]HQWDFMLQSRGSURJUDPXGRWHJRVáX*FHJRZMHGQ\PGRNXPHQFLHPR*QDXPLHFLü
kilka instrukcji

<?xml-stylesheet?>

Uy*QLF\FKVLZDUWRFLpseudoatrybutu

media

. W pliku

]SU]\NáDGXPR*QDE\QSXPLHFLüGRGDWNRZRLQVWUXNFMSRVWDFL

<?xml-stylesheet type="text/xsl" media="lynx" href="konspekty.lynx.xslt"?>

²LQVWUXNFMDWDE\áDE\XZ]JOGQLRQDMHOLGRSUH]HQWDFMLX*\W\E\áE\SURJUDPlynx. Ta z instrukcji

<?xms-stylesheet?>

, która nie ma pseudoatrybutu

media

ZVND]XMH GRP\OQ\ DUNXV] VW\Oi-

styczny.

=Z\NOHMHVWPR*OLZHWDN*HWDNLHZ\ZRáDQLHSURFHVRUD;6/E\X*\W\]RVWDáDUNXV]VW\OLVW\F]Q\

Uy*Q\RGDrkuszy podanych w samym dokumencie.

background image

-]\N;6/

125

2.4.3. Sterowanie

VHULDOL]DFM

:VNU\SWDFK]JRGQ\FK]HVSHF\ILNDFM;6/7PR*QDXPLHFLüLQVWUXNFM

xsl:output

, steruj

-

FSURFHVHPVHULDOL]DFML2NUHODVLZQLHMWDNLHFHFK\Z\MFLRZHJRSOLNXWHNVWRZHJRMDNVSRVyE

NRGRZDQLD]QDNyZQDURGRZ\FKWZRU]HQLHZFLüZWHNFLHXPLHV]F]DQLHZWHNFLHZ\MFLRZ\P
instrukcji przetwarzania

<?xml ...>

itp.

1DMZD*QLHMV]\PSDUDPHWUHPserializacji jest tzw. metoda. Przewidziano trzy metody standar-

dowe:

xml

— wyprowadzanie pliku w XML, poprawnego przynajmniej w sensie well-formed;

html

² Z\SURZDG]DQLH SOLNX Z +70/ QLH MHVW RQ SRSUDZQ\P SOLNLHP ;0/ JG\* QLH

prze

VWU]HJDVL;0/RZ\FKUHJXá]DP\NDQLD]QDF]QLNyZ

text

²Z\SURZDG]DVLZ\áF]QLHWHNVWRZ]DZDUWRüHOHPHQWyZDOHEH]VDP\FK]QDF]Qi-

ków.

3U]\NáDGRZDLQVWUXNFMDVWHUXMFDVHULDOL]DFMPR*HPLHüSRVWDü

<xsl:output method="xml" indent="yes" omit-xml-declaration="yes" encoding="iso-

8859-2" />

,QQ\SU]\SDGHNSRND]DQRZSU]\NáDG]LH

2.4.4.

Ä&LDáR´VNU\SWX

Ä&LDáR´VNU\SWX]DZLHUD]Z\NOHZLHOHV]DEORQyZtemplate rulesVáX*F\FKGRSU]HWZDU]DQLD

NROHMQ\FK ÄSR]LRPyZ´ GU]HZD ZHMFLRZHJR 0RJ WH* WX ]QDMGRZDü VL GHILQLFMH ]PLHQQ\FK L
parametrów globalnych.

2.4.5. Wzorce

W atrybutach

match

V]DEORQyZSRGDMHVLZ]RUFHVáX*FHGRZ\V]XNLZDQLDRGSRZLHGQLFKHOe-

PHQWyZZGU]HZLHZHMFLRZ\P:]RUFHWHV]DSLVDQHZM]\NX;3DWKRNWyU\PZLFHMQDSLVDQR
dalej.

3.

;6/EDUG]LHMV]F]HJyáRZR

W kolejnym rozdziale

RSLVDQREDUG]LHMV]F]HJyáRZRSRV]F]HJyOQHVNáDGQLNL;6/

3.1. Transformacje XSL

,VWRWG]LDáDQLD;6/MHVWWUDQVIRUPDFMDGU]HZDZHMFLRZHJRZLQQHGU]HZRUHSUH]HQWXMFHHOe-

PHQW\LDWU\EXW\7UDQVIRUPDFMDSROHJDZLFQDZ\V]XNLZDQLXZ]áyZZGU]HZLHZHMFLRZ\PL

WZRU]HQLXZ]áyZGU]HZDZ\MFLRZHJR

3.1.1. Szablony i przetwarzanie rekurencyjne

7UDQVIRUPDFM GU]HZD ZHMFLRZHJR VWHUXM V]DEORQ\ 'U]HZR MHVW SU]HJOGDQH RG NRU]HQLD L

wykonywana jest próba dopasowania wzorców

match

LVWQLHMF\FKV]DEORQyZ-HOLGRSDVRZDQLH

XGDVLDÄFLDáR´V]DEORQX]DZLHUDLQVWUXNFM

xsl:apply-templates

, to proces jest powtarzany

rekurencyjnie.

2F]\ZLFLHDE\GDQ\V]DEORQPyJáE\üZRJyOHZ\NRU]\VWDQ\ZSU]HWZDU]DQLXQLH]EGQHMHVW

E\ SURFHV UHNXUHQF\MQHJR SU]HWZDU]DQLD GU]HZD GRV]HGá GR SR]LRPX HOHPHQWyZ SU]HWZDU]DQ\FK

SU]H] yZ V]DEORQ 0XV] ZLF LVWQLHü V]DEORQ\ SU]HWZDU]DMFH QDGU]GQH SR]LRP\ Z GU]HZLH L

SU]HND]XMFHSU]HWZDU]DQLH]DSRPRFLQVWUXNFML

xsl:apply-templates

GRNROHMQ\FKQL*V]\FK

poziomów hierarchii.

background image

126

Tomasz Traczyk

:VWDQGDUG]LHRNUHORQRL*V]DEORQLQLFMXMF\SU]HWZDU]DQLHGU]HZDWMSRZRGXMF\SU]HWZa-

U]DQLHHOHPHQWyZEH]SRUHGQLRSRGU]GQ\FKNRU]HQLDGU]HZDF]\OL

<xsl:template match="/">

<xsl:apply-templates/>

<xsl:template/>

jest szablonem wbudowanym (built-in template

LQLHZ\PDJDVLMHJRSRGDZDQLD

3U]HWZDU]DQLHNROHMQ\FKHOHPHQWyZNRF]\VLQDSR]LRPLHOLFLGU]HZD/LFLHGU]HZDRGSo-

ZLDGDM ]DZDUWRFL HOHPHQWyZ QDMQL*V]HJR SR]LRPX ² D ZLF WHNVWRZL QLH ]DZLHUDMFHPX MX*

]QDF]QLNyZ1DMF]FLHMWD]DZDUWRüPDE\üSU]HSLVDQDGRGU]HZDZ\MFLRZHJR6WDQGDUG;6/

RNUHODZáDQLHWDNLGoP\OQ\VSRVyESU]HWZDU]DQLDF]\OL

<xsl:template match="text()">

<xsl:value-of/>

</xsl:template>

MHVWWDN*HV]DEORQHPZEXGRZDQ\PLQLHZ\PDJDVLMHJRSRGDZDQLD

:LPSOHPHQWDFMDFKQSZ06,(V]DEORQ\ZEXGRZDQHE\ZDMMHGQDNQLHXZ]JOGQLRQHQLe-

]EGQHMHVWZyZF]DVMDZQHLFKSRGDQLHFRWH*XF]\QLRQRZSU]\NáDG]LHSRGDQ\PZUHIHUDFLH]e-

V]áorocznym [2].

3.1.2. Kontekst

Wzorce (patterns

VáX*FHGRZ\ELHUDQLDHOHPHQWyZSRGOHJDMF\FKSU]HWZDU]DQLXPDMSRVWDü

FLH*HNpathsSRGDMF\FKZVSyáU]GQHaxisV]XNDQHJRHOHPHQWXZ]JOGHPELH*FHJRNRQWHNVWX

.RQWHNVWWHQ]DOH*\RGV\WXDFMLZNWyUHMZ\ZRáDQD]RVWDáDLQVWUXNFMDSRZRGXMFDGRSDVRZ\ZDQLH
wzorców.

1DMZD*QLHMV]\PNRQWHNVWHPMHVWWHQ]ZL]DQ\]ZQWU]HPV]DEORQX3U]\MWR*HNRQWHNVWHP

LQVWUXNFMLG]LDáDMF\FKZÄFLHOH´V]DEORQXMHVWWHQHOHPHQWNWyU\MHVWZáDQLHSU]HWZDU]DQ\SU]H]

yZV]DEORQ:]RUFHX*\ZDQHZÄFLHOH´V]DEORQXVZLFSRGDZDQHZ]JOGHPELH*FHJRHOHPHQWX
dopasowanego do wzorca

match

szablonu.

5HNXUHQF\MQH SU]HWZDU]DQLH SRZRGXMH ZLF ÄZGUyZN´ NRQWHNVWX SR NROHMQ\FK SR]LRPDFK

GU]HZD ZHMFLRZHJR 8DNW\ZQLHQLH V]DEORQX QD VNXWHN G]LDáDQLD LQVWUXNFML

xsl:apply-

templates

SRZRGXMH]PLDQNRQWHNVWXRMHGHQSR]LRPZNLHUXQNXOLFLGU]HZD

3

.

']LNLWHPXUR]ZL]DQLXZ]RUFH

match

V]DEORQyZQLHPXV]]DZLHUDüFLH*HNEH]Z]JOGQ\FK

LWHQVDPV]DEORQPR*HE\üZ\NRU]\VWDQ\GRSU]HWZDU]DQLDWDNLFKVDP\FK]QDF]QLNyZXPLHV]F]o-

Q\FKQDUy*Q\FKSR]LRPDFKKLHUDUFKLLHOHPHQWyZ:SU]\NáDG]LHZWDNLVSRVyEVSU]HWZDU]DQH
np. znaczniki

<I>

.

3.1.3. Konflikty

wzorców

=GDU]\üVLPR*HL*GRGDQHJRHOHPHQWXZGU]HZLHZHMFLRZ\PSDVXMZ]RUFHNLONXV]DEOo-

QyZÏZNRQIOLNWMHVWUR]VWU]\JDQ\]SRPRFRNUHORQ\FKZVSHF\ILNDFMLSULRU\WHWyZ6WRVRZDQ\

MHVWW\ONRWHQ]V]DEORQyZNWyUHJRZ]RU]HFPDQDMZ\*V]\SULRU\WHW

-HOLSULRU\WHW\SDVXMF\FKZ]RUFyZVUyZQHWRGHF\GXMHNROHMQRüXPLHV]F]HQLDV]DEORQyZZ

skrypcie — stosowany jest ostatni z szablonów.

3

:;6/7LVWQLHMHZD*Q\Z\MWHNRGWHMUHJXá\GRW\F]F\V]DEORQyZQD]ZDQ\FK

background image

-]\N;6/

127

3.1.4. Przetwarzanie

proceduralne

8]XSHáQLHQLHPSU]HWZDU]DQLDUHNXUHQF\MQHJR]DSRPRFV]DEORQyZMHVWSU]HWZDU]DQLHSURFHGu-

UDOQH : ÄFLHOH´ V]DEORQX PR*H ]QDMGRZDü VL SURJUDP ]DSLVDQ\ ]D SRPRF LQVWUXNFML SWOL

xsl:for-each

czy warunków

xsl:if

lub

xsl:choose

.

3WOD

xsl:for-each

XPR*OLZLDLWHUDF\MQHSU]HJOGDQLHHOHPHQWyZGRSDVRZDQ\FKGRZ]RUFD

podanego w atrybucie

select

:SU]\NáDG]LHZ\NRU]\VWDQRSWOGRZ\SHáQLDQLDWDEHOL

Instrukcja warunkowa

xsl:if

Z\NRU]\VW\ZDQD MHVW F]VWR GR WZRU]HQLD HOHPHQWyZ GU]HZD

Z\MFLRZHJRSRFKRG]F\FKRGRSFMRQDOQ\FKHOHPHQWyZZHMFLRZHJRGRNXPHQWX-HOLZDWU\Eu-
cie

test

SRGDP\Z]RU]HFWRZDUXQHNEG]LHVSHáQLRQ\JG\ZVND]\ZDQ\SU]H]yZZ]RU]HFHOe-

PHQWOXEDWU\EXWLVWQLHMH:]RUFHGHILQLRZDQHVZM]\NX;3DWKZNWyU\PPR*QDSRGDZDüZa-
runki logiczne w postaci tzw. predykatów.

Instrukcja

xsl:if

QLHPDF]FLelse-HOLZLFSRWU]HEQDMHVWWHJRW\SXNRQVWUXNFMDWRZ\No-

U]\VWDü QDOH*\ LQVWUXNFM ]ZURWQLF\

xsl:choose

0D RQD SRVWDü FLJX DOWHUQDW\ZQ\FK EORNyZ

ZDUXQNRZ\FK]PR*OLZRFLSRGDQLDEORNXGRP\OQHJR

<xsl:choose>

<xsl:when test="...">

...

</xsl:when>

...

<xsl:otherwise>

...

</xsl:otherwise>

</xsl:choose>

3.1.5.

7ZRU]HQLHGU]HZDZ\MFLRZHJR

,QVWUXNFMHLWHNVW\]DZDUWHZÄFLHOH´V]DEORQXPDM]D]DGDQLHXWZRU]HQLHRGSRZLHGQLHMF]FL

GU]HZD Z\MFLRZHJR : W\P FHOX RNUHORQR V]HUHJ LQVWUXNFML VáX*F\FK GR WZRU]HQLD VWUXNWXU\

GU]HZDZ\MFLRZHJRQS

xsl:element

VáX*\GRWZRU]HQLDHOHPHQWyZZGU]HZLHZ\MFLRZ\PSDWU]SU]\NáDG

xsl:attribute

XPR*OLZLDGRGDQLHDWU\EXWXGRRVWDWQLRXWZRU]RQHJRHOHPHQWX

xsl:text

XPLHV]F]DZGU]HZLHZ\MFLRZ\PSRGDQ\ZLQVWUXNFMLWHNVW

xsl:comment

SR]ZDODXPLHV]F]DüZGU]HZLHZ\MFLRZ\PNRPHQWDU]HSDWU]SU]\NáDG

xsl:processing-instruction

WZRU]\LQVWUXNFMSU]HWZDU]DQLD

'RSU]HQRV]HQLDGRGU]HZDZ\MFLRZHJR]DZDUWRFLHOHPHQWyZOXEDWU\EXWyZVáX*\LQVWUXNFMD

xsl:value-of

SDWU]SU]\NáDG). Instrukcje

xsl:copy

i

xsl:copy-of

SR]ZDODMQDVNRSLRZa-

QLHFDá\FKIUDgPHQWyZGU]HZDZHMFLRZHJRGRGU]HZDZ\MFLRZHJR

3U]\MWRWH*ZD*QLEDUG]RZ\JRGQ]DVDGL*ZV]\VWNLHF]FLÄWHNVWRZH´VNU\SWX²WMWH

NWyUHQLHQDOH*GRSU]HVWU]HQLQD]Z

xsl

OXELQQHMSU]HVWU]HQLQD]Z]QDQHMSURFHVRURZL;6/²V

po prostu kopiowane „literalnie” (tzw. literal result elements

GR GU]HZD Z\MFLRZHJR -HOL Z

RZ\FKF]FLDFKV]QDF]QLNLQS+70/WRPXV]VSHáQLDüZDUXQNLSRSUDZQRFLZVHQVLHwell-
formed

.RQWHNVW GR NWyUHJR VNRSLRZDQH ]RVWDQ RGSRZLHGQLH F]FL VNU\SWX MHVW Z\]QDF]RQ\

SU]H]LQVWUXNFM;6/ZHZQWU]NWyUHM]QDMGXMHVLNRSLRZDQ\WHNVW-HVWWREDUG]RF]VWRZ\NRU]y-

VW\ZDQDFHFKDX*\WRMHMWH*ZSU]\NáDG]LH²ZWHQVSRVyEWZRU]RQHVQSZ\MFLRZH]QDF]QLNL
HTML.

3.1.6. Sortowanie

:W\FKLQVWUXNFMDFK;6/NWyUHSU]HWZDU]DM]ELRU\HOHPHQWyZQS

xsl:apply-templates

czy

xsl:for-each

PR*OLZHMHVWZ\NRQDQLHVRUWRZDQLDWMSU]HND]DQLHGRGU]HZDZ\MFLRZHJR

background image

128

Tomasz Traczyk

HOHPHQWyZXSRU]GNRZDQ\FKZ]JOGHPZDUWRFLHOHPHQWXOXEDWU\EXWX:VWDUV]HMZHUVML;6/GR

RNUHOHQLDVSRVREXVRUWRZDQLDVáX*\áDWU\EXW

order-by

SDWU]SU]\NáDGZUHIHUDFLH>2]). W XSLT

ZSURZDG]RQR GRGDWNRZ LQVWUXNFM R ZLNV]\FK PR*OLZRFLDFK

xsl:sort

SDWU] SU]\NáDG

:DUWRüDWU\EXWX

select

GHF\GXMHRW\PZHGáXJ]DZDUWRFLNWyUHJRHOHPHQWXF]\DWU\EXWXZy-

NRQDQH PD E\ü VRUWRZDQLH 2NUHOLü PR*QD WDN*H LQQH FHFK\ VRUWRZDQLD QS M]\N RG NWyUHJR

]DOH*\NROHMQRü]QDNyZDOIDEeWXSRU]GHNURVQF\OXEPDOHMF\LWS

3.2. XPath

:ZLHOXLQVWUXNFMDFK;6/VWRVXMHVLZ]RUFHGRZ\V]XNLZDQLDRGSRZLHGQLFKHOHPHQWyZOXE

DWU\EXWyZZGU]HZLHZHMFLRZ\P3RQLHZD*WDNLHVDPHZ]RUFH]DSLVDQHZSRVWDFLFLH*HNpa-
ths

X*\ZDQHVWDN*HGRDGUHVRZDQLDIUDJPHQWyZGRNXPHQWyZZM]\NX;3RLQWHUSDWU]>4]) i

]DSHZQHEGSRGVWDZVSHF\ILNDFMLM]\ND]DS\WD;0/Query (patrz [4@VSHF\ILNDFMM]\ND
wzorców wydzielono i nazwano XPath [10].

:\V]XNLZDQLHRGE\ZDVL Z GU]HZLH ZHMFLRZ\P :]á\ nodes WHJR GU]HZD RGSRZLDGDM

HOHPHQWRPDWU\EXWRPRUD]WHNVWRPVWDQRZLF\P]DZDUWRüHOHPHQWyZ7DN*HNRPHQWDU]HLLn-

VWUXNFMHSU]HWZDU]DQLDSRZRGXMSRZVWDQLHRGSoZLHGQLFKZ]áyZZGU]HZLHZHMFLRZ\P

FLH*NL ]D SRPRF NWyU\FK ]DSLVXMH VL Z]RUFH PDM RG]ZLHUFLHGODü PLHMVFH SRV]XNLZDQHJR

HOHPHQWXZGU]HZLH²Z]RURZDQRVLWX]DSHZQHQDFLH*NDFK]QDQ\FK]V\VWHPX8QL[FLH*ND

RNUHOD SRáR*HQLH V]XNDQ\FK Z]áyZ Z GU]HZLH ZHMFLRZ\P RUD] ZDUXQNL NWyUH PXV] VSHáQLDü

V]XNDQHZ]á\

FLH*ND;3DWKVNáDGDVL]RGG]LHORQ\FKXNRQLNDPL

/

) kroków (steps

.D*G\]NURNyZPR*H

E\ü

VSHF\ILNDWRUHPZVSyáU]GQ\FKaxis specifier);

WHVWHPZ]áDnode testHZHQWXDOQLHX]XSHáQLRQ\PSUHG\NDWHP

:Z\QLNXZ\V]XNLZDQLD]DSRPRFZ]RUFD;3DWKRGQDMG\ZDQHVRGSRZLHGQLHZ]á\GU]HZD

ZHMFLRZHJR-HOLZ]RU]HFÄSDVXMH´GRZLHOXRELHNWyZWRZ\QLNZ\V]XNDQLD]DZLHUDMHZV]\Vt-
kie.

3.2.1.

:VSyáU]GQH

=DSLVR]QDF]DMF\W]ZZVSyáU]GQHaxisZ\V]XNLZDQHJRHOHPHQWXVáX*\GRRNUHOHQLDPLHj-

VFDZGU]HZLHZHMFLRZ\PZNWyU\PZ\V]XNLZDQHEGHOHPHQW\:VSyáU]GQHV]Z\NOHSo-

GDZDQHZ]JOGHPELH*FHJRNRQWHNVWXPR*QDWH*SRGDüZVSyáU]GQHEH]Z]JOGQHUR]SRF]\QDMF

FLH*NRGV\mbolu korzenia (podobnie jak w Unixie).

'R ]DSLVX ZVSyáU]GQ\FK VáX* RGSRZLHGQLH V\PEROH VáRZQH QDMZD*QLHMV]H ] QLFK PDM WH*

VNUyW\1DMF]FLHMX*\ZDQHVSHF\ILNDWRU\ZVSyáU]GQ\FKSRGDMHTabela 1.

Tabela 1

1DMF]FLHMX*\ZDQHVSHF\ILNDWRU\ZVSyáU]GQ\FKZ

XPath

Symbol

Skrót

Opis znaczenia

/

QDSRF]WNXFLH*NL

.RU]HGU]HZD

self

.

%LH*F\Z]Há

parent

..

:]HáEH]SRUHGQLRQDGU]GQ\

ancestor

:]á\QDGU]GQHQLHNRQLHF]QLHEH]SRUHGQLR

child

:]á\EH]SRUHGQLRSRGU]GQHZVSyáU]GQHGRP\OQH

descendant

:]á\SRGU]GQHQLHNRQLHF]QLHEH]SRUHGQLR

descendant-or-self

//

:]á\SRGU]GQHZUD]]ELH*F\P

attribute

@

$WU\EXW\ELH*FHJRHOHPHQWX

background image

-]\N;6/

129

6áRZQH V\PEROH ZVSyáU]GQ\FK RGG]LHOD VL RG QDVWSXMF\FK SR QLFK NURNyZ ]QDNLHP So-

GZyMQHJR FXG]\VáRZX QS

descendant::przedmiot

oznacza wszystkie elementy typu

przedmiot

, pod

U]GQHQLHNRQLHF]QLHEH]SRUHGQLRZVWRVXQNXGRELH*FHJRZ]áD

3.2.2.

7HVW\Z]áyZ

7HVW Z]áD node test SRGDMH NWyUH HOHPHQW\ V Z\V]XNLZDQH Z RNUHORQ\P SU]H] SRGDQH

ZVSyáU]GQHREV]DU]HGU]HZD7HVWWHQPR*HZ\V]XNLZDüHOHPHQW\DWU\EXW\OXEZ]á\WHNVWRZH

=DSLV WHVWX Z]áD ]DZLHUD QD]Z Z\V]XNLZDQHJR HOHPHQWX

4

QD]Z DWU\EXWX OXE RNUHOHQLH W\SX

Z]áD6\PEROHW\SyZZ]áyZ]HVWDZLDTabela 2.

Tabela 2

6\PEROHW\SyZZ]áyZZ

XPath

Symbol

Opis znaczenia

node()

'RZROQ\Z]Há

*

Dowolny element

@*

Dowolny atrybut

text()

:]HáWHNVWRZ\

comment()

:]HáNRPHQWDU]D

processing-instruction()

:]HáLQVWUXNFMLSU]HWZDU]ania

.URNZFLH*FHPR*H]DZLHUDüDOWHUQDW\ZNLONXWHVWyZRGG]LHORQ\FKSLRQRZNUHVN

|

); wy-

ko

U]\VWDQRWRZSU]\NáDG]LH

3.2.3. Predykaty

7HVWZ]áDPR*HE\üRJUDQLF]DQ\SUHG\NDWHPNWyU\SRGDMHZDUXQHNMDNLPXV]VSHáQLDüZy-

V]XNLZDQHZ]á\3UHG\NDWSRGDMHVLZQDZLDVDFKNZDGUDWRZ\FKEH]SRUHGQLRSRWHNFLHWHVWX

Z]áD

1DMSURVWV]\SUHG\NDW]DZLHUDOLF]ENWyUDRNUHODNROHMQ\QXPHUHOHPHQWXQS

przedmiot[2]

R]QDF]DGUXJLHOHPHQWW\SXSU]HGPLRW=DPLDVWOLF]E\PR*HE\üX*\W\V\PEROIXQNFMLRNUHODMFHM
numer kolejny, np.

przedmiot[last()]

R]QDF]DRVWDWQLZNROHMQRFLHOHPHQWW\SX

przedmiot

.

3UHG\NDW]DZLHUDüPR*HZHZQWU]FLH*N]DSLVDQZ]JOGHPNRQWHNVWXWHJRZ]áDNWyUHJR

WHVWMHVWRJUDQLF]DQ\GDQ\PSUHG\NDWHP7DNLSUHG\NDWMHVWSUDZG]LZ\MHOLRZDFLH*NDSURZDG]L

GR LVWQLHMFHJR HOHPHQWX 1S ]DSLV

przedmiot[slowo_kluczowe]

oznacza elementy typu

przedmiot

SRVLDGDMFHSRGU]GQHHOHPHQW\W\SX

slowo_kluczowe

8*\ZDMFIXQNFML

not()

PR*HP\

]QDOH(ü

SU]HGPLRW\

QLH

PDMFH

VáyZ

NOXF]RZ\FK

przed-

miot[not(slowo_kluczowe)]

.

3UHG\NDWPR*H]DZLHUDüZDUXQHNORJLF]Q\PDMF\]UHJXá\SRVWDüSRUyZQDQLD:SRUyZQDQLX

X*\WDPR*HE\üZDUWRüHOHPHQWXOXEDWU\EXWXQS

przedmiot[@id='KBD2']

wyszuka element

typu

przedmiot

o identyfikatorze ‘KBD2’

5

8*\üWH*PR*QDVSHFMDOQ\FKIXQNFMLLRSHUDWRUyZQS

przedmiot[position() mod 2 = 0]

wyszuka przedmioty o parzystych pozycjach.

=HVWDZLHQLHZD*QLHMV]\FKIXQNFMLLRSHUDWRUyZSRGDMHTabela 3.

Tabela 3

:D*QLHMV]HRSHUDWRU\LIXQNFMHZSUHG\NDWDFK

XPath

Symbol

Opis znaczenia

=

,

!=

,

<

,

>

,

<=

,

>=

Porównania

4

1D]ZDHOHPHQWXPR*HE\üSRSU]HG]RQDQD]ZSU]HVWU]HQLQD]Znamespace) i dwukropkiem.

5

-HOLZZDUXQNXZ\VWSLüPDVWDáD]QDNRZDWRMHVWRQDXMPRZDQDZSRMHG\QF]HDSRVWURI\

background image

130

Tomasz Traczyk

or

,

and

,

not(...)

Operacje logiczne

+

,

-

,

div

,

mod

Operacje arytmetyczne

position()

1XPHUNROHMQ\Z]áDZUyGZ]áyZWHJRVDPHJRW\SX

last()

1XPHUNROHMQ\RVWDWQLHJR]Z]áyZWHJRVDPHJRW\SX

count(...)

/LF]EDZ]áyZSDVXMF\FKGRZ]RUFDSRGDQHJRZDUJXPHQFLH

name()

Nazwa elementu/atrybutu

string(...)

Konwersja na napis

format-number(...)

Konwersja liczby na napis z formatowaniem

number(...)

.RQZHUVMDQDOLF]E

normalize-space(...)

8VXQLFLHZLRGF\FKLNRFRZ\FKVSDFML

starts-with(...)

7HVWSRF]WNXWHNVWX

contains(...)

7HVW]DZDUWRFLWHNVWX

3UHG\NDW\PRJE\üX*\WHZZLHOXPLHMVFDFKZMHGQHMFLH*FHZV]G]LHWDPJG]LHX*\WRWHVWX

Z]áD 1S

przedmiot[contains(@id,'2')]/slowo_kluczowe[. !='Oracle']

poda

Uy*QHRGµ2UDFOH¶VáRZDNOXF]RZHSU]HGPLRWyZNWyU\FKLGHQW\ILNDWRU]DZLHUDF\IU

: ZDUXQNDFK SRUyZQ\ZDü PR*QD ZDUWRFL HOHPHQWyZ OXE DWU\EXWyZ Uy*Q\FK RG ELH*FHJR

NRQWHNVWX²SRGDMHVLGRQLFKFLH*NQS

SU]HGPLRW>F]HVFBNRQVSHNWX#LG 7UHü@

oznacza elementy typu

przedmiot

PDMFHHOHPHQW\SRGU]GQHQLHNRQLHF]QLHEH]SRUHGQLRW\SX

czesc_konspektu

RLGHQW\ILNDWRU]Hµ7UHü¶

3.3. XSLT

3RF]WNRZRM]\NWUDQVIRUPDFMLQLHE\áZ\G]LHORQ\]HVSHF\ILNDFML;6/:URNXGRNRQa-

QRWDNLHJRZ\G]LHOHQLDLRSXEOLNRZDQRRVREQVSHF\ILNDFM;6/7XSL Transformations) [9]. W

VSHF\ILNDFMLWHMGRNRQDQRLVWRWQ\FK]PLDQLX]XSHáQLHM]\ND3RZRGXMHWRL*ZF]HQLHMV]HLm-

SOHPHQWDFMH;6/QLHG]LDáDM];6/7:V]F]HJyOQRFLGRW\F]\WRSURFHVRUD;6/ZEXGRZDQHJR
w popu

ODUQSU]HJOGDUN06,(

1DMZD*QLHMV]H]PLDQ\ZSURZDG]RQHZVSHF\ILNDFML;6/7RSLVDQRQL*HM

3.3.1. Zmienne

:VNU\SFLH;6/7PR*QDGHILQLRZDü]PLHQQH6áX*\GRWHJRLQVWUXNFMD

xsl:variable

, mo-

JFDSU]\EUDüGZLHSRVWDFLH

<xsl:variable name="

nazwa_zmiennej" select="

Z\UD*HQLH"/>

<xsl:variable name="

nazwa_zmiennej">wzorzec</xsl:variable>

3LHUZV]D]W\FKSRVWDFLSRGDMHZDUWRüMDNRZ\QLNZ\UD*HQLDGUXJDSRZRGXMHZ\OLF]HQLHZDr-

WRFLMDNRUR]ZLQLFLDSRGDQHJRZ]RUFD=PLHQQDPR*H]DZLHUDüZDUWRüWHNVWRZ]ELyUZ]áyZ

OXEGU]HZRZ]áyZ

=DVLJ ]PLHQQHM ]GHILQLRZDQHM Z RNUHORQ\P HOHPHQFLH VNU\SWX ;6/ REHMPXMH WHQ HOHPHQW

RUD]MHJRHOHPHQW\SRGU]GQH,QVWUXNFMD

xsl:variable

PR*HE\üX*\WDMDNRW]Ztop-level ele-

ment

WMHOHPHQWEH]SRUHGQLRSRGSRU]GNRZDQ\HOHPHQWRZLJáyZQHPX

xsl:stylesheet

. Tak

zdefiniowana zmienna jest globalna.

=GHILQLRZDQD]PLHQQDPR*HE\üX*\WDZDWU\EXWDFKLQVWUXNFML;6/ZV]G]LHWDPJG]LHRF]e-

NLZDQDMHVWZDUWRüZ\UD*HQLD1D]Z]PLHQQHMSRSU]HG]DVL]QDNLHP

$

.

=PLHQQHMDWDN*HSDUDPHWUXOXEZ\UD*HQLDPR*QDX*\üGRSRGVWDZLHQLDZDUWRFLWDNLHJRDWUy-

EXWXZNWyU\PRF]HNLZDQDMHVWZDUWRüWHNVWRZD7DNFHFKPDMQSDWU\EXW\

name

instrukcji

xsl:element

i

xsl:attribute

:WDNLFKV\WXDFMDFKZ\UD*HQLHOXEQD]Z]PLHQQHMSRSU]e-

background image

-]\N;6/

131

G]RQ]QDNLHP

$

XMPXMHVLGRGDWNRZRZQDZLDV\NODPURZH²R]QDF]DWRL*ZDUWRü]PLHQQHM

OXEZ\UD*HQLDEG]LH]DPLHQLRQDQDQDSLV.RQVWUXNFMWZ\NRU]\VWDQRZSU]\NáDG]LH

3.3.2. Tryby

(modes)

=GDU]DVLL*WHQVDPHOHPHQWSRZLQLHQE\üSU]HWZDU]DQ\NLONXNURWQLHZUy*Q\FKNRQWHNVWDFK

6WRVXMFSURVW\PHFKDQL]PV]DEORQyZ]Z]RUFDPLQLHPR*QD]Uy*QLFRZDüVSRVREXSU]HWZDU]DQLD

Z]DOH*QRFLRGNRQWHNVWX'ODWHJRXPR*OLZLRQRGRGDQLHGRV]DEORQXDWU\EXWX

mode

, który umo

*-

OLZLD Z\EUDQLH NRQNUHWQHJR V]DEORQX VSRUyG NLONX PDMF\FK Z]RU]HF SDVXMF\ GR GDQHJR HOe-

PHQWX :\ZRáXMF SU]HWZDU]DQLH UHNXUHQF\MQH LQVWUXNFM

xsl:apply-templates

PR*HP\ M

WDN*H X]XSHáQLü R DWU\EXW

mode

:\ELHUDP\ Z WHQ VSRVyE WHQ VSRUyG V]DEORQyZ R SDVXMF\P

Z]RUFXNWyU\PDWDNVaPZDUWRüDWU\EXWX

mode

.

3.3.3. Szablony

nazwane

,QQ\PHFKDQL]PXPR*OLZLDZ\ZRá\ZDQLHSU]HWZDU]DQLD]DSRPRFNRQNUHWQHJRV]DEORQX²Z

WHQ VSRVyE PR*QD ]EXGRZDü V]DEORQ X*\ZDQ\ GR SU]HWZDU]DQLD Uy*Q\FK HOHPHQWyZ QLH SDVXM-

F\FKGRZVSyOQHJRZ]RUFD']LDáDWRZVSRVyE]EOL*RQ\GRZ\ZRáDQLDSURFHGXU\

6]DEORQNWyU\PDE\üZWHQVSRVyEX*\W\X]XSHáQLDVLRDWU\EXWRQD]ZLH

name

²VWDMHVLRQ

tzw. szablonem nazwanym (named template

6]DEORQWDNLPR*QDZ\ZRáDüLQVWUXNFM

<xsl:call-template name="

nazwa_szablonu"/>

:SU]\SDGNXWDNLHJRZ\ZRáDQLDNRQWHNVWZNWyU\PG]LDáDMLQVWUXNFMH]DZDUWHZÄFLHOH´V]a-

EORQXQLH]PLHQLDVLL²LQDF]HMQL*GODZ\ZRáDQLDQDVNXWHN

xsl:apply-templates

— pozo-

VWDMHWDNLVDPMDNLRERZL]\ZDáGODPLHMVFDVNGV]DEORQZ\ZRáDQR

6]DEORQQD]ZDQ\PR*HPLHüSDUDPHWU\3DUDPHWU\IRUPDOQHV]DEORQXGHILQLXMHVLXPLHV]F]a-

MFZMHJRZQWU]XLQVWUXNFMH

xsl:param

1D]ZSDUDPHWUXSRGDMHDWU\EXW

name

DZDUWRüGo-

P\OQRNUHODVLWDNMDNGOD]PLHQQHM

'R ZDUWRFL WDN ]GHILQLRZDQHJR SDUDPHWUX RGZRá\ZDü VL PR*QD ZHZQWU] V]DEORQX SU]H]

podanie jego nazwy poprzedzonej znakiem

$

— podobnie jak do zmiennych.

:FHOXSU]HND]DQLDSDUDPHWUyZDNWXDOQ\FKSU]\Z\ZRáDQLXV]DEORQXZ]DZDUWRFLHOHPHQWX

xsl:call-template

XPLHV]F]DVLLQVWUXNFMH

xsl:with-param

=QRZXQD]ZSDUDPHWUXSo-

GDMHVLZDWU\EXFLH

name

]DZDUWRüRNUHODVLWDNMDNGOD]PLHQQHM²SRGDMFZ\UD*HQLHZ

atrybucie

select

OXEZ]RU]HFZHZQWU]XHOHPHQWX

3.3.4.

:áF]DQLHSOLNyZ;6/

:;6/7LVWQLHMLQVWUXNFMH

xsl:include

i

xsl:import

XPR*OLZLDMFHZáF]DQLHGRELH*-

FHJRVNU\SWX]DZDUWRFLLQQHJRSOLNX;6/$GUHV85,ZáF]DQHJRSOLNXSRGDMHVLZDWU\EXFLH

href

. Instrukcja

xsl:include

SRZRGXMHZáF]HQLH]DZDUWRFLSOLNXZPLHMVFXZ\VWSLHQLDLn-

VWUXNFMLZáF]RQD]DZDUWRüMHVWZLFWUDNWRZDQDWDNVDPRMDNSR]RVWDáDWUHüVNU\SWX1DWRPLDVW

X*\FLHLQVWUXNFML

xsl:import

SRZRGXMH*H]DLPSRUWRZDQHV]DEORQ\VSU]HWZDU]DQH]QL*V]\P

priory

WHWHPQL*V]DEORQ\ORNDOQH

3.4. Formatowanie

&KRüREHFQLHGRIRUPDWRZDQLDGRNXPHQWyZZ;0/QDMF]FLHMVWRVXMHVLSU]HNV]WDáFDQLHLFK

QD +70/ Z SURSR]\FML VSHF\ILNDFML ;6/ SU]HZLG]LDQR GR WHJR FHOX VSHFMDOQ\ M]\N RELHNWyZ
forma

WXMF\FK

'RNXPHQW;0/PDE\ü]DSRPRF;6/7SU]HNV]WDáFDQ\GRSRVWDFLGU]HZDRZ\FKRELHNWyZ

IRUPDWXMF\FKNWyUHPDE\üLQWHUSUHWRZDQHSU]H]SU]HJOGDUNLLZ\ZLHWODQH0R*OLZRFLIRUPa-

WRZDQLDZ;6/VWDQRZLPQLHMZLFHMVXPPR*OLZRFLM]\NyZ+70/L&66

background image

132

Tomasz Traczyk

:VSHF\ILNDFML;6/]GHILQLRZDQRVáRZQLNRELHNWyZIRUPDWXMF\FK3RZRáDQRGODQLFKRVREQ

SU]HVWU]HQD]Z

fo

.

3.4.1. Model

prezentacji

dokumentu

:;6/SU]\MWRPRGHOSUH]HQWDFMLZNWyU\PGRNXPHQWPR*H]DZLHUDüQDVWSXMFHRELHNW\

page-sequence

²JáyZQHF]FLGRNXPHQWXUy*QLFHVLPLG]\VREUR]NáDGHPVWURQ\

flow

²F]FLGRNXPHQWXPDMFHFKDUDNWHUVHNFMLUR]G]LDá\SRGUR]G]LDá\LWS]DZDUWHZ

obiektach page-sequence;

block

²DNDSLW\LSRGREQHF]FLGRNXPHQWX

inline

²F]FLDNDSLWyZUy*QLFHVLQSF]FLRQN

wrapper

²ÄQLHZLG]LDOQH´RELHNW\EGFHF]FLDPLEORNXOXEinlineVáX*FHGRÄ]DF]HSLe-

QLD´GDMF\FKVLG]LHG]LF]\üZáDFLZRFL

graphic

²UHIHUHQFMHGR]HZQWU]Q\FKRELHNWyZJUDILF]Q\FK

list

²OLVW\EORNOLVW\VNáDGDVL]HOHPHQWyZOLVW\ND*G\HOHPHQWPDZ\G]LHORQHW\NLHW

table — tabele (o budowie podobnej jak w HTML).

;6/]DZLHUDWDN*H]áR*RQ\PRGHOVWURQLFRZDQLDGRNXPHQWyZ

3.4.2.

:áDFLZRFLL]DZDUWRüRELHNWyZ

2ELHNW\IRUPDWXMFHPDMZáDFLZRFLSRGDZDQHMDNRDWU\EXW\NWyUHGHF\GXMRLFKVSRVRELH

SUH]HQWDFML'RW\SRZ\FKZáDFLZRFLQDOH*F]FLRQNDPDUJLQHVLZáDFLZRFLGRW\F]FHRGVW-

SyZZáDFLZRFLGRW\F]FHMXVWRZDQLDZFLFLDLWGQS

<fo:page-sequence font-family="serif" font-size="12pt">

RNUHODF]FLRQNX*\ZDQGRIRUPDWRZDQLDÄGX*HM´F]FLGRNXPHQWX

:áDFLZRFLPDMZDUWRFLGRP\OQH1LHNWyUHZáDFLZRFLSRGOHJDMG]LHG]LF]HQLX²RELHNW\

SRGU]dQHG]LHG]LF]MHRGQDGU]GQ\FK

7HNVWSRGOHJDMF\IRUPDWRZDQLXMHVWXPLHV]F]DQ\MDNR]DZDUWRüHOHPHQWyZIRUPDWXMcych.

4. Zastosowania XSL

3RGVWDZRZ\P]DVWRVRZDQLHP;6/MHVWRF]\ZLFLHIRUPDWRZDQLHGRNXPHQWyZZ;0/-Hd-

QDN*HRND]DáRVL*H;6/PR*HE\ü]SRZRG]HQLHPZ\NRU]\VW\ZDQ\GRLQQ\FKFHOyZZV]G]LH

WDPJG]LHSRWU]HEQHMHVWSU]HNV]WDáFDQLHGRNXPHQWyZ

4.1. Implementacje

2EHFQLHLVWQLHMHVSRURLPSOHPHQWDFML;6/DOHGRW\F]RQHQLHPDOZ\áF]QLHM]\NDWUDQVIRr-

PDFML)DGQD]SRSXODUQ\FKSU]HJOGDUHNQLHUR]XPLHM]\NDRELHNWyZIRUPDWXMF\FK

,VWQLHMFHLPSOHPHQWDFMH;6/]Z\NOH]ZL]DQHV]SDUVHUDPL;0/QDWRPLDVWZLNV]RüLVt-

QLHMF\FKSU]HJOGDUHNQLH]DZLHUDREVáXJL;6/

1DMSRSXODUQLHMV]\P QDU]G]LHP Z\SRVD*RQ\P Z SURFHVRU ;6/ MHVW QLHZWSOLZLH Microsoft

Internet Explorer 5

:EXGRZDQRZHREVáXJZLNV]HMF]FLLQVWUXNFML;6/GRW\F]F\FKWUDQs-

formacji, ale w wersji sprzed specyfikacji XSLT.

1LHZWSOLZ]DOHW06,(MHVWIDNW*HSURFHVRU;0/MHVWZEXGRZDQ\ZSU]HJOGDUNPR*QD

ZLFSU]HV\áDüGRQLHMEH]SRUHGQLRGRNXPHQW\Z;0/LDUNXV]HVW\OLVW\F]QHZ;6/3U]HJOGDr-

NDGRNRQXMHWUDQVIRUPDFMLQD+70/LSUH]HQWDFMLZ\QLNRZHJRGRNXPHQWX8*\WNRZQLNPDGRVWS

background image

-]\N;6/

133

GR(UyGáRZHJRGRNXPHQWXZ;0/PR*HJRX*\üQSGRGDOV]HJRSU]HWZDU]DQLD3R]DLQVWDOo-

ZDQLXGRVWSQ\FKRGQLHGDZQDSRSUDZHNX*\WNRZQLNPR*HWDN*HREHMU]HüZ\QLNWUDQVIRUPDFML²
jest to bardzo przydatne w czasie uruchamiania skryptów XSL. Zarówno dokument XML jak ar-
kusz styli

VW\F]Q\PRJE\üSU]HFKRZ\ZDQHZSDPLFLcacheSU]HJOGDUNL

1LHVWHW\SRQLHZD*Z06,(ZEXGRZDQRVWDUZHUVM;6/QLHPR*QDX*\üQRZ\FKPR*OLZo-

FL;6/73UDFHQDGSURFHVRUHP;6/7VMHGQDN]DDZDQVRZDQHPR*QDJRQDZHWGRLQVWDORZDü

GR SU]HJOGDUNL :\ZRáDQLH QRZHJR SURFHVRUD MHVW MHGQDN PR*OLZH MHG\QLH SURJUDPRZR QS ]
programu

9%6FULSWLQLHPR*HRQE\üQRUPDOQLHX*\W\GRIRUPDWRZDQLDGRNXPHQWyZon-line.

Konkurencja — czyli firma

1HWVFDSH²WDN*HSUDFXMHQDGREVáXJ;0/ZVZRMHMSU]HJOGDUFH

Niestety, nawet w najnowszych wersjach próbnych programu nie ma wsparcia dla XSL, a arkusze

VW\OLVW\F]QHGRGRNXPHQWyZ;0/GHILQLRZDüPR*QDMHG\QLHZ&66

4.2. XSL a Oracle

2UDFOHRGGáX*V]HJRF]DVXSRSLHUDUR]ZyML]DVWRVRZDQLD;0/7RWH*MX*RGSRQDGURNXGo-

VWSQH V Uy*QRURGQH QDU]G]LD XPR*OLZLDMFH WZRU]HQLH DSOLNDFML ;0/ Z W\P WDN*H SURFHVRU
XSLT.

3URFHVRUWHQZFKRG]LZVNáDGSDNLHWXOracle XML Developer’s Kit (XDK). Pakiet ów, wspóá-

SUDFXMF\]'%062UDFOHi, zawiera m.in. SDUVHU\;0/Z\SRVD*RQHZSURFHVRU;6/7SU]H]Qa-

F]RQHGODM]\NyZ-DYD&&RUD]3/64/1S$3,SDUVHUDGODM]\ND-DYDXGRVWSQLDNODV\

XSLStylesheet

i

XSLProcessor

ZUD] ] RGSRZLHGQLPL PHWRGDPL NWyUH SU]HWZDU]DM GRNu-

PHQW\;0/]X*\FLHPDUNXV]\VW\OLVW\F]Q\FKZ;6/

3U]HWZDU]DQLH]DSRPRF;6/7PR*HE\üX*\WHGRIRUPDWRZDQLDZ\QLNyZG]LDáDQLDZFKRG]-

FHJRZVNáDG;'.QDU]G]LDOracle SQL Utility for Java1DU]G]LHWRQDSRGVWDZLHSRGDQHJR

]DS\WDQLDZ64/WZRU]\GRNXPHQW;0/]DZLHUDMF\Z\QLN]DS\WDQLDRVWDQGDUGRZ\Pgenerycz-

Q\P IRUPDFLH 'RNXPHQW WHQ PR*QD SURJUDPRZR SRGGDü WUDQVIRUPDFML ]D SRPRF ;6/7 X]y-

VNXMFSR*GDQ\IRUPDWZ\QLNRZ\1DU]G]LHPR*HWDN*HZF]\W\ZDüGDQH]SOLNyZ;0/GRED]\

GDQ\FK DOH ZyZF]DV GDQH PXV] E\ü SRGDQH Z SOLNX R XVWDORQHM VNáDGQL 8*\ZDMF SURFHVRUD

;6/7PR*QDSU]HNV]WDáFLüRU\JLQDOQ\GRNXPHQW;0/GRSRVWDFLZ\PDJDQHMSU]H]QDU]G]LH

3URFHVRU;6/7SHáQLZD*QUROZG]LDáDQLXNROHMQHJRVNáDGQLND;'.]ZDQHJRXSQL Servlet.

1DU]G]LH WR SU]HWZDU]D ]DS\WDQLD 64/ RSDNRZDQH Z VNáDGQL ;0/ D Z\QLNL ]DS\WDQLD WDN*H
formatuje w postaci dokumentu XML o standardowej

JHQHU\F]QHMEXGRZLH-HOLSRWU]HEQDMHVW

QSGRFHOyZSUH]HQWDFMLLQQDEXGRZDGRNXPHQWXZ\QLNRZHJRQDU]G]LHDXWRPDW\F]QLHZ\ZRáXMH

SURFHVRU;6/7NWyU\SU]HNV]WDáFDZ\QLNRZ\GRNXPHQWX*\ZDMFDUNXV]DVW\OLVW\F]QHJR:WHQ

VSRVyE]HVWDQGDUGRZ\FKZ\QLNyZ]DS\WDQLDX]\VNDüPR*QDQLHPDOGRZROQSRVWDüSUH]HQWacji.

:VNáDG;'.ZFKRG]LWDN*HFLHNDZ\SDNLHW]ZDQ\XML Transviewer Java BeansEGF\]ELo-

rem komponentów Java Beans. Jeden z tych komponentów, o nazwie XSL Transformer Bean

VáX*\

GRSU]HSURZDG]DQLDWUDQVIRUPDFMLGRNXPHQWyZ;0/]X*\FLHP;6/.RPSRQHQWWHQPR*HE\ü

X*\W\]DUyZQRSRVWURQLHVHUZHUDMDNRVNáDGQLNyZDSOLNDFMLserwerowych lub servletów), jak po
stronie klienta — np. w apletach.

0R*OLZRFLWUDQVIRUPDFML;6/VWDN*HZ\NRU]\VW\ZDQHSU]H]SURGXNWRQD]ZLHOracle Portal-

To-Go

3URGXNWWHQWUDQVIRUPXMHG\QDPLF]QLH]DZDUWRüVWURQLQWHUQHWRZ\FKQDIRUPDW\UR]XPLa-

QHSU]H]Uy*QRURGQHXU]G]HQLDZW\PQDM]\N:0/GODWHOHIRQyZNRPyUNRZ\FK]SURWRNRáHP

:$3,QIRUPDFMH],QWHUQHWXVSU]HNV]WDáFDQHGRgenerycznego formatu ;0/RZHJRDQDVWSQLH

SURFHVRU;6/SU]HNV]WDáFDZMHGRIRUPDWyZVSHF\ILF]Q\FKGODGDQHJRXU]G]enia.

4.3.

3U]\NáDG\]DVWRVRZD;6/

1DMEDUG]LHMW\SRZ\P]DVWRVRZDQLHP;6/MHVWRF]\ZLFLHSUH]HQWDFMDGRNXPHQWyZ;0/$OH

PR*OLZRFL]DVWRVRZDQLD;6/V]QDF]QLHV]HUV]HNLOND]QLFKV]F]HJyOQLH]ZL]DQ\FK]ED]DPL
danych, opi

VDQRSRQL*HM

background image

134

Tomasz Traczyk

4.3.1. Przetwarzanie stron na serwerach WWW

=D SRPRF ;6/ PR*QD G\QDPLF]QLH SU]HWZDU]Dü VWURQ\ ::: QD VHUZHUDFK E\ XGRVWSQLü

X*\WNRZQLNRZL GDQH Z SR*GDQHM SU]H] QLHJR IRUPLH 3U]HWZDU]DQLH WDNLH PR*H GRW\F]\ü VWURQ

NUHRZDQ\FKG\QDPLF]QLHQSZZ\QLNXUHDOL]DFML]DS\WDGRED]\GDQ\FK²SU]\SDGHNWDNLRSi-

VDQRZ\*HMZRGQLHVLHQLXGRQDU]G]LDXSQL Servlet3U]HWZDU]DüZWHQVSRVyEPR*QDWDN*HVWa-
tyczne strony w HTML lub XML — tego typu zastosowanie XSL w produkcie Portal-To-Go

WDN*H

RSLVDQRZ\*HM

&LHNDZ\PSRP\VáHPMHVWG\QDPLF]QHJHQHURZDQLHDUNXV]\VW\OLVW\F]Q\FKQDSRGVWDZLH]DSa-

PLWDQ\FKZED]LHGDQ\FKSUHIHUHQFMLX*\WNRZQLND:WHQVSRVyEPR*QDWZRU]\üSRUWDOH]XVáu-

JDPLSHUVRQDOL]RZDQ\PLQLHW\ONRFRGRWUHFLDOHWDN*HFRGRIRUP\

4.3.2.

:\PLDQDGDQ\FKPLG]\ED]DPL

;0/Z\GDMHVLLGHDOQ\PPHGLXPGRZ\PLDQ\GDQ\FKPLG]\ED]DPLGDQ\FK:SOLNX;0/

SU]HQRV]RQHVQLHW\ONRGDQHDOHWDN*HPHWDLQIRUPDFMD-HGQDNMHOLPRGHOHGDQ\FKZED]LHZ\j-

FLRZHMLGRFHORZHMUy*QLVLNRQLHF]QHMHVWGRNRQDQLHRGSRZLHGQLHMWUDQVIRUPDFML;6/PR*H

E\üX*\W\GRWHMWUDQVIRUPDFML]ZáDV]F]DMHOLUy*QLFHPLG]\PRGHODPLV]QDF]QHLQLH]EGQHMHVW

]áo*RQHSU]HNV]WDáFHQLH

4.3.3. Zastosowanie XSL do tworzenia dokumentacji

$XWRUWHJRUHIHUDWXPDEDUG]RSR]\W\ZQHGRZLDGF]HQLDZQLHFRQLHW\SRZ\PVWRVRZDQLX;6/

2Wy*X*\ZDJRRVWDWQLRGRüLQWHQV\ZQLHGRSURGXNRZDQLDGRNXPHQWDFMLSURMHNWRZHMZ]áR*RQ\FK
projektach informatycznych.

;6/V]F]HJyOQLHSU]\GDMHVLZHZF]HVQ\FKID]DFKSURMHNWXSODQRZDQLHDQDOL]DVWUDWHJLF]QD

JG\SU]HWZDU]DQDLQIRUPDFMDMHVWZGX*HMF]FLWHNVWRZDDQLHGRNRQDQRMHV]F]HZ\ERUXQDU]G]L

GODSURMHNWXQLHPR*QDZLFSRVáX*\üVLQSSDNLHWHP&$6(

3U]\NáDG

:GX*HMNRUSRUDFMLSURZDG]RQRSURMHNWSLORWRZ\PDMF\QDFHOXSUyEQH]DVWRVRZDQLHWHFKQLN

data mining

GRXVSUDZQLHQLDSURFHVyZEL]QHVRZ\FK3LHUZV]\PHWDSHPSURMHNWXE\áRZ\W\SRZa-

QLHW\FKSURFHVyZZNWyU\FK]DVWRVRZDQLHHNVSORUDFMLGDQ\FKMHVWZRJyOHPR*OLZHQSLVWQLHM

WDPGDQHZRGSRZLHGQLHMLORFLLMDNRFLLGDMHMDNLHQDG]LHMHQDSRSUDZSURFHVX

6WZRU]RQR VIRUPDOL]RZDQ\ VSRVyE RSLVX SURFHVyZ EL]QHVRZ\FK ]DOH*QRFL SRPLG]\ QLPL

PDJD]\QyZ GDQ\FK L LFK X*\FLD Z SRV]F]HJyOQ\FK SURFHVDFK :SURZDG]RQR WH* RGSRZLHGQLH
kryteria oceny.

Wyniki tak prowadzonej analizy zapisano w postaci plików w XML, o specjalnie zaprojektowa-

QHMVWUXNWXU]H3U]HNV]WDáFDMFRZHSOLNL]DSRPRFVNU\SWyZZ;6/X]\VNDQRUy*QRURGQHRSLV\L
zestawienia, w tym finalny ranking procesów najbardziej odpowiednich do zastosowania eksplora-
cji danych.

:\WZRU]RQH Z WHQ VSRVyE ]HVWDZLHQLD L RSLV\ ]áR*\á\ VL QD JáyZQ F]ü VSUDZR]GDQLD ]

SLHUZV]HMID]\SURMHNWX&RZD*QHX]\VNDQHZ\QLNLE\á\RGUD]XVIRUPDWRZDQHZVSRVyERGSo-

ZLHGQLGR]DPLHV]F]HQLDZVSUDZR]GDQLXDXWRUQLHPXVLDáZLFWUDFLüF]DVXQDSUDFRFKáRQQHUHGa-
gowanie opracowania.

:D*Q]DOHWWHJRSRGHMFLDGRWZRU]HQLDGRNXPHQWDFMLMHVWXQLNDQLHZLHORNURWQHJR]DSLV\Za-

QLDWHMVDPHMLQIRUPDFMLFRRV]F]G]DF]DVL²FRZD*QLHMV]H²QLHGRSXV]F]DQLHVSyMQRFL,n-
formacja jest wprowadzana do pliku XML jednokrotnie, a wykorzystywana jest w wielu zestawie-
niach, produkowanych przez odpowiednie skrypty XSL.

background image

-]\N;6/

135

.ROHMQZD*QFHFKWDNLHJRSRGHMFLDMHVWXQLNQLFLHSUDFRFKáRQQ\FKF]\QQRFLUHGDNF\MQ\FK

'RNXPHQWSU]HNV]WDáFRQ\]DSRPRF;6/GR+70/GDMHVLEH]WUXGQRFLSU]HNRQZHUWRZDüGR
formatu

.rtf

UR]XPLDQHJRSU]H]ZLNV]RüSURFHVRUyZWHNVWX0LáRQLF\EDUG]LHMZ\UDILQRZa-

Q\FKPHWRGVNáDGXPRJSRVáX*\üVLVSHFMDOQ\PLZHUVMDPLSURJUDPXTE;SRWUDILF\PLEH]So-

UHGQLRLQWHUSUHWRZDüSOLNLZ;0/

6NU\SW\;6/PRJRF]\ZLFLHSURGXNRZDü]DUyZQRVSUDZR]GDQLDSU]H]QDF]RQHGRGUXNXMDNL

]DZLHUDMFHáF]QLNLhipertekstowe dokumenty do prezentacji w WWW.

1LHGDMFVLSRPLQü]DOHWWHJR]DVWRVRZDQLD;6/MHVWX*\FLHGDUPRZ\FKQDU]G]L²ZLHOH

SURFHVRUyZ ;6/ PR*QD SR]\VNDü EH] RSáDW 1LH V ]DWHP Z\PDJDQH *DGQH LQZHVW\FMH FR ZH
wcze

VQ\FKVWDGLDFKSURMHNWyZMHVWQDRJyáEDUG]RNRU]\VWQH

5. Podsumowanie

;6/MHVWHODVW\F]Q\PLVLOQ\PQDU]G]LHPVáX*F\PGRSU]HNV]WDáFDQLDLIRUPDWRZDQLDGRNu-

PHQWyZZ;0/=HZ]JOGXQDPR*OLZRFL]DVWRVRZDQLDGR]áR*RQ\FKWUDQVIRUPDFMLGRNXPHn-

WyZ]DZLHUDMF\FKGDQH;6/Z\GDMHVLE\üLQWHUHVXMF\GODSURMHNWDQWyZV\VWHPyZLQIRUPDF\j-
nych z bazami danych.

6SHF\ILNDFMD;6/MHVWQDXNRF]HQLXDF]FLQDMEDUG]LHMLQWHUHVXMFH]SXQNWXZLG]HQLD]DVWo-

VRZD]ZL]DQ\FK]ED]DPLGDQ\FKVJRWRZH3RMDZLá\VLWH*SLHUZV]H]GDWQHGRSUDNW\F]QHJR

]DVWRVRZDQLD LPSOHPHQWDFMH MHGQD ] QLFK ]DZDUWD MHVW Z QDU]G]LDFK WRZDU]\V]F\FK '%06
Oracle8i.

:\GDMHVL*HZQDMEOL*V]\FKODWDFK;0/EG]LHMHGQ\P]SRGVWDZRZ\FKURGNyZZ\PLDQ\

LQIRUPDFMLD]QDMRPRü]ZL]DQ\FK]QLPQDU]G]LZW\P;6/EG]LHQLH]EGQDND*GHPXSUo-
jektantowi systemów informacyjnych.

Bibliografia

1. Traczyk

T.,

0DFHZLF]:-]\N;0/ZDSOLNDFMDFK]ED]DPLGDQ\FK²PR*OLZRFL]DVWRVR

wania, pierw-

V]HGRZLDGF]HQLD0DWHULDá\,9.RQIHUHQFML

Developerów

LX*\WNRZQLNyZ2UDFOH

Ewolucja systemów in-

IRUPDW\F]Q\FKGDQHVSU]WRSURJUDPRZDQLHLDSOLNDFMH

, Zakopane 1998, ss. 143-146.

2.

7UDF]\N7-]\N;0/ZDSOLNDFMDFK]ED]DPLGDQ\FK²SRURNX0DWHULDá\9.RQIHUHQFML

Developerów i

X*\WNRZQLNyZ2UDFOH

Integracja danych i systemów informatycznych, Zakopane 1999, ss. 45-58.

3.

7UDF]\N7:SURZDG]HQLHGRM]\ND;0/,QIRUPDW\ND,661VV

4.

7UDF]\N7;0/L;6/0DWHULDá\;,,*yUVNLHM6]NRá\37,6]F]\UNF]HUZLHF

5. Grosso P., Walsh N.: XSL Concepts and Practical Use. XML Europe 2000, Paris, June 2000.

http://www.arbortext.com/xsl/tutorial.html

6. Extensible Markup Language (XML) 1.0. W3C Recommendation.

7. Extensible Stylesheet Language (XSL) 1.0. W3C Working Draft.

8. Namespaces in XML. W3C Recommendation.

9. XSL Transformations (XSLT) 1.0. W3C Recommendation.

10. XML Path Language (XPath) 1.0. W3C Recommendation.

11. Associating Style Sheets with XML Documents. Version 1. W3C Recommendation.

12. XML Support in Oracle8i and Beyond.

http://technet.oracle.com/tech/xml/

13. Using XML in Oracle Database Applications.

http://technet.oracle.com/tech/xml/


Wyszukiwarka

Podobne podstrony:
jezyk xls VMP4LJC4EE4BNYHVZSXZ Nieznany
Język jako narzędzie paradoksy
Język w zachowaniach społecznych, Wykład na I roku Kulturoznawstwa (1)
Język haseł przedmiotowych2
Laboratorium jezyk c4 2013
motywy literackie matura 2016 język polski
Jezyk polski 5 Ortografia Zas strony 48 49 id 222219
Kurcz Język a myślenie rozdział 12
Język Angielski i Niemiecki 2012 poziom podstawowy odpowiedzi
niebieski jezyk Nieznany
Język polski SP kl4 SzU sprawdzian 01 arkusz
Matura Informator Język litewski

więcej podobnych podstron