XSL: XSLT & XSL-FO - KU Leuvenjoost.vennekens/DN/xml... · 2017. 5. 6. · In client-server SERVER...

Post on 26-Sep-2020

7 views 0 download

Transcript of XSL: XSLT & XSL-FO - KU Leuvenjoost.vennekens/DN/xml... · 2017. 5. 6. · In client-server SERVER...

XSL: XSLT & XSL-FO

joost.vennekens@kuleuven.be

XSLT

XML XMLXSLT

Waarom? Gegevens in formaat brengen dat toepassing nodig heeft

BestandenXSL bestand

XML invoerbestand

XML uitvoerbestand

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

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

In client-server

SERVER

XML

XSL

CLIENT

HTML

• Server kant: een script op de server verwerkt een XML-en een XSL-bestand tot een HTML-bestand en stuurt dit door naar de client.

SERVER

XML

XSL

HTML

CLIENT

HTML

1.6 Toepassingen van XML

XML kent vele toepassingsgebieden, aangezien het een zeer breed inzetbare technologie is. Bin-nen de XML-wereld zijn er traditioneel twee onderverdelingen: de data-wereld en de document-wereld.

• Bij de eerste invalshoek wordt XML gebruikt om gegevens op te slaan of uit te wisselen dievroeger uitsluitend in databanken terug te vinden waren, zoals financiele gegevens, klanten-records en stockinformatie. Dit zijn typisch gegevens die zeer sterk kunnen gestructureerdworden en die in kleine stukjes kunnen worden opgekapt.

• De document-wereld gebruikt XML om tekst-georienteerde informatie op te slaan of uit tewisselen, zoals boeken of krantenartikels. Deze informatie is ook goed te structureren, maarzal doorgaans in veel grotere stukken verdeeld worden (hoofdstukken, paragrafen, alinea’s,...).

Het volgende schema geeft een aantal belangrijke toepassingsgebieden van XML aan:

XML maken

XML modelleringDTD - SchemaparsingXML editorstransformatie

Content managementVersiebeheerKnowledge management

Data stockeren

Data stockeren

XML en databankenXML Query

Uitwisselen

e-commerceweb-servicessecurityapplicatie-integratie

SOAP

Zoeken

Navigeren

Filteren

Adressering: XPATHLinking: XLINKMeta-data /Ontologien: RDF

Topix Maps: XTMSemantic Web

Publiceren

transformatie: XSLTWeb: XHTML, XFORMSWAP: WMLPrint: XSL:FOMultimedia: SMIL,

SVG, MathML

12

SERVER

XML

XSL

CLIENT

HTML

• Server kant: een script op de server verwerkt een XML-en een XSL-bestand tot een HTML-bestand en stuurt dit door naar de client.

SERVER

XML

XSL

HTML

CLIENT

HTML

1.6 Toepassingen van XML

XML kent vele toepassingsgebieden, aangezien het een zeer breed inzetbare technologie is. Bin-nen de XML-wereld zijn er traditioneel twee onderverdelingen: de data-wereld en de document-wereld.

• Bij de eerste invalshoek wordt XML gebruikt om gegevens op te slaan of uit te wisselen dievroeger uitsluitend in databanken terug te vinden waren, zoals financiele gegevens, klanten-records en stockinformatie. Dit zijn typisch gegevens die zeer sterk kunnen gestructureerdworden en die in kleine stukjes kunnen worden opgekapt.

• De document-wereld gebruikt XML om tekst-georienteerde informatie op te slaan of uit tewisselen, zoals boeken of krantenartikels. Deze informatie is ook goed te structureren, maarzal doorgaans in veel grotere stukken verdeeld worden (hoofdstukken, paragrafen, alinea’s,...).

Het volgende schema geeft een aantal belangrijke toepassingsgebieden van XML aan:

XML maken

XML modelleringDTD - SchemaparsingXML editorstransformatie

Content managementVersiebeheerKnowledge management

Data stockeren

Data stockeren

XML en databankenXML Query

Uitwisselen

e-commerceweb-servicessecurityapplicatie-integratie

SOAP

Zoeken

Navigeren

Filteren

Adressering: XPATHLinking: XLINKMeta-data /Ontologien: RDF

Topix Maps: XTMSemantic Web

Publiceren

transformatie: XSLTWeb: XHTML, XFORMSWAP: WMLPrint: XSL:FOMultimedia: SMIL,

SVG, MathML

12

http://www.w3.org/1999/XSL/Transform

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

Bouwstenen

Template (patroon)

Structuur met daarin plaatshouders

Plaatshouders worden vervangen door geschikte elementen

Bijvoorbeeld

Templates in XSL

Stukje XML code

met daarin plaatshouders

voor geschikte data uit XML invoer-document

Bijvoorbeeld

<klantenbestand><klant>

<naam> Joost Vennekens </naam><adres> ... </adres> ...

</klant></klantenbestand>

<brief><aanspreking> Beste xxx, </aanspreking><inhoud> Wij zijn een toffe bank! </inhoud>

</brief>

Hoe?

Voorbeelden

klanten.xml

brief1.xsl

brief6.xsl

Oplossing: XPath

<xsl:template match="/klantenbestand/klant"><brief>

<aanspreking> Beste <xsl:value-of select=“naam”/>, </aanspreking><inhoud> Wij zijn een toffe bank! </inhoud>

</brief></xsl:template>

resultaat

Iteratie

<xsl:template match=“/klantenbestand"> <brieven><xsl:for-each select=“klant”>

<brief><aanspreking> Beste <xsl:value-of select=“naam”/>, </aanspreking><inhoud> Wij zijn een toffe bank! </inhoud>

</brief></xsl:for-each></brieven>

</xsl:template>resultaat

Sorteren<xsl:template match="/klantenbestand">

<xsl:for-each select=“klant”/><brief>

<xsl:sort select=“naam”/> <aanspreking> Beste <xsl:value-of select=“naam”/>, </aanspreking><inhoud> Wij zijn een toffe bank! </inhoud>

</brief></xsl:for-each>

</xsl:template>

<xsl:template match="/klantenbestand"><xsl:for-each select=“klant”/><brief>

<aanspreking> Beste <xsl:value-of select=“naam”/>, </aanspreking><inhoud> Wij zijn een toffe bank! <xsl:if test=“adres/text()=‘De Nayer’”/> Maar u heeft waarschijnlijk toch geen geld...</xsl:if></inhoud></brief>

</xsl:for-each></xsl:template>

Testen

resultaat

Testen (2)

<xsl:choose><xsl:when test=“adres/text()='De Nayer'”/>Maar u heeft waarschijnlijk toch geen geld...</xsl:when><xsl:when test=“adres/text()='EU'”/>U bent heel welkom!</xsl:when><xsl:otherwise>Hoeveel verdient u zoal?</xsl:otherwise>

</xsl:choose>

Templates Oproepren<xsl:template match="/klantenbestand/klant"><brief>

<aanspreking> Beste <xsl:apply-templates select="naam"/>, </aanspreking><inhoud> Wij zijn een toffe bank! </inhoud>

</brief></xsl:template><xsl:template match="naam"> <b> <xsl:value-of select="."/> </b></xsl:template>

resultaat

Voorbeelden

liedjes.xls/Users/joost/Sites/xsl/xsl-vbn

Enquete /Users/joost/Box/DeNayer/Enquete/http://telescript.denayer.wenk.be/~jve/enquete/enquete-it.html

Terminal /Users/joost/EXperT/