1 XSLT processing & control Datamodellering 2006
2 Onderwerpen Hoe verwerkt een XSLT processor de XML inputtekst? Wat zijn de uitgangspunten bij het schrijven van een XSLT-stylesheet? Welke control structures zijn er? Niet: XPath, zie daarvoor en voor andere XSLT-zaken bijvoorbeeld de XSLT Reference van ZVON en stof UWT:
3 XML document tree jelly peanut-butter bread root element root node
4 Nodes in de XSLT-boom Root node (= document node) een onzichtbaar punt boven het root element Element correspondeert met element in XML document Attribute correspondeert met een attribuut van een element in een XML document heeft een element als parent, maar wordt niet als een gewoon child behandeld in XSLT Text de tekstuele inhoud van het document Comment Processing instruction Namespace
5 Van boom tot boom Source tree Source document Result Document Result Tree Stylesheet tree Style sheet Transformatie proces
6 Template rules De transformatie is op te vatten als een reis door de input-boom, waarbij stapsgewijs de output-boom wordt opgebouwd XSLT-instructies sturen dit proces = toepassen van: template rules specificeren de transformaties expliciet in de XSLT-file of built-in in de XSLT-processor bestaan twee delen: een actie een pattern (het match-attribute) op welk deel van de input-boom de actie moet worden toegepast Voorbeeld:
7 Default situatie Schrijven we geen uitvoerige template rules, dan toch output. Voorbeeld: dit doorloopt de hele input tree (depth first) en geeft alle text weer
8 Sturing template-gebruik in combinatie met: of: value
9 XSLT processing model XSLT-processor leest de input tree. Ongeacht de inhoud van de XSLT-file, altijd eerst de virtual call: root node wordt current node call template rule die root node matcht alle nodes in result tree. Processor loopt input tree verder af en zoekt meest specifieke, expliciet vermelde template rule die matcht. XPath om matching-expressie te definiëren. Debugger in een goede editor het pad volgen.
10 Voorbeeld 1 XML A B1 B2 C D XSLT Dit is een B in combinatie met built-in rules output: Dit is een B Dit is een B C D
Start context let op: context = document root Debugger (in XML-Spy)
Root node gebruik van built-in rule Debugger
Node Input-boom verder afgelopen : geen explicit rule built-in rule Debugger
Node Komt bij Wel explicit rule maar geen output Debugger
Select Komt bij Wel explicit rule maar geen output Debugger
Node B1 Wel explicit rule voor output bij B1 Debugger
Node B2 Weer explicit rule voor output bij B2 Debugger
Andere nodes Output result tree Geen passende explicit rules meer Debugger
Node Debugger
Node Debugger
21 Voorbeeld 2 in combinatie met built-in rules XML A B1 B2 C D XSLT Dit is output: Dit is B1 Dit is B2
22 Voorbeel 2 - trace De trace list geeft het pad weer dat de XSLT-processor heeft gevolgd Symbolen: enter leave Debugger (in oXygen)
23 Wanneer welke stijl? Globale vuistregel: wanneer het voorkomen van elementen betrekkelijk onvoorspelbaar is b.v. bold, italic, afbeeldigen in tekst etc. wanneer er een regelmatige, bekende datastructuur is b.v. een databaserecord-structuur of vaste volgorde van hoofdstukken, secties, etc.
24 Parameters - 1 XSLT-templates kunnen parameters hebben: Gebruik: 5
25 Parameters - 2 Parameters kunnen ook globaal zijn voor het hele XSLT-programma. Dan is een top-level element. Zij zijn vergelijkbaar met een XSLT- variabelen. Default waarde via select-attribuut of via template content. Voorbeelden: value
26 De case-clause: choose
27 Sorteren - 1 mag alleen voorkomen als kind van:
28 Sorteren Mentary Rudy Simpleton 123 Bushwack Ln Chains Allison Simpleton 999 Leafy Rd
29 Vragen?