XPath problem
Jeg har et problem med at få XPath til at udvælge nogle bestemte noder.I følgende eksemple ønsker jeg at vise noden List men kun for children til noden PEUGEOT. Desværre får jeg for meget med idet alle efterfølgende noder vises.
Ved brug af xsl:template match=\"PEUGEOT\"> havde jeg egenligt forventet kun at udvælge children til denne match også selvom jeg længere nede anvender <xsl:value-of select=\".\"/>
Yderligere point kan måske komme på tale til den af jer, der samtidig kan give et hint til, hvordan opgaven løses ved brug af Whitehill <Xsl> Composer. (se http://www.whitehill.com/Products/xslcomposer/)
XSL:
<?xml version=\"1.0\"?>
<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">
<xsl:template match=\"/\">
<html>
<xsl:apply-templates/>
</html>
</xsl:template>
<xsl:template match=\"PEUGEOT\">
<p>
<b>
<xsl:value-of select=\"Name\"/>
</b>
</p>
<xsl:for-each select=\"List\">
<p>
<xsl:value-of select=\".\"/>
</p>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
XML:
<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>
<template>
<References>
<PEUGEOT>
<Name>Peugeot 406</Name>
<List>406 Sedan</List>
<List>406 St. car</List>
<List>406 Coupé</List>
</PEUGEOT>
<PEUGEOT>
<Name>Peugeot 306</Name>
<List>Peugeot 306 Sedan</List>
<List>Peugeot 306 St. car</List>
</PEUGEOT>
<BMW>
<Name>BMW 3-Serie</Name>
<List>Cabriolet</List>
<List>Compact</List>
<List>Coupé</List>
<List>Sedan</List>
</BMW>
</References>
</template>
HTML output genereret gennem Saxon:
Peugeot 406
406 Sedan
406 St. car
406 Coupé
Peugeot 306
Peugeot 306 Sedan
Peugeot 306 St. car
BMW 3-Serie Cabriolet Compact Coupé Sedan !!!
Sidste linie vil jeg meget gerne være foruden!
Med venlig hilsen
Henrik Malmvig