Probleem bij XSL en XML!!

Status
Niet open voor verdere reacties.

kartingfreak

Gebruiker
Lid geworden
20 mrt 2006
Berichten
45
Hallo,

Ik ben iets aan het uit proberen dat ik misschien later zal gebruiken in een applicatie of een website dat ik ga schrijven! Ik ben vrij nieuw in XML en wou dit is uitproberen!

Ik heb in een XML file een lijst met bvb Auto's (hier is het xml bestand):
Code:
<?xml version="1.0" encoding="UTF-8"?>

<!-- New document created with EditiX at Thu Aug 26 22:20:27 CEST 2010 -->

<cars>
	<auto>
		<merk>Ferrari</merk>
		<link>/Users/kevin/Pictures/Cars/Ferrari_F430.jpg</link>
	</auto>
	<auto>
		<merk>Porsche</merk>
		<link>/Users/kevin/Pictures/Cars/porsche5.jpg</link>
	</auto>
	<auto>
		<merk>Lamborghini</merk>
		<link>/Users/kevin/Pictures/Cars/Lamborghini1.jpg</link>
	</auto>
	<auto>
		<merk>Audi</merk>
		<link>/Users/kevin/Pictures/Cars/audiR8_1.jpg</link>
	</auto>
	<auto>
		<merk>Lexus</merk>
		<link>/Users/kevin/Pictures/Cars/lexus-lfa.jpg</link>
	</auto>
	<auto>
		<merk>Bugatti</merk>
		<link>/Users/kevin/Pictures/Cars/bugatti-veyron-fbg-par-hermes-01.jpg</link>
	</auto>
</cars>

Nu wil ik via een xsl bestand alleen bvb de auto met merk 'Ferrari' eruit halen en deze in een tabel plaatsen met daarnaast de foto of link van de foto!

Code:
<?xml version="1.0" encoding="UTF-8"?>

<!-- New document created with EditiX at Thu Aug 26 22:32:22 CEST 2010 -->

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

	<xsl:output method="html"/>
	
	<xsl:template match="/">
	<html>
		<body>
			<table border="1" width="50%">
				<tr>
					<th>Merk</th>
					<th>Foto</th>
				</tr>
				
				<xsl:for-each select="cars/auto/merk='Ferrari'">
					<!--<xsl:value-of select="merk='Ferrari'"/>-->
					<tr>
						<td>Ferrari</td>
						<td><xsl:value-of select="link"/></td>
					</tr>
				</xsl:for-each>	
			</table>
		</body>
	</html>
	</xsl:template>
</xsl:stylesheet>

maar ik krijg een foutmelding bij dit:

Code:
<xsl:for-each select="cars/auto/merk='Ferrari'">

De foutmelding gaat als volgt: "The value is not a node set"

Dit is vrij lastig aangezien als ik alles weg laat na auto dus /merk='Ferrari' dan geeft hij mij alle links van alle merken in het xml bestand :S

Hoe kan ik dit het beste oplossen??

Mvg
Kevin
 
Volgens mij is hetgeen wat jij probeert niet mogelijk. Ik denk dat je het of met een if moet doen, of template moet gebruiken.
 
Inderdaad! Een if'je heeft mijn probleem opgelost ;) Dank u!

Oplossing:
Code:
<?xml version="1.0" encoding="UTF-8"?>

<!-- New document created with EditiX at Thu Aug 26 22:32:22 CEST 2010 -->

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

	<xsl:output method="html"/>
	
	<xsl:template match="/">
	<html>
		<body>
			<table border="1" width="50%">
				<tr>
					<th>Merk</th>
					<th>Foto</th>
				</tr>
				
				<xsl:for-each select="cars/auto">
					<xsl:if test="merk='Ferrari'">
						<tr>
							<td>Ferrari</td>
							<td><xsl:value-of select="link"/></td>
						</tr>
					</xsl:if>
				</xsl:for-each>	
			</table>
		</body>
	</html>
	</xsl:template>
</xsl:stylesheet>
 
Als je deze code gebruikt zou het volgens mij zonder de if moeten werken.

HTML:
<xsl:for-each select="cars/auto[merk='Ferrari']">

Gr Snarffy
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan