XPath voor beginners. HVA-IAM-V1-TDI Internetstandaarden 2 2008/2009. Fons van Kesteren



Vergelijkbare documenten
Adlib Gebruikersdag adlibxml/xslt in de praktijk Breukelen 2 mei 2013 Solino de Baay s.debaay@adlibsoft.com

Quick Reference Card. Activiteiten

XSL = XSLT + XSL-FO + XPath

Zelftest XML Basis. Document: n1006test.fm 25/01/2017. ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium

!!!!!!!!!!!! Handleiding website! VV Den Ham

Modelleren en Programmeren

HANDLEIDING DOIT BEHEER SYSTEEM

Bibliografische referenties invoegen via Word 2013

Gebruik. Wanneer u FreeMind opent, krijgt u het volgende scherm:

6. Absolute en relatieve celadressering

Wat is nieuw in deze handleiding: Dit is een nieuwe handleiding welke nieuwe functies beschrijft.

Stap 3 Wat kunnen we met de inhoud?

OEFENINGEN PYTHON REEKS 1

ModusOne. ModusOne MOT. Version: 5.2

Handleiding wordpress

Handleiding voor Leden

1. Een nieuw document maken op basis van GO! sjablonen

ONLINEADVISEREN.NL ONLINEADVISEREN.NL. Handleiding interactief websysteem ter ondersteuning van online adviseren

Eindtoets XML: Theorie en toepassingen

Als je de categorie Getal hebt gekozen kunt u in de notatie bepalen hoe het getal moet worden weergegeven.

Inhoud van de website invoeren met de ContentPublisher

Beknopte handleiding Dragon NaturallySpeaking. Premium versie 13

XML & XSLT voor DMO. Datamodellering Een XML datamodel. conceptueel model logisch / fysiek model: platform afhankelijk

OEFENINGEN PYTHON REEKS 1

Lekker snel XML met SQL (.nl)

Lab Webdesign: Javascript 7 april 2008

Bibliografische referenties invoegen via Word

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

SQL & Relationele datamodellen in interactieve media

Correspondentie inzake overnemen of reproductie kunt u richten aan:

Getting-started tutorial. Versie 1.0

Handleiding korte instructie gebruik LommOnline voor verenigingen. Stap 1. Vooraf:

Lab Webdesign: Javascript 11 februari 2008

5. Functies. In deze module leert u:

1 Werken met (keuze)lijstjes: de control listbox

Sneltoetsen, functietoetsen, toetsenbordcombinaties

Umbraco Gebruikershandleiding

SQL Aantekeningen 3. Maarten de Rijke 22 mei 2003

HANDLEIDING. WordPress LAATSTE VERSIE: RODER!CKVS WEBDESIGN & WEBHOSTING

Teksten op je WordPress site zetten of aanpassen

Python. Vraag 1: Expressies en types. Vraag 1 b: Types -Ingebouwde functies- Vraag 1 a 3/10/14

Tutorial. Microsoft Excel Gevorderd

HANDLEIDING BEHEER WEBSITE. Vrouwen van Nu

Een spoedcursus python

REDACTEUREN HANDLEIDING

van PSD naar JavaScript

IQ LEADS Adres: Curieweg 8E Postcode: 2408 BZ Plaats: ALPHEN AAN DEN RIJN Telefoon: (0172)

EXPLORING DB2. OPEN CURSOR Met de geïntegreerde ondersteuning

Tutorial. Microsoft Project 2003

Handleiding Inventarisatie met Softwear

Mach3Framework 5.0 / Website

EXCEL BASIS 2013

Economische topper 4 Opdracht pag. 42 nr. 2

Achtergrond en lettertype Opmaak Achtergrond Opmaak Achtergrond Afbeelding in achtergrond

drupal 4 Fons les 07 - enitity reference view 2015_03_19 1

HTML Editor: tabellen en hyperlinks

Handleiding invoegen afbeeldingen en downloadlinks t.b.v. het CMS

1 DATABASE MANAGEMENT

maplev 2010/7/12 14:02 page 15 #17 Nadere detaillering van een aantal zaken van Module 1 Geen,, " ", \, save, read, protect, unprotect

1. Achtergronden verwijderen (op basis van Photoshop CS2/CS3)

Handleiding IVN Ledenadministratie

Handleiding voor Leden Teampagina aanpassen op

TeD Tekst en Design. Basisinformatie voor klein gebruik van het cms Made Simple

Lettertypenbeheer. Craig Drummond Vertaler/Nalezer: Freek de Kruijf

Intranet. Handleiding voor redacteurs, nieuwsberichten.

Programmeermethoden NA. Week 6: Lijsten

In dit document staat beschreven hoe je de meetgegevens vanuit Coach kunt opslaan en later in kunt lezen in Excel en hier een grafiek van kunt maken.

1click updatemodule. Hoe bereiken? U kunt uw CMS eenvoudig bereiken door vlak achter uw domeinnaam /cms te plaatsen. Bv.

Systeemontwikkeling, Hoofdstuk 4, Tabellen maken in MS Access 2010

Symbolen en diakritische tekens

Rapporten. Labels en Rapporten in Atlantis 1. Atlantis heeft twee manieren om output te genereren: 1. labels 2. rapporten (reports)

Kennismaken Greenfoot

9. Strategieën en oplossingsmethoden

Gouden Tekst.

Programmeermethoden NA

LASERSELFIE SNIJD JE SELFIE UIT MET DE LASERSNIJDER! Ontwikkeld door

Handleiding Kaltura via Blackboard

De Wetenschappelijke notatie

Implementatie #-operator

Onafhankelijke verzamelingen en Gewogen Oplossingen, door Donald E. Knuth, The Art of Computer Programming, Volume 4, Combinatorial Algorithms

Het gebruik van een spreadsheetprogramma Algemene introductie in het gebruik van spreadsheets Fons Vernooij

[HANDLEIDING WE-CARE] Wat is dit product, hoe wordt het geïnstalleerd en hoe werkt het precies? Thom Steinfort

AFO Het samenvoegen van documenten

Werken aan de hand van. Microsoft Excel. Schooljaar V. Schelkens, C. Kaivers, F. Thomas

Hippo-handleiding Homepage Inhoudsopgave

Project Software Engineering XML parser: Parsen van een xml CD catalogus

Een eenvoudig algoritme om permutaties te genereren

Juni ZorgDomein verbetert zorg. ZorgDomein voor gebruikers van Hapicom 1

2. INLOGGEN INLOGGEN'

INHOUDSOPGAVE. Inhoudsopgave

Ga naar en log in met de gebruikersnaam en wachtwoord verkregen via mail.

1 Inleiding. 1.1 Werkblad, rijen, kolommen en cellen Als je Excel opent, zie je het volgende scherm (de menubalk bovenin kan iets verschillen):

Handleiding Vedor-editor

Online afdrukken 4.0. Uitgave 1

Verwijderen van een persoon kan door de regel leeg te maken. Met de knop (linksonder) Verwijderen verwijdert u de hele pagina!

Handleiding Wordpress

Revisely Docentenhandleiding

Informatie dashboardomgeving uitstroomonderzoek

SQL & Datamodelleren

Transcriptie:

XPath voor beginners HVA-IAM-V1-TDI Internetstandaarden 2 2008/2009 Fons van Kesteren 1

Inhoud Inleiding... 3 XPath paden... 4 Absoluut pad... 4 Relatief pad... 4 Eenvoudige stappen... 5 Element... 5 Attribuut... 5 Alle kinderen/attributen... 5 Één stap omhoog... 5 Alle onderliggende elementen... 5 Stap op de plaats... 6 Andere nodes ( tekst, commentaar, processing-instruction)... 6 Voorwaarden... 7 Aanwezigheid van nodes... 7 Waarden van nodes... 7 Positie van een element... 7 XPath functies... 8 string-functies... 8 nummer-functies... 8 XPath-assen... 9 De assen... 9 Lange vs korte notatie... 9 2

Inleiding Basiskennis van XPath. Inleiding XPath, voor meer informatie raadplege men een reference. Alle voorbeelden die in deze tutorial worden gebruikt kunnen worden toegepast op onderstaand XML bestand. <?xml version="1.0" encoding="utf-8"?> <artikel datum="2008-11-01" bron="hva krant" > <titel>blok 2 begint </titel> <samenvatting> 2 van het tweede jaar 'interactive media' is begonnen. </samenvatting> <tekst> <plaatje bron="plaatje.gif"/> <alinea> enthousiasme is men aan het nieuwe blok begonnen. blok begon met een gezellige knutselopdracht om de stemming er goed in te krijgen.</alinea> <alinea>de docent zegt: <citaat>zet hem op jongen</citaat>. En toen was het begonnen. Maar niet zonder de toverspreuk <citaat geciteerde="jiskefet"> Waar de dieren zich aan de drinkplaats laven, laven de mensen zich aan een goed gesprek over de dieren.</citaat> uit te spreken.</alinea> </tekst> <gerelateerde_artikelen> <gerelateerd_artikel url="http://www.artikelen.nl/2008/artikel100"> <titel>nieuwe laptops gratis weggegeven.</titel> </gerelateerd_artikel> <gerelateerd_artikel url="http://www.artikelen.nl/2008/artikel55"> <titel>blok 1 met succes afgerond.</titel> </gerelateerd_artikel> </gerelateerde_artikelen> </artikel> 3

XPath paden Een Xpath expressie is een beschrijving van een pad door een XML structuur naar nul, één of meer punten in de XML boom. Zo n pad bestaat uit stappen, die ieder gescheiden worden door een (slash ( / ). Enkele voorbeelden: /artikel/titel /artikel/@datum alinea/citaat Bovenstaande paden beschrijven dus een pad door een XML structuur. Een pad bestaat uit één of meer stappen. De stappen worden gescheiden door een slash ( / ). Bij iedere stap wordt er een volgend element of attribuut geselecteerd. Er zijn twee soorten paden: absolute paden en relatieve paden. Absoluut pad Een absoluut pad begint altijd met een slash ( / ) waarmee wordt aangegeven dat het pad vanaf helemaal bovenaan in de XML boomstructuur moet worden gevolgd. Bijvoorbeeld: /artikel/titel /artikel/@datum Relatief pad Een relatief pad begint zonder slash ( / ) en moet worden gevolgd vanaf de contextnode waar het pad wordt aangeroepen. Wat de context-node is hangt dus helemaal af van de plek waar de xpath-expressie wordt gebruikt. Bijvoorbeeld in een xls:for-each loop <xsl:for-each select="/artikel/gerelateerde_artikelen/gerelateerd_artikel "> <xsl:value-of select="titel"/> (zie: <xsl:value-of select="@url"/>) <br/> </xsl:for-each> Alle select-paden in de xsl:value-of elementen zijn relatief ten opzichte van het gerelateerde_artikel element die in de xsl:for-each loop geselecteerd wordt. 4

Eenvoudige stappen Er kan op zeer veel manieren een stap gemaakt worden in XPath, en soms kan dat op een ingewikkelde manier. In verreweg de meeste gevallen zijn de stappen echter eenvoudig. In dit hoofdstuk zullen de eenvoudige en meest gebruikte stappen worden besproken. Verreweg de meeste stappen zijn selecties van element of attributen. Deze stappen zijn dan ook eenvoudig te maken. Element Een element wordt geselecteerd met de naam van het element. Bijvoorbeeld: /artikel/titel Hierin wordt de eerste stap gezet van bovenin de xml structuur naar het eerste element met de naam artikel, vervolgens wordt een stap gezet naar het daaronder liggende element met de naam titel. Attribuut Een attribuut kan worden geselecteerd met een @ gevolgd door de naam van het attribuut. Bijvoorbeeld: /artikel/@datum Hierin wordt eerst het artikel-element geselecteerd en daarna het datum-attribuut. Alle kinderen/attributen Alle elementen of attributen worden geselecteerd met een wildchar ( * ). Bijvoorbeeld: /artikel/* /artikel/@* In het eerste voorbeeld worden alle elementen onder artikel geselecteerd. In het tweede voorbeeld worden alle attributen van artikel geselecteerd. Één stap omhoog Soms wil je een stap omhoog doen. In dat geval gebruik je twee punten (.. ). Bijvoorbeeld:../@datum Hier wordt het datum-attribuut van het bovengelegen element geselecteerd. Alle onderliggende elementen Soms wil je alle elementen in de onderliggende boom structuur selecteren. Daarvoor wordt de dubbele slash ( // ) gebruikt. Bijvoorbeeld. //citaat 5

Hier mee worden in één keer alle citaat-elementen in de gehele onderliggende boomstructuur geselecteerd. Stap op de plaats Het is ook mogelijk om een pas op de plaats te doen. Dan wordt een enkele punt (. ) gebruikt.. Dit lijkt misschien een beetje overbodig, maar bijvoorbeeld in een xsl:for-each loop kan dat wel degelijk zinvol zijn. <h3>citatenlijst<h3> <ol> <xsl:for-each select= //citaat > <li><xsl:value-of select=. /></li> </xsl:for-each> </ol> In dit voorbeeld worden de waarden van alle telefoonnummer-elementen in een lijstje geplaatst. Andere nodes ( tekst, commentaar, processing-instruction) Behalve elementen en attributen kunnen ook andere naamloze nodes geselecteert worden. Tekst, commentaar en processing-instructions hebben geen naam en kunnen daarom alleen met speciale functies worden geselcteerd. text() comment() processing-instruction() Daarnaast is er nog één functie die alle nodes van ieder type selecteerd: node() 6

Voorwaarden In alle bovenstaande voorbeelden worden elementen en attributen geselecteerd op basis van de naam van het element of het attribuut. Er kunnen echter nog andere voorwaarden gesteld worden aan de selecties. Deze voorwaarden staan tussen rechte haken achter de naam van het element of attribuut: artikel [voorwaarde ]. Hieronder worden enkele veelgebruikte voorwaarden beschreven. Aanwezigheid van nodes Een element kan geselecteerd worden op basis van de aanwezigheid van een andere node in de xml structuur. alinea [ citaat ] Dit voorbeeld selecteert de alinea s waar een citaat in voorkomt. citaat [ @geciteerde ] Dit voorbeeld selecteert de citaat-element met een geciteerde-attribuut. Waarden van nodes Er kan natuurlijk ook geselecteerd worden op de waarde van een element of attribuut. artikel [ @datum = 2008-01-01 ] Dit selecteert artikel s van een bepaalde datum. alinea [ /citaat / geciteerde= jochem ] Dit selecteert de alinea s met een citaat van jochem. Positie van een element Een veelgebruikte voorwaarde is de positie van een element in een lijst. Bijvoorbeeld het eerste of het laatste alinea. alinea [ 1 ] alinea [ last() ] 7

XPath functies Behalve het selecteren van nodes, is het ook mogelijk om berekeningen of manipulaties van gegevens te doen. Hier voor zijn er een aantal functies beschikbaar. Hieronder worden er enkele genoemd. Raadpleeg een XPath reference voor meer functies. string-functies Bijvoorbeeld: contains(string, substring ) : true als de string substring bevat, anders false normalize-space(string) : verwijdert alle overbodige spaties, tabs en returns nummer-functies Bijvoorbeeld: round( getal ) : doet een afronding 8

XPath-assen In voorgaand hoofdstuk over eenvoudige stappen is beschreven hoe de meest gebruikte stappen gezet kunnen worden in een XPath. Hoewel dit wel de meeste gebruikelijk stappen zijn is het maar een klein deel van de mogelijke stappen. Er kunnen stappen gezet worden in alle mogelijk richtingen van de XML boom structuur: omlaag, omhoog, opzij. Deze richten worden assen genoemd. Voor de meer ongebruikelijke stappen is een andere, lange notatie vereist. De assen Er kunnen stappen gezet worden in vele richtingen. de volgende assen zijn we al tegen gekomen: child direct onderliggende elementen attribute attributen parent bovenliggende element self stap op de plaats Behalve deze basis-assen zijn er nog een paar assen waarmee grotere stappen genomen kunnen worden descendent alle onderliggende elementen ancestor alle bovenliggende elementen sibling alle elementen op hetzelfde niveau preceding-sibling alle elementen op hetzelfde niveau voor de context following-sibling alle elementen op hetzelfde niveau na de context Lange vs korte notatie Om de stappen op al deze assen te kunnen maken is er een lange, volledige notatie. Deze notatie bestaat uit de naam van de as, gevolgd door de naam van het te selecteren element of attribute. Tussen de naam van de as en de naam van het element of attribuut staan twee dubbele punten ( :: ).De notatie voor eenvoudige stappen is in feite een shortcut voor de lange notatie. In onderstaande tabel worden de lange en korte notatie vergeleken. Merk op dat er lang niet voor alle mogelijke paden een verkorte notatie is. Lang Kort Beschrijving child::artikel artikel elementen met de naam artikel child::* * alle elementen attribute::datum @datum attribuut met de naam datum attribute::* @* alle attributen parent::artikel bovenliggend element met de naam artikel parent::*.. het bovenliggende element, ongeacht de naam. self::artikel pas op de plaats, mits de plaats artikel is 9

self::*. pas op de plaats descendent::alinea //alinea elementen eronder met de naam alinea descendent::* //* elementen eronder sibling::alinea sibling::* preceding-sibling:: alinea preceding-sibling::* following-sibling:: alinea following-sibling::* elementen met de naam alinea op hetzelfde niveau elementen op hetzelfde niveau voorgaande elementen met de naam alinea op hetzelfde niveau voorgaande elementen op hetzelfde niveau volgende elementen met de naam alinea op hetzelfde niveau volgende elementen op hetzelfde niveau 10