|
Heinpragt.com
(c) Hein Pragt |
Taalfoutje melden! | Mijn
|
|
|
|
|
Pagina menu XSLT uitleg, informatie en voorbeelden© 2006 Hein Pragt
XSLT - Extensible Stylesheet Language Transformations
Inhoud
XSLT of XSL Transform is een standaard voor het omzetten van de informatie in XML formaat naar een ander formaat of een anders gestructureerd XML document. Veelgebruikte toepassingen zijn omzettingen van het enen XML formaat naar het andere, XML naar XHTML of PDF. XSLT maakt samen met XSL-FO (Formatting Objects) deel uit van de XSL specificaties van het W3C. Een XSLT document is zelf ook een XML document dat XML specificaties voldoet. Een XML document heeft een orderning in de vorm van een boomstructuur waar door middel van XSLT transformaties op kunnen worden uitgevoerd. De kracht van XSL is dat het een declaratieve taal is (in tegenstelling tot een procedurele taal zoals java en C). In deze taal beschrijft u wat er moet gebeuren en niet zozeer hoe dat moet gebeuren. De templates die u beschrijft zullen recursief als duveltjes uit een doosje op het XML document toegepast worden. Dat dit soms ongewenste resultaten kan geven wanneer u templates te ruim opzet zult u snel merken wanneer u begint met XSLT. Een van de nadelen van XSLT is dat er enigszins kunstmatig getracht is er en XML taal van te maken, waardoor de syntax soms onnodig complex is. In XSLT kunt u typische programmeertaal constructies gebruiken zoals programma lussen (xsl:for-each) en beslissingen (xsl:if). Dit zijn een aantal voorbeelden van XSLT instructies:
Een goede gratis XML editor
XRay is een real-time validerende XML editor. Terwijl u de code intikt zal de ingebouwde parser deze controleren. XRay bevat ook een ingebouwde real-time XSLT transformatie module waarmee u rechtsreeks het resultaat van de transformatie kunt zien in XML maar ook ik HTML formaat. Het grootste voordeel van deze editor is echter dat deze geheel gratis is. U kunt deze editor dowloaden op: architag.comVoorbeeld XML data
Om XSLT te demonstreren hebben we als eerste een XML bestand nodig dat we als voorbeeld invoer gaan gebruiken. Ik heb hier een XML bestand met daarin een simpel adresboek. In dit voorbeeld zit een geneste datastructuur en een attribuut zodat we dit voorbeeld universeel kunnen gebruiken.
Voorbeeld 1, XML naar HTML
HTML kan ook worden gegenereerd door transformatie van een XML bestand door middel van XSLT. Hierbij staat de data in het XML bestand en krijgt deze een HTML layout door middel van de XSLT transformatie. De transformatie zal meestal op de webserver worden uitgevoerd. In dit voorbeeld van een simpel adresboek in XML zal er een op alfabetische volgorde gesorteerde telefoonlijst gegenereerd worden. Dit voorbeeld kan als sjabloon voor uw eigen transformatie gebruikt worden.
Het resultaat van de voorgaande transformatie is de volgende HTML tabel:
Voorbeeld 2, XML naar XML
In de meeste gevallen zal XSLT gebruikt worden om een document in XML formaat om te zetten naar een document met dezelfde data in een ander XML formaat. In dit voorbeeld gebruik ik xsl:element om de uitvoer tags te genereren. Dit heeft twee enorme voordelen. Ten eerste kan het voorkomen dat msxml een extra namespace attribuut toevoegd wat door deze constructie voorkomen kan worden. Ten tweede zal deze methode zelf zorgen voor het generen van de juiste sluittags. Dit voorbeeld kan als sjabloon voor uw eigen transformatie gebruikt worden.
Het resultaat van de voorgaande transformatie is het volgende XML document:
Voorbeeld 3, Javascrip binnen XSLT
Soms kan het voorkomen dat u een functie nodig heeft die binnen XSL niet gedefineerd is, in dat geval kunt u binnen uw XSLT script javascrip aanroepen om een eigen functie toe te voegen. In dit voorbeeld voegen we een functie toe om de huidige datum en tijd in de uitvoer op te nemen. Dit voorbeeld kan als sjabloon voor uw eigen transformatie gebruikt worden.
Voorbeeld 4, XML naar comma separated
Door midddel van XSLT kunt u ook vrij eenvoudig een XML document omzetten naar een comma separated formaat. Een kommagescheiden bestand, of CSV bestandsformaat, in het Engels comma separated values, is een specificatie voor tabel bestanden. Het CSV formaat is het meest eenvoudige en oudste databaseformaat dat er bestaat. Het bestaat enkel uit tekstgegevens, waardoor het gemakkelijk geïmplementeerd kan worden. Waarden worden gescheiden door komma's, en regels door het nieuwe regeltekens.
De uitvoer is:
Voorbeeld 5, vaste lengte data naar XML
Dit is een voorbeeld van een conversie van een vaste regellengte (fixed length) bestand naar een XML bestand. Aangezien XSLT alleen geldige XML kan lezen omsluiten we het data bestand met een <data> en </data> tag. Hierdoor is het geldige xml geworden en kunnen we in de template de data in zijn geheel in een string lezen. Deze kunnen we regel voor regel met substring uitlezen en omzetten naar XML uitvoer. Vaste lengte (fixed length) bestand is een veelgebuikte methode om data uit te wisselen. Het bestaat enkel uit tekstgegevens, waardoor het gemakkelijk geïmplementeerd kan worden. Waarden hebben een vaste positie binnen de regel en bevatten 1 record afgesloten door het nieuwe regelteken. De invoer is:
De uitvoer is:
XSLT elementen
Deze paragraaf geeft een beknopt overzicht van de voorgedefinieerde elementen in de XSLT namespace. Ik bespreek alleen de meest voorkomende tags, de rest van de tags kunt u opzoeken in de XSLT specificatie van het W3C. <xsl:template>Dit kunt u een beetje vergelijken met een functie binnen normale programmeertalen. Het aanroepen van een template kan op twee manieren gebeuren: via een aanroep met behulp van “call-template” of met behulp van pattern matching. Wanneer u apply-templates gebruikt met pattern matching moet de match expressie een geldige XPath expressie zijn. <xsl:apply-templates>Het apply-templates zal, afhankelijk van het select statement, al de templates met de overeenkomende match selecteren en toepassen. De context wordt aangegeven door het select statement. Hiermee kunnen alle templates dus weer afgevuurd worden op de XML boom onder het huidig geselecteerde element. <xsl:call-template>De call-template is vergelijkbaar met een functie oproep in een normale programmeertaal. Een template zal expliciet worden opgeroepen op basis van het naam attribuut. Bij het uitvoeren zal de context node hetzelfde zijn als die van de aanroepende template. <xsl:value-of>Geeft de waarde die in de bijbehorende XPath expressie geselecteerd wordt terug. Wanneer er bijvoorbeeld een element titel voorkomt in de vorm &<titel>Het grote XML boek&</titel>, dan geeft de value-of als uitvoer “Het grote XML boek” wanneer dit element door de xPath expressie geselecteerd is. Wanneer de xPath expressie meerdere elementen selecteert zal alleen de waarde van het eerste element in de uitvoer verschijnen. <xsl:with-param>Bij het oproepen van een template kunt u parameters meegeven. Hiervoor gebruikt u de xsl:with-param tag binnen de xsl:apply-templates of xsl:call-template node. <xsl:param>Hiermee kunt u parameters meegeven bij gebruik van het call-template element. Deze parameters kunnen dan in de template body gebruikt worden door er een $-teken voor te plaatsen. <xsl:if>Dit is een traditionele if test echter zonder een else constructie. Wanneer u ook een else wilt gebruiken dient u xsl:choose en xsl:otherwise te gebruiken De if gebruikt een XPath expressie als test conditie. <xsl:choose>, &<xsl:when>, &<xsl:otherwise>Wanneer er meerdere keuzes mogelijk zijn dan is er een speciale xsl constructie beschikbaar in de vorm van xsl:choose. Met xsl:when worden in de xsl:choose alle mogelijkheden afgegaan. Optioneel kan als laatste kind van xsl:choose het element xsl:otherwise gebruikt worden om alle andere mogelijkheden op te vangen. <xsl:for-each>Hiermee kunt iteratief een template aanroepen voor een geselecteerde NodeSet. Deze NodeSet wordt geselecteerd met behulp van een XPath expressie. Dit context is gelijk aan die van het punt van aanroep. <xsl:attribute>Laat toe om attributen bij tags in de uitvoer te voegen. <xsl:variable>Alhoewel in XSLT het element xsl:variable gedefinieerd is bestaan er eigenlijk geen echte variabelen. Met xsl:variable kunt u een variabele maken waar u éénmalig een waarde aan kunt toekennen. XSLT tips
WitregelsVaak wilt u in de uitvoer toch witregels openemen om het bestand beter leesbaar te maken voor een mens. Whitespace mag overal tussen elementen gezet worden dus een beetje formattering is soms wel handig. door middel van: <xsl:text> </xsl:text>kunt u een end of line (newline) opnemen in de uitvoer. XSLT transformatie binnen de client browser d.m.v. javascriptHoewel XSLT tranformaties heel goed mogelijk zijn op de webserver is het in ook goed mogelijk binnen de client browser. De voorwaarde is wel dat aan de client kant de msxml parser beschikbaar is, maar wanneer u bijvoorbeeld in een intranet omgeving weet wat de standaard client is kunt u de websever ontlasten door de transformatie binnen de client browser uit te voeren. Dit eenvoudige voorbeeld laat tevens zien hoe u een xml bestand als database op de webserver kunt gebruiken, deze via de client browser kunt omzetten in html en de records kunt sorteren op een van de elementen. Het xml bestand
Het XSLT script
De HTML pagina met de javascript
Verklarende woordenlijst#PCDATA(Parsed Character Data) De feitelijke data van een element.
ActiveXEen set technologieën waarmee softwareonderdelen kunnen samenwerken in een netwerkomgeving, onafhankelijk van de taal waarin de onderdelen zijn gemaakt.
ADO(ActiveX Data Objects) Een interface voor gegevenstoegang waarmee clientprogramma's gegevens in een bestands- of servergebaseerde database kunnen openen en manipuleren.
AppletEen programma dat in de programmeertaal Java is geschreven en dat kan worden opgenomen in een HTML-pagina. Java-applets kunnen worden gedownload en uitgevoerd door een webbrowser.
ASCII(American Standard Code for Information Interchange) Een coderingsschema dat gebruik maakt van 255 tekens inclusief letters, cijfers, leestekens, besturingstekens en andere symbolen. ASCII is een standaard voor het overbrengen van gegevens tussen verschillende typen hardware- en softwaresystemen.
ASP.NETEen set technologieën binnen het raamwerk van Microsoft .NET waarmee webprogramma's en XML-webservices kunnen worden ontwikkeld. Webservers die compatibel zijn met ASP.NET kunnen als host fungeren voor webservices en webprogramma's uitvoeren.
ASP(Active Server Pages) Een scripttechnologie voor scripts die op de server worden uitgevoerd waarmee dynamische interactieve webtoepassingen kunnen worden gemaakt. Een ASP-bestand is een document dat scripts bevat die door een ASP-compatibele webserver kunnen worden uitgevoerd.
BestandEen hoeveelheid informatie met een naam die op een computer opgeslagen is, de Engelse term voor bestand is file.
BrowserEen programma dat HTML-bestanden interpreteert, opmaakt als webpagina's en weergeeft. U kunt een webbrowser gebruiken om van de ene webpagina naar de andere te gaan door middel van hyperlinks.
CertificaatEen digitaal ondertekend document dat wordt uitgegeven door een certificeringsinstantie waarmee u internet verkeer kunt beveiligen.
CGI(Common Gateway Interface) Een standaardmethode om de functionaliteit van webservers uit te breiden door programma's of scripts op een webserver uit te voeren als reactie op aanvragen van webbrowsers.
CSSEen specificatie die is ontwikkeld door het World Wide Web Consortium waarin wordt gedefinieerd hoe aan webpagina's opmaakmodellen gekoppeld kunnen worden. Deze opmaakmodellen definiëren de weergave en de opmaak van inhoud van webpagina's.
DAO(Data Access Objects) Een interface voor gegevenstoegang die communiceert met Microsoft Jet en ODBC-compatibele gegevensbronnen voor het maken van verbinding met databases.
DatabaseEen bestand of server die records met gegevens bevat die zijn georganiseerd met de mogelijkheid deze gegevens gemakkelijk te kunnen zoeken, bijwerken, sorteren en combineren.
DHTML(Dynamic HTML) Een uitbreiding van HTML waarmee u webpagina's meer interactief kunt maken. Webpagina's waarin DHTML wordt gebruikt kunnen dynamisch worden gewijzigd en bijgewerkt als reactie op acties van gebeuikers, zonder dat de pagina's na elke actie opnieuw vanaf een server hoeven te worden geladen.
DOM(Document Object Model) Dit is een object-georiënteerde benadering van gestructureerde documenten zoals HTML-, XHTML- en XML-documenten waarbij de onderdelen (en de eigenschappen van elk onderdeel) van het document afzonderlijk benaderd kunnen worden.
DomeinnaamEen logische naam waarmee een computer systeem (meestal webserver) gezocht kan worden. Door een zogenaamde DNS (Domain Name Server) zal deze naam omgezet worden in een IP adres.
DTD(Document Type Definition) Documenttype definitie is een schema taal die oorspronkelijk bij SGML gebruikt werd. Een DTD kan onder meer aangeven, wat voor soort tags en in welke volgorder deze in een XML document mogen voorkomen.
ERP(Enterprise Resource Planning)In het Nederlands is 'bedrijfsinformatiesysteem’ de beste omschrijving. Een ERP-systeem ondersteunt alle bedrijfsprocessen in een organisatie zoals de inkoop, verkoop en de administratie waarbij tussen alle afdelingen gegevens worden uitgewisseld.
FAQFAQ is een samentrekking van de woorden 'Frequently Asked Questions'. Dit zijn lijsten met veel gestelde vragen over een bepaald onderwerp waarop een antwoord wordt gegeven.
FirewallEen combinatie van hardware en software waarmee een netwerk of computersysteem kan worden beveiligd. Een firewall blokkeert ongewenste toegang tot een beveiligd netwerk.
FTP(File Transfer Protocol) Een protocol waarmee bestanden via een netwerk of internet van en naar externe computersystemen kunnen worden overgebracht.
GIF(Graphics Interchange Format)Een gecomprimeerde bestandsindeling die veel gebruikt wordt om kleurafbeeldingen weer te geven.
HTML(Hypertext Markup Language) De standaardopmaaktaal voor documenten op het World Wide Web. HTML is een subset van Standard Generalized Markup Language (SGML).
HTTP(Hypertext Transfer Protocol) Een protocol waarmee webbrowsers webpagina's en informatie van servers op het World Wide Web kunnen ophalen.
HTTPS(Hypertext Transfer Protocol Secure) Een protocol waarmee webbrowsers webpagina's en informatie op een veilige manier van servers op het World Wide Web kunnen ophalen. HTTPS biedt de mogelijkheid om gegevens te coderen.
HyperlinkEen verwijzing in de vorm van tekst, een afbeelding of een ander pagina--element naar een webpagina of bestand. Hyperlinks vormen op het World Wide Web de belangrijkste manier om tussen webpagina’s en websites te navigeren.Een hyperlink wordt ook wel een koppeling genoemd.
InternetDe wereldwijde verzameling van computers, netwerken en gateways die via TCP/IP-protocollen met elkaar communiceren.
IntranetEen netwerk binnen een organisatie waarvoor internettechnologieën en -protocollen worden gebruikt, maar dat alleen beschikbaar is voor bijvoorbeeld de werknemers van een bedrijf.
IP(Internet Protocol) Een TCP/IP-protocol waarmee gegevens in pakketten worden verdeeld die van de afzender naar de bestemming worden verzonden waar ze weer worden samengevoegd tot de oorspronkelijke gegevens.
ISP(Internetprovider) Een bedrijf dat services voor internetaansluitingen aanbiedt aan privé-personen, bedrijven en andere organisaties.
JavaEen objectgeoriënteerde programmeertaal die is ontwikkeld door Sun Microsystems. Programma's die in Java zijn geschreven zijn onafhankelijk van het platform en kunnen dus worden uitgevoerd op elk type computer.
JavaScriptEen scripttaal die kan worden gebruikt om functionaliteit aan een webpagina toe te voegen of een webpagina of website te verfraaien. JavaScript-scripts kunnen worden uitgevoerd op zowel de client als de servercomputer.
JPEG(Joint Photographic Experts Group) Een gecomprimeerd afbeeldings bestandsindeling waarmee kleurenafbeeldingen met een hoge resolutie worden weergegeven.
JVM(Java Virtual Machine) Een programma dat Java applets en programma's kan uitvoeren.
MATHML(Mathematical Markup Language) Toepassing van XML voor wiskundige en wetenschappelijke notaties.
MSXMLDe XML parser van Microsoft, ingebouwd in Interne Explorer 5.0 en hoger.
ODBC(Open Database Connectivity) Een standaardmethode om gegevens uit te wisselen tussen databases en programma's.
OpmaakprofielEen set opmaakkenmerken voor tekst of andere pagina-elementen.
Parser(Engelse to parse is ontleden) Dit is een computerprogramma, of component van een programma, dat de grammaticale structuur van een invoer volgens een vastgelegde grammatica analyseert (parseert).
PCX(PC Paintbrush) Een grafische bestandsindeling waarbij de grafische gegevens eenvoudig worden gecomprimeerd. Deze indeling wordt gebruikt door oudere versies van Windows Paintbrush.
PNG(Portable Network Graphics) Een bestandsindeling voor gecomprimeerde afbeeldingen die vergelijkbaar is met de GIF-indeling. PNG is een open standaard en was het antwoord op het patent dat na jaren ineens opdook voor de GIF indeling.
PPP(Point-to-Point Protocol) Een internetstandaard voor het verzenden van gegevens via seriële verbindingen tussen computers.
ProtocolEen set regels en standaarden die computers in staat stellen om te communiceren.
ProxyserverEen internetserver die fungeert als toeganspoort voor verschillende computer systemen.
RDBMS(relationeel databasebeheersysteem) Een databasebeheersysteem waarin gegevens in verwante rijen en kolommen worden geordend zoals in het relationele model is gedefinieerd. MYSQL, Microsoft SQL Server en Oracle zijn bekende voorbeelden.
SAX(Simple API (Application Programming) Interface) Dit is een beschrijving van interface om XML op een event-gebaseerde manier te verwerken.
ScriptEen programmeertaal waarmee een set instructies naar een programma zoals een webbrowser kan worden gestuurd. Een script wordt rechtstreeks uitgevoerd door een programma waarmee de taal van het script kan worden gelezen.
SelectorIn de opmaakprofieldefinitie CSS opmaakmodel is dit het patroon voor een HTML of XML element dat aan een bepaalde set opmaakeigenschappen en waarden is gekoppeld.
SGML(Standard Generalized Markup Language) Een taal waarmee elementen en gegevens in een document kunnen worden georganiseerd en van een code voorzien. SGML geeft alleen de structuur aan, niet de opmaak op.
SOAP(Simple Object Access Protocol) Een protocol voor het uitwisselen van informatie middels HTTP en XML tussen systemen van het zelfde of andere Operating Systemen.
SQL(Structured Query Language) Een veelgebruikte opvraag en programmeertaal voor databases.
SSL(Secure Sockets Layer) Een standaard die door Netscape Communications is ontwikkeld om gegevens te coderen en veilig over internet te verzenden.
TCP(Transmission Control Protocol) Netwerksoftware waarmee de overdracht van gegevenspakketten via internet wordt geregeld.
TIFF(Tagged Image File Format) Een grafische indeling met hoge resolutie op basis van codes die veel gebruikt wordt voor het scannen, de opslag en de uitwisseling van afbeeldingen.
UDDI(Universal Description, Discovery, en Integration) Dit is een XML gebaseerde registry voor ondernemingen op het internet met als doel interoperability van systemen voor e-business, het is vergelijk baar met het Telefoonboek of Gouden Gids.
UNIXEen multitasking-besturingssysteem voor meerdere gebruikers dat diverse vormen en implementaties kent. Veel webservers draaien op UNIX-systemen.
URL(Uniform Resource Locator) Een uniek adres dat de locatie van een pagina, bestand of andere bron op internet identificeert. Een internetadres bestaat meestal uit vier delen: het protocol waarmee toegang gezocht wordt tot de bron, bijvoorbeeld http://, het servertype, de servernaam, die vaak de naam is van de organisatie die de bron onderhoudt, en een achtervoegsel dat meestal het type organisatie definieert dat de bron onderhoudt.
VariabeleLetters of een naam waarmee numerieke waarden, tekens, tekenreeksen of geheugenadressen worden aangeduid. Bij het schrijven van programmacode gebruikt een programmeur variabelen om gegevens weer te geven. Wanneer het programma wordt uitgevoerd, worden de variabelen vervangen door de echte gegevens.
VB(Visual Basic) Een programmeertaal die Microsoft ontwikkeld voor het maken van Windows-toepassingen.
VBA(Visual Basic for Applications) Een subset van de programmeertaal Microsoft Visual Basic.
VBSCRIPT(Visual Basic Scripting Edition) Een scripttaal die kan worden gebruikt om functionaliteit aan een webpagina of website toe te voegen.
VcardvCard is een open standaard voor het bewaren van adresgegevens.
VML(Vector Markup Language) Een op XML gebaseerde taal waarmee tweedimensionale vectorafbeeldingen kunnen worden gemaakt in HTML- of XML-documenten.
W3C(World Wide Web Consortium) Een consortium van commerciële en educatieve instituten dat toezicht houdt op onderzoek en normen propageert voor alle gebieden die verband houden met het World Wide Web.
WEBDAV(Web-based Distributed Authoring and Versioning) Een toepassingsprotocol dat verwant is met HTTP waarmee auteurs die gebruikmaken van verschillende computers bestanden op het World Wide Web kunnen publiceren en beheren.
WebserviceEen webservice is een API waardoor webapplicaties met elkaar kunnen communiceren. Hierdoor kunnen bepaalde taken uitgevoerd worden door andere servers en websites. Webservices worden meestal ontwikkeld in XML.
WSDL(Web Services Definition Language) Dit specificeert welke functionaliteit een Web Service aanbiedt, welke datatypen en security een Web Service gebruikt en waar de Web Service zich bevindt.
WWW(World Wide Web) Het grafische multimediagedeelte van internet. De meest gebruikelijke bestanden op het World Wide Web zijn HTML-documenten oftewel webpagina's.
WYSIWYGStaat voor 'What You See Is What You Get' (wat u ziet is wat u krijgt). Met een WYSIWYG-weergave ziet u hoe uw webpagina of document er in uiteindelijke uit zal zien.
XML(Extensible Markup Language) Een subset van SGML (Standard Generalized Markup Language), een taal voor het maken van datastructuren waarmee gegevens tussen programma's, servers en organisaties kunnen worden gedefinieerd, verzonden, gevalideerd en geïnterpreteerd.
XSL(Extensible Stylesheet Language) Een op XML gebaseerde taal voor het maken van opmaakprofielen waarmee XML-documenten in andere soorten documenten kunnen worden omgezet.
XSLT(Extensible Stylesheet Language Transformations) Een taal waarmee XML-documenten in andere XML-documenten kunnen worden omgezet, dit is een subset van XLS (Extensible Stylesheet Language).
|
|||||||||||||||||||||||||||||||||
|
Disclaimer. |