extensible markup language n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Extensible Markup Language PowerPoint Presentation
Download Presentation
Extensible Markup Language

Loading in 2 Seconds...

play fullscreen
1 / 32

Extensible Markup Language - PowerPoint PPT Presentation


  • 97 Views
  • Uploaded on

Extensible Markup Language. XSLT transzformációk. Hernyák Zoltán http://aries.ektf.hu/~hz hz@aries.ektf.hu. XML - XSLT. Extensible Style Sheet Language Transformation XSLT Ez egy ”programozási nyelv” XML-ben van a forráskód  feldolgoz egy XML filet

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Extensible Markup Language' - quinta


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
extensible markup language

Extensible Markup Language

XSLT transzformációk

Hernyák Zoltán

http://aries.ektf.hu/~hz

hz@aries.ektf.hu

slide2

XML - XSLT

Extensible Style Sheet Language Transformation

XSLT

Ez egy ”programozási nyelv”

XML-ben van a forráskód 

feldolgoz egy XML filet

eredménye egy újabb HTML, CSS, XLS, XML file

slide3

XML - XSLT

  • Kell egy „futtató” program hozzá (xslt feldolgozó)
  • Xalan (Java alapú) http://www.apache.org
  • Saxon (C# alapú) http://saxon.sourceforge.net/

transform.exe-xsl:person_templ.xls-s:person.xml

-s:<forrás> az adatokat tartalmató xml file

-xsl:<program> az xslt transzformációs program

A program ”outputja” a transzformáció eredménye

slide4

XML névterek

Az XML elemeket névterekbe lehet rakni

Több XML esetén az azonos nevű elemeket így lehet

egymástól elkülöníteni

Egy XML-en belül is hasznos, ha azonos nevű elemeknek

más-más lehetséges tartalmi leírást adunk

Első lépés: definiálni kell a névteret

Második lépés: használni kell a névteret

<java xmlns:java=”http://www.sun.com/java”

xmlns:delphi=”http://www.borland.com/delphi”>

….

<delphi:integer name=”a” value=”12” />

<java:integer name=”x” value=”34” />

</java>

slide5

XML - XSLT

<people>

<person>

<name>Jane Doe</name>

<pet>Fluffy</pet>

</person>

</people>

<?xml version="1.0"?>

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

<xsl:template match="person">

I found a person element!

</xsl:template>

</xsl:stylesheet>

Az XSLT processor az xls névtér elemeit dolgozza fel

slide6

XML - XSLT

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

….

</xsl:stylesheet>

Az XSLT file ezzel kezdődik

Innen ismeri majd fel a feldolgozó program mire számítson

slide7

XML - XSLT

<xsl:template match="person">

I found a person element!

</xsl:template>

Egy vagy több template van benne

Egy ilyen template tartalma kiíródik, ha az XML file

beolvasása közben egyezést talál a feldolgozó

Template-k nem egymásba ágyazhatóak!

slide8

XML - XSLT

<people>

<person>

<name>Jane Doe</name>

<pet>Fluffy</pet>

</person>

</people>

Ebben a formában az apply-templates kiírja a tag-ekhez tartozó értékeket

<?xml version="1.0"?>

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

<xsl:template match="person">

---- person -----

<xsl:apply-templates />

</xsl:template>

</xsl:stylesheet>

slide9

XML - XSLT

<xsl:template match="person">

-- A Person --

<xsl:apply-templates />

</xsl:template>

<xsl:template match="name">

Name: <xsl:apply-templates />

</xsl:template>

<xsl:template match="pet">

Pet: <xsl:apply-templates />

</xsl:template>

slide10

XML - XSLT

<?xml version="1.0"?>

<xsl:stylesheet … >

<xsl:output method=”text” />

<xsl:strip-space elements=”name pet” />

</xsl:stylesheet>

Output-method = text -> nem írja ki az xml fejlécet

Output-method = html ->html kimenetet produkál

Output-method = xml -> XML kimenetet produkál

strip-space: a felsorolt elemek között

eltávolítja a white-space-eket

preserve-space: … megtartja a white space-eket (def.)

slide11

XML - XSLT

Készítsünk ilyet!

slide13

XML - XSLT

Meg kell írni a template-t az elemekre

slide14

XML - XSLT

Az apply-templates feldolgozza a közbeeső elemeket

<body> … </body> -t ki lehet írni

XHTML kötelező (a tag-eket le is kell zárni!)

slide15

XML - XSLT

HTML tagokat tudunk beépíteni az outputba

a megfelelő helyre

slide16

XML - XPATH

Leíró technika, elemeket azonosít egy XML-en belül

A gyökér elemet / jel szimbolizálja

/people/person/name

- minden „name” elemet kiválaszt a

/people/person-n belül

slide17

XML – XPATH szabályok

nodename

- minden elem kiválasztása, akinek a szülője az adott nevű node

/

- kiindulás a gyökérelemből

//

- kiválasztja az aktuális elemből kiinduló minden elemet, bármely mélységbe

.

aktuális elem kiválasztása

..

szülő elem kiválasztása

@

attribútum-kiválasztás

slide18

XML - XPATH

person

- minden elem kiválasztása, akinek a szülője „person” /people/person/name

- minden „name” elemet kiválaszt a

/people/person-n belül

person//name

- minden name kiválasztása, akinek a szülője „person”

//name

- minden „name” elemet kiválaszt az XML-en belül

//pet/@breed

- a pet elemek breed attribútumai

//@*

- minden attribútumot kiválaszt

//@species

- minden species attribútumot kiválaszt

slide19

XML - XPATH

Mivel gyakori, hogy egy Xpath útvonal több elemet

is kiválaszt, de ezekből csak egy kell – prédikátumok

kellenek a további azonosításhoz…

//person[1] - az első találat

//person[last()] - utolsó találat

//person[last()-1] - utolsó előtti találat

//pet[.=‘Fluffy’]

. szimbolizálja az aktuális elemet

kiválasztja azokat az elemeket,

amelyeknek az értéke ‘Fluffy’

//pet[.=‘Fluffy’]/..

kiválasztja a szülő elemét, a ‘Fluffy’ értékű node-nak

//name[contains(.,’Jane’)]

minden „name” elemet, amelyben szerepel „Jane”

slide20

XML - XPATH

//pet[@breed]

- az összes pet elem, amelynek van breed attr-a

//pet[@breed=‘collie’]

- az összes pet elem, amelynek van breed-ke

amelynek értéke „collie”

//pet[@breed=‘collie’]/..

a szülő elemek, amelyeknek van collie breed-jük

//pet[@species=‘cat’] | //pet[@species=’dog’]

az elemek melyek vagy cat-ok vagy dog-ok

slide21

XML - XSLT

<xsl:template match=”/people/person">

--- PEOPLE –

<xsl:apply-templates />

</xsl:template>

A match is egy XPATH leírás

Ezen találat csak a fenti útvonalon talált person-okra illeszkedik rá

<xsl:template match=”/">

<html>

<body>

<xls:apply-templates />

</body>

</html>

</xsl:template>

Gyökér elemre illeszkedő template

slide22

XML - XSLT

<xsl:template match=”//name[@address]">

Name: <xsl:apply-templates /> (with address)

</xsl:template>

<xsl:template match=”name">

Name: <xsl:apply-templates />

</xsl:template>

Ha van neki „address” property-je, akkor felső

szabály szerint íródik ki,

Ha nincs neki, akkor az alsó

A sorrend nem számít az xsl-en belül

slide23

XML - XSLT

<xsl:template match=”//name[@address]">

Name: <xsl:apply-templates /> (with address)

</xsl:template>

<xsl:template match=”name">

Name: <xsl:apply-templates />

</xsl:template>

Ha van neki „address” property-je, akkor felső

szabály szerint íródik ki,

Ha nincs neki, akkor az alsó

A sorrend nem számít az xsl-en belül

slide24

XML – XSLTtengelyek

ancestor

minden ős (felfelé rekúrzívan)

ancestor-or-self

saját maga és minden őse

attribute

az aktuális node összes attribútuma

child

az aktuális node összes gyerek node-ja

descendant

minden gyerek node (lefelé rekúrzívan)

slide25

XML – XSLTtengelyek

following

az aktuális node bezáró tagja után _minden_

following-sibling

az akt.node után következő minden testvér

namespace

az akt.node minden névtér node -ja

parent

az őse az akt.node-nak

preceding

a megelőző tartalom (akt.node előtti tartalom)

preceding-sibling

node előtti összes testvér

self

saját maga

slide26

XML – XSLTtengelyek

child::book

minden „book” ami gyerekeleme az akt.node-nak

child::*

az akt.node minden gyerekeleme

descendant::book

az akt.node alatt bárhol szereplő „book”-k

ancestor::book

felettünk bárhol szereplő „book”-k

child::*/child::price

2 szinttel alattunk lévő „price” elemek

//pet[@breed=’calico’]/parent::*

minden pet element, amelynek

van „breed” attribútuma, amely „calico” értékű

slide27

XML - XSLT

Elem értékének lekérése: value-of

Az aktuális node alatti gyerek elemek közül a name értéke

<xsl:value-ofselect=”name” />

Az aktuális node „breed” attribútumának értéke

<xsl:value-ofselect=”@breed” />

slide28

XML - XSLT

XSLT transzformációban alkalmazni a value-of -t

<xsl:templatematch="pet">

<b>Pet: </b> <xsl:apply-templates /><br />

Species: <xsl:value-of select="@species" /><br />

Breed: <xsl:value-of select="@breed" /><br />

</xsl:template>

slide29

XML - XSLT

@* minden attribútum kiválasztása

name() megadja az attribútum nevét

<xsl:templatematch="@*">

<xsl:value-ofselect="name()" /> :

<xsl:value-ofselect="." /><br />

</xsl:template>

slide30

XML - XSLT

Feltételes output készítése

<xsl:iftest=”… kifejezés …” />

… szöveg kiiírás …

</xls:if>

<xsl:iftest=”@species=‘cat’” />

<imgsrc=”cat.gif” /><br>

</xls:if>

slide31

XML - XSLT

Feltételes output készítése

<xsl:iftest=”@species=‘cat’” />

<imgsrc=”cat.gif” /><br>

</xls:if>

slide32

XML - XSLT

Készítsünk el egy DVD nyilvántartó XML filet. Egy DVD-t

jellemez a címe, kiadás éve, ára. A DVD kategóriáját

adjuk meg attribútum formájában (akció|zene|rajzfilm).

Ezen XML file alapján készítsünk el egy HTML outputot,

ahol a DVD címe legyen pirossal írva, ha az akciófilm,

egy DVD film információi egy sorba kerüljenek.

Készítsünk el egy CSV kimenetet is, vesszővel tagolt text file, melyet Excelben be lehet olvasni.