het gebruik van xslt in adlib
DESCRIPTION
TRANSCRIPT
![Page 1: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/1.jpg)
Het gebruik van XSLT in AdlibAdlib gebruikersgroep
30-3-2010Bert Degenhart Drenth
Adlib Information Systems
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 2: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/2.jpg)
Wat is XSLT?
• eXtensible Stylesheet Language Transformation
• Neemt XML als invoer en transformeert dit naar iets anders
• Uitvoer kan XML, HTML of Tekst zijn.
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 3: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/3.jpg)
Relevantie voor Adlib
• XSLT wordt in Internet Server gebruikt• XSLT kan als uitvoerformaat gebruikt worden• XSLT kan gebruikt worden bij
gegevensconversie• In 6.6 browserveld, opmaak in één veld
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 4: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/4.jpg)
Basis XML
• Elk XML document begint met een XML declaratie<?xml version="1.0" encoding="utf-8"?>
• XML is altijd Unicode• Een XML document heeft 1 root node• XML tags zijn vrij te kiezen, soms is er een DTD
(Document Type Definition) of XML Schema (.xsd) die aangeeft welke tags mogelijk zijn.
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 5: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/5.jpg)
Basis XML
• Tags zijn case sensitive• Tags komen altijd in paren voor <open></open>
• Mag verkort worden als <open/>• Attributen: <open attr=“value”/>
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 6: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/6.jpg)
Name spaces
• Een XML tag heeft een “voornaam”en een “achternaam” (de achternaam komt eerst, gevolgd door een ‘:’, met daarna de achternaam) <adlib:title>
• De achternaam heet ook wel name space• Een name space wordt geïdentificeerd door
een URI (=Uniform Resource Identifier)• Vaak is een URI ook een URL
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 7: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/7.jpg)
Name spaces 2
• Een name space krijgt betekenis door zijn URI: xmlns:xsl=http://www.w3.org/1999/XSL/Transform
• De URI van een name space is zoiets als een BSN: het geeft betekenis aan een naam
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 8: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/8.jpg)
Adlib XML
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 9: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/9.jpg)
Adlib XML
• Root = <adlibXML>• Eén node <recordList>• Per record een node <record>• Eén <diagnostic> node
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 10: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/10.jpg)
Adlib unstructured XML
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 11: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/11.jpg)
Adlib unstructured XML
• Per veld één XML element• Veldnaam in het Engels• Indien geen veldnaam voorhanden is wordt de
tag als veldnaam gebruikt
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 12: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/12.jpg)
XSLT als uitvoerformat
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 13: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/13.jpg)
XSLT als uitvoerformat
• Input is unstructured XML• Uitvoerformaat toevoegen als een normale
outputjob.
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 14: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/14.jpg)
XSLT, here we go !<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Verklaar de 2e regel ?Waarom is http://www.w3.org/1999/XSL/Transform verplicht ?
XSLT is zelf geschreven als XML!
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 15: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/15.jpg)
XSLT is een “pattern matching”taal
Kies een output method<xsl:output method="xml" indent="yes"/>
•html•xml•text
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 16: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/16.jpg)
<xsl:template><xsl:template match=“/“> Dit is de root</xsl:template>
“/” is een xPath expressie
Beter:<xsl:template match="/"> <xsl:text>Dit is de root</xsl:text> </xsl:template>
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 17: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/17.jpg)
<xsl:apply-templates><xsl:template match="/">
<xsl:text>Dit is de root</xsl:text>
<xsl:apply-templates select="adlibXML"/>
</xsl:template>
<xsl:template match="adlibXML">
<xsl:text>adlibXML is gevonden!</xsl:text>
</xsl:template>
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 18: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/18.jpg)
<xsl:apply-templates> <xsl:template match="/"> <xsl:text>Dit is de root</xsl:text> <xsl:apply-templates select="adlibXML"/> </xsl:template>
<xsl:template match="adlibXML"> <xsl:apply-templates select="recordList"/> </xsl:template>
<xsl:template match="recordList"> <xsl:text>recordList is gevonden!</xsl:text> <xsl:apply-templates select="record"/> </xsl:template>
<xsl:template match="record"> <xsl:text>Record!</xsl:text> </xsl:template>
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 19: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/19.jpg)
Internet Explorer is je vriend
1. Exporteer met adlwin je test set data2. Open je output file in IE3. Maak een xslt style sheet
(beide files moeten goed getoond worden)4. Voeg aan je xml file toe:
<?xml-stylesheet href="applytemplates.xslt" type="text/xsl"?>
5. Toon je XML file in je browser...
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 20: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/20.jpg)
Of.. Download X-factorhttp://eu.dummies.com/store/product/XSLT-For-Dummies.productCd-0764536516,navId-322468,descCd-DOWNLOAD.html
De url’s in het boek werken niet! Zoek naar XSLT for dummies en daarna in de download sectie!
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 21: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/21.jpg)
X-factor
Niet op Windows 7
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 22: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/22.jpg)
We maken er HTML van <xsl:output method="html" indent="yes"/>
<xsl:template match="/"> <xsl:apply-templates select="adlibXML"/> </xsl:template>
<xsl:template match="adlibXML"> <xsl:apply-templates select="recordList"/> </xsl:template>
<xsl:template match="recordList"> <table> <xsl:apply-templates select="record"/> </table> </xsl:template>
<xsl:template match="record"> <tr> <td>Record</td> </tr> </xsl:template>
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 23: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/23.jpg)
En een beetje stijl<xsl:template match="/">
<head>
<link href="C:\Users\Public\Documents\mijnstijl.css" type="text/css“ rel="stylesheet"/>
</head>
<xsl:apply-templates select="adlibXML"/>
</xsl:template>
<xsl:template match="adlibXML">
<body>
<xsl:apply-templates select="recordList"/>
</body>
</xsl:template>
<xsl:template match="record">
<tr class="record">
<td>Record</td>
</tr>
</xsl:template>
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 24: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/24.jpg)
<xsl:value-of>• Drukt de uitkomst van een xpath expressie uit• Simpelste expressie : ‘.’ = inhoud huidige node
<xsl:template match="record"> <tr class="record"> <td> <xsl:apply-templates select="priref"/> </td> </tr></xsl:template>
<xsl:template match="priref"> <xsl:value-of select="."/></xsl:template>
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 25: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/25.jpg)
<xsl:value-of><td>
<xsl:apply-templates select="priref"/>
<xsl:value-of select="3 + 4"/>
<xsl:value-of select="'Hello world'"/>
<xsl:value-of select="substring('Adlib', 1, 2)"/>
<xsl:value-of select="title[1]"/>
</td>
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 26: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/26.jpg)
Nu in het echt...<xsl:template match="record">
<tr class="record">
<td>
<xsl:apply-templates select="priref"/>
</td>
<td>
<xsl:apply-templates select="creator[1]"/>
</td>
<td>
<xsl:apply-templates select="title[1]"/>"
</td>
</tr>
</xsl:template>
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 27: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/27.jpg)
A touch of class<xsl:template match="record">
<tr class="record">
<td class="priref">
<xsl:apply-templates select="priref"/>
</td>
<td class="creator">
<xsl:apply-templates select="creator[1]"/>
</td>
<td class="title">
<xsl:apply-templates select="title[1]"/>"
</td>
</tr>
</xsl:template>
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 28: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/28.jpg)
Plaatje er bij?<td class="title">
<xsl:apply-templates select="title[1]"/>"
</td>
<td class ="image">
<xsl:apply-templates select="reproduction.reference[1]"/>
</td>
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 29: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/29.jpg)
Plaatje er bij?<xsl:template match="reproduction.reference">
<xsl:element name="img">
<xsl:attribute name="src">
<xsl:value-of select="concat('C:\Model application 3.5 - Sql server\images\', .)"/>
</xsl:attribute>
</xsl:element>
</xsl:template>
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 30: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/30.jpg)
Plaatje te groot? <xsl:template match="reproduction.reference">
<xsl:element name="img">
<xsl:attribute name="width">100</xsl:attribute>
<xsl:attribute name="src">
<xsl:value-of select="concat('C:\Model application 3.5 - Sql server\images\', .)"/>
</xsl:attribute>
</xsl:element>
</xsl:template>
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 31: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/31.jpg)
Namen omdraaien?
<xsl:template match="creator"> <xsl:choose>
<xsl:when test="contains(., ',')">
<xsl:value-of select="substring-after(., ',')"/>
<xsl:text> </xsl:text>
<xsl:value-of select="substring-before(., ',')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 32: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/32.jpg)
“Duurzaam programmeren” <xsl:template match="creator"> <xsl:call-template name="names"> <xsl:with-param name="name" select="."/> </xsl:call-template> </xsl:template>
<xsl:template name="names"> <xsl:param name="name"/> <xsl:choose> <xsl:when test="contains($name, ',')"> <xsl:value-of select="substring-after($name, ',')"/> <xsl:text> </xsl:text> <xsl:value-of select="substring-before($name, ',')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$name"/> </xsl:otherwise> </xsl:choose> </xsl:template>
Maak er een subroutine van voor hergebruik
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 33: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/33.jpg)
Herhaalde groep <xsl:template match="dimension.value">
<xsl:variable name="pos" select="position()"/>
<xsl:if test="$pos != 1">
<xsl:text>, </xsl:text>
</xsl:if>
<xsl:value-of select="../dimension.type[$pos]"/>
<xsl:text> </xsl:text>
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
<xsl:value-of select="../dimension.unit[$pos]"/>
</xsl:template>
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 34: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/34.jpg)
Good practice
• Combineer XSLT met CSS• XSLT voor de data transformatie en CSS voor
de opmaak details• Hou templates klein (altijd kleiner dan 1
pagina)• Gebruik XSLT niet als programmeertaal, maar
als pattern matching taal • Vermijd <xsl:for-each> loops
Het gebruik van XSLT in Adlib – workshop 30 maart 2010
![Page 35: Het gebruik van xslt in adlib](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bea3b44a79599e4e8b4591/html5/thumbnails/35.jpg)
Vragen
Het gebruik van XSLT in Adlib – workshop 30 maart 2010