|
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
Het is mogelijk om aparte templates op te stellen voor elementen of attributen. Aan de hand van het <xsl:apply-templates> element kan men aangeven dat een bepaalde template wordt toegepast.
Als we beschikken over volgende bron XML : XML Instantie <?xml version="1.0" encoding="utf-8"?>
<members>
<athlete>
<id>101</id>
<name>John</name>
<member-since>2010-01-01</member-since>
</athlete>
<athlete>
<id>102</id>
<name>Jane</name>
<member-since>2009-10-31</member-since>
</athlete>
<trainer language="en fr">
<id>103</id>
<name>Rita</name>
</trainer>
<athlete>
<id>104</id>
<name>Paul</name>
<member-since>2008-10-15</member-since>
</athlete>
<trainer language="en">
<id>105</id>
<name>James</name>
</trainer>
<staff>
<id>106</id>
<name>Mia</name>
<member-since>2007-10-15</member-since>
</staff>
<president>
<name>Mike</name>
</president>
</members>En deze willen transformeren naar volgende output HTML : HTML <html>
<head>
<title>Members</title>
</head>
<body>
<h1>Members</h1>
<h2>President</h2>
<h3>Mike</h3>
<h2>Staff</h2>
<h3>Mia</h3>
<p>id : 106</p>
<p>member since : 2007-10-15</p>
<h2>Athletes</h2>
<h3>John</h3>
<p>id : 101</p>
<p>member since : 2010-01-01</p>
<h3>Jane</h3>
<p>id : 102</p>
<p>member since : 2009-10-31</p>
<h3>Paul</h3>
<p>id : 104</p>
<p>member since : 2008-10-15</p>
<h2>Trainers</h2>
<h3>Rita</h3>
<p>id : 103</p>
<p>language : en fr</p>
<h3>James</h3>
<p>id : 105</p>
<p>language : en</p>
</body>
</html>Dan kunnen we hiervoor volgende XSLT opstellen : Met het element <xsl:apply-templates select="athelete"/> bijvoorbeeld geven we aan dat we voor de <athlete> elementen van de <members> matches een template willen toepassen. Verderop staat de template voor de <athete> matches gedefinieerd.
Bemerk ook hoe we een <xsl:apply-templates> element kunnen opnemen zonder select attribuut. Hierbij zal zelf gezocht worden of voor de childelementen en attributen van de bijhorende match een template wordt gevonden.
Het grote voordeel van dergelijke constructie is dat we éénmalig een template kunnen definiëren voor bepaalde elementen of attributen die op verschillende plaatsen worden teruggevonden. De <name> en <id> childelementen bijvoorbeeld die zowel bij een <president>, <staff>, <athlete> of <trainer> element voorkomen, moeten bij deze transformatie immers steeds op dezelfde manier worden omgezet.
Het <xsl:call-template> element is bruikbaar om naar een andere te-gebruiken template te verwijzen. De waarde van het name attribuut van dit element moet corresponderen met de waarde van het name attribuut van de template waar naartoe wordt verwezen.
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
| hoofdstuk |
29. 30. 31.  |
| onderwerp |
30.7. 30.8. xsl:apply-templates Element 30.9.  |
| broncode |
|
| datum |
laatst gewijzigd op maandag 22 november 2010, laatst gepubliceerd op zondag 31 juli 2011 |
|