T
thomas
I'm building a guitar website which uses XML and XSLT.
http://www.madtim67.com/guitar/index.html You can search either by artist or
song. At the moment my XSL page only returns a result if the exact string is
entered i.e I have to enter 'baker street' or 'gerry rafferty' in order to
get a result. I would appriciate it if anyone could tell me how to modify
the code below so that if I enter 'baker' or 'gerry' I would get a result.
Heres my XSL page
<?xml version="1.0"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl
utput method="html"/>
<xsl
aram name="text1" />
<xsl:template match="/">
<html>
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css" />
<title>Results</title>
</head>
<body>
<table class="three" align="center">
<col width="35%" />
<col width="35%" />
<col width="15%" />
<col width="15%" />
<tr>
<th class="head">Artist</th>
<th class="head">Song</th>
<th class="head">Chord</th>
<th class="head">Midi</th>
</tr>
<xsl:for-each select="cat/links">
<xsl:if test="./artist = $text1">
<tr>
<td><xsl:apply-templates select="./artist" /></td>
<td><xsl:apply-templates select="./song" /></td>
<xsl:variable name="link1"><xsl:apply-templates select="./chord"
/></xsl:variable>
<td><a href="{$link1}" target="_blank">view</a></td>
<xsl:variable name="link2"><xsl:apply-templates select="./midi"
/></xsl:variable>
<td><a href="{$link2}" target="_blank">play</a></td>
</tr>
</xsl:if>
</xsl:for-each>
<xsl:for-each select="cat/links">
<xsl:if test="./song = $text1">
<tr>
<td><xsl:apply-templates select="./artist" /></td>
<td><xsl:apply-templates select="./song" /></td>
<xsl:variable name="link1"><xsl:apply-templates select="./chord"
/></xsl:variable>
<td><a href="{$link1}" target="_blank">view</a></td>
<xsl:variable name="link2"><xsl:apply-templates select="./midi"
/></xsl:variable>
<td><a href="{$link2}" target="_blank">play</a></td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
<div align="center">
<a href="javascript:history.go(-1)">Click here to return to search page</a>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Heres my XML file
<cat>
<links>
<artist>gerry rafferty</artist>
<song>baker street</song>
<chord>media/gerry_rafferty_-_baker_street.txt</chord>
<midi>media/gerry_rafferty_-_baker_street.mid</midi>
</links>
<links>
<artist>men at work</artist>
<song>down under</song>
<chord>media/men_at_work_-_down_under.txt</chord>
<midi>media/men_at_work_-_down_under.mid</midi>
</links>
<links>
<artist>squeeze</artist>
<song>up the junction</song>
<chord>media/squeeze_-_up_the_junction.txt</chord>
<midi>media/squeeze_-_up_the_junction.mid</midi>
</links>
<links>
<artist>steve harley</artist>
<song>make me smile</song>
<chord>media/steve_harley_-_make_me_smile.txt</chord>
<midi>media/steve_harley_-_make_me_smile.mid</midi>
</links>
</cat>
http://www.madtim67.com/guitar/index.html You can search either by artist or
song. At the moment my XSL page only returns a result if the exact string is
entered i.e I have to enter 'baker street' or 'gerry rafferty' in order to
get a result. I would appriciate it if anyone could tell me how to modify
the code below so that if I enter 'baker' or 'gerry' I would get a result.
Heres my XSL page
<?xml version="1.0"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl
<xsl
<xsl:template match="/">
<html>
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css" />
<title>Results</title>
</head>
<body>
<table class="three" align="center">
<col width="35%" />
<col width="35%" />
<col width="15%" />
<col width="15%" />
<tr>
<th class="head">Artist</th>
<th class="head">Song</th>
<th class="head">Chord</th>
<th class="head">Midi</th>
</tr>
<xsl:for-each select="cat/links">
<xsl:if test="./artist = $text1">
<tr>
<td><xsl:apply-templates select="./artist" /></td>
<td><xsl:apply-templates select="./song" /></td>
<xsl:variable name="link1"><xsl:apply-templates select="./chord"
/></xsl:variable>
<td><a href="{$link1}" target="_blank">view</a></td>
<xsl:variable name="link2"><xsl:apply-templates select="./midi"
/></xsl:variable>
<td><a href="{$link2}" target="_blank">play</a></td>
</tr>
</xsl:if>
</xsl:for-each>
<xsl:for-each select="cat/links">
<xsl:if test="./song = $text1">
<tr>
<td><xsl:apply-templates select="./artist" /></td>
<td><xsl:apply-templates select="./song" /></td>
<xsl:variable name="link1"><xsl:apply-templates select="./chord"
/></xsl:variable>
<td><a href="{$link1}" target="_blank">view</a></td>
<xsl:variable name="link2"><xsl:apply-templates select="./midi"
/></xsl:variable>
<td><a href="{$link2}" target="_blank">play</a></td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
<div align="center">
<a href="javascript:history.go(-1)">Click here to return to search page</a>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Heres my XML file
<cat>
<links>
<artist>gerry rafferty</artist>
<song>baker street</song>
<chord>media/gerry_rafferty_-_baker_street.txt</chord>
<midi>media/gerry_rafferty_-_baker_street.mid</midi>
</links>
<links>
<artist>men at work</artist>
<song>down under</song>
<chord>media/men_at_work_-_down_under.txt</chord>
<midi>media/men_at_work_-_down_under.mid</midi>
</links>
<links>
<artist>squeeze</artist>
<song>up the junction</song>
<chord>media/squeeze_-_up_the_junction.txt</chord>
<midi>media/squeeze_-_up_the_junction.mid</midi>
</links>
<links>
<artist>steve harley</artist>
<song>make me smile</song>
<chord>media/steve_harley_-_make_me_smile.txt</chord>
<midi>media/steve_harley_-_make_me_smile.mid</midi>
</links>
</cat>