XSL(T): verschil tussen versies
Regel 37: | Regel 37: | ||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||
− | <xsl:stylesheet version="1.0" | + | <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> |
− | xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | ||
<xsl:template match="/"> | <xsl:template match="/"> |
Versie van 14 apr 2018 19:43
XSL Staat voor eXtensible Stylesheet Language. Het is een verzameling programmeertalen om XML-documenten te manipuleren. Oorspronkelijk was het bedacht als tegenhanger van CSS. Dus een taal die uitlegt hoe je een bepaald type XML-documenten weergeeft. Die functie heeft het nog steeds, naast andere toepassingen.
XSL bestaat uit een aantal onderdelen:
- XSLT - Zie hieronder
- XPath - The XML Path Language: Een expressietaal voor oa. XSLT om onderdelen van XML-documenten te benaderen, ontwikkeld door de W3C XQuery en XSLT Working Groups
- XSL-FO - XSL Formatting Objects: Een taal om XML-documenten op te maken. In 2013 opgevolgd door CSS3
- XQuery - Een taal om XML-documenten te querien (zegt [1]).
XSLT oftewel XSL Tranformations Language (afgekort XSLT, niet XSLTL) is een taal om XML-documenten om te fietsen naar andere XML-documenten:
- XSLT pas je toe in zogenaamde style sheets
- XSLT transformeert niet zozeer elementen naar andere elementen, maar source trees naar result trees
- XSLT processors passen style sheets toe op een source tree. Alle gebruikelijke programmeertalen beschikken over bibliotheken die dit doen
Style sheet declaration
De root van een XML style sheet (=XSLT-bestand) is een xsl:stylesheet
- of xsl:transform
-element (deze twee termen zijn synoniem [2]). De correctie declaratie van een XSL style sheet is
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
of
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Om toegang te krijgen tot XSLT elementen, attributen en functionaliteiten, moet je een XSLT namespace declareren aan het begin van het document. De declaratie
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
verwijst naar de officiële W3C XSLT namespace.
Voorbeeld: Gebruik voor opmaak
Voorbeeld van XSLT als opmaaktaal voor een XML-document:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
De XML-velden zijn hier geïncorporeerd in een groter geheel, dat uit HTML bestaat.
Dit is hoe je vanuit zo'n XML-document kunt verwijzen naar een bijbehorend XSL stylesheet:
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?> <catalog> <cd> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <price>10.90</price> <year>1985</year> </cd> . . </catalog>
Als je dit XML-bestand opent in een browser, kun je het resultaat zien.
Templates
- Templates lijken de basis-bouwstenen van XSL(T) te zijn. Een template-element bestaat uit één of meer regels om een template te genereren: Een boom met elementen
- Het match-attribuut zorgt voor de selectie van elementen uit de bron. De waarde van een match-attribuut is een XPath-expressie.
Voorbeeld van een template-element met '/'-match, waarmee het hele document wordt geselecteerd:
<xsl:template match="/">
Hiero ben ik gebleven: https://www.w3schools.com/xml/xsl_templates.asp
Template rules
Template rules zoals xsl:template
zijn voorbeelden van transformaties: Source-trees die voldoen aan het gegeven match-attribute, worden overgenomen in de result-tree.
In dit voorbeeld wordt input zonder transformatie doorgezet naar output, met één hele handige uitzondering: De intendation wordt bijgewerkt:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes"/> <xsl:strip-space elements="*" /> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet>
Bronnen
- http://www.xml.com/pub/2000/06/07/transforming/index.html - Aardige inleiding
- https://stackoverflow.com/questions/2679443/how-do-i-rename-an-attribute-using-xslt - Hernoem attributen
- https://www.w3.org/Style/XSL/
- https://www.w3schools.com/xml/xsl_languages.asp - Leest prettig
- https://www.w3schools.com/xml/xsl_templates.asp