I am attempting to apply a filter to a multi-tier XML data island. I'm about 80 percent there, but still have not got it to function correctly. It was fully functional prior to my adding an additional level (Categories XML tag) to my XML island. This is my HTML file below. Any ideas on what I might be missing?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><HEAD>
<title>Links</title>
<!--
AUTHOR: David Silverlight
Editor: This version edited by Jayme
Email:
[email protected]
Shameless Plug: Yes I am a consultant who is always looking for cool projects.
Phone: (877) XML-GURU
Description: This code snippet demonstrates how to add Filtering to a DataBound HTML table.
Yes, it will not work in anything except an IE Browser and No, it does not do any updates to a database. That functionality
is outside of the scope of this snippet.
-- Enjoy.
-->
<STYLE>
INPUT
{
FONT-SIZE: 9pt;
HEIGHT:20px;
COLOR: #330066;
FONT-FAMILY: Arial, Helvetica, sans-serif;
BACKGROUND-COLOR: #F0F0F0;
border : thin outset #F5F5DC;
border-bottom-color : #F5FFFA;
}
FORM
{
FONT-SIZE: 10pt;
COLOR: #330066;
FONT-FAMILY: Arial, Helvetica, sans-serif
}
TD
{
FONT-SIZE: 9pt;
FONT-FAMILY: Arial, Helvetica, sans-serif;
}
BODY
{
SCROLLBAR-FACE-COLOR: #F0F0F0;
SCROLLBAR-HIGHLIGHT-COLOR: #CCCCCC;
SCROLLBAR-SHADOW-COLOR: #CCCCCC;
SCROLLBAR-3DLIGHT-COLOR: #F0F0F0;
SCROLLBAR-ARROW-COLOR: #330066;
SCROLLBAR-DARKSHADOW-COLOR: #CCCCCC;
SCROLLBAR-BASE-COLOR: #CCCCCC;
}
TR
{
CURSOR: hand;
TEXT-ALIGN: left;
PADDING-LEFT : 4px;
}
.DataTable
{
BORDER-RIGHT: 0px solid;
BORDER-TOP: thin solid;
FONT-WEIGHT: normal;
FONT-SIZE: 8pt;
BORDER-LEFT: 0px solid;
BORDER-BOTTOM: 1px solid;
FONT-FAMILY: Arial, Helvetica, sans-serif;
HEIGHT: 1px
}
.MainHeader
{
FONT-SIZE: 14pt;
COLOR: Darklue;
FONT-FAMILY: Arial, Helvetica, sans-serif
}
.DataCol
{
FONT-SIZE: 8pt;
FONT-FAMILY: Arial, Helvetica, sans-serif;
}
</STYLE>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"></HEAD>
<body bgcolor="#00FFFF">
<form method="post" action="" name="frmData">
<div id="divHeader" style="Z-INDEX: 34; LEFT: 33px; WIDTH: 703px; POSITION: absolute; TOP: 150px; HEIGHT: 149px">
<div name="CustomerList" style="LEFT: 1px; OVERFLOW: scroll; WIDTH: 100%; TOP: 14px; HEIGHT: 350px">
<table id="tblHeader" Datasrc="#xmlDSO" Class="DataTable" width="100%" cellpadding="0" cellspacing="0" border="1" style="LEFT: -1px; TOP: 0px">
<thead>
<tr>
<th id="thdr" width="10">#</th>
<th id="thdr" width="80">Site</th>
<th id="thdr" width="250">Description</th>
<th id="thdr" width="67" >Categories</th>
<th id="thdr" width="90">Rating</th>
</tr>
</thead>
<tbody>
<tr onclick="CurrentRecord()">
<td width="10" align="left" height="15"><span datafld="ID" class="xDataCol"></span></td>
<td width="80" align="left" height="15"><a href datafld="SiteURL" target="_blank"><span datafld="SiteName" class="xDataCol"></span></a></td>
<td width="250" align="left" height="15"><span datafld="SiteDescription" class="xDataCol"></span></td>
<td width="67" align="left" height="15">
<table Datasrc="#xmlDSO" datafld="Categories" cellpadding="0" cellspacing="0" border="0">
<tr><td><span datafld="#text"></span></td></tr>
</table>
</td>
<td width="90" align="left" height="15"><span datafld="SiteRating" class="xDataCol"></span></td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="main" style="LEFT: 0px; WIDTH: 759px; POSITION: absolute; TOP: 100px; HEIGHT: 29px" tabIndex="11">
<div id="divSearch" style="LEFT: 32px; WIDTH: 710px; POSITION: absolute; TOP: -100px; HEIGHT: 27px">
<table ID="tblSearchFields" border=1 bgcolor="menu" width="100%">
<tr>
<td colspan="2" >Select your site using the criteria below:</td>
<td colspan="2" ><Input type=button value="Show all"id=btnShowAll name=btnShowAll onclick="doShowAll()"></td>
</tr>
<tr>
<td>
Category:
<SELECT ID="selCategory" NAME="selCategory" onchange="doFilter()">
<OPTION selected value="Political">Political</OPTION>
<OPTION value="Military">Military</OPTION>
<OPTION value="Social">Social</OPTION>
<OPTION value="Economic">Economic</OPTION>
<OPTION value="Information">Information</OPTION>
<OPTION value="Infrastructure">Infrastructure</OPTION>
</SELECT>
</td>
<td>
Rating:
<SELECT ID="selSiteRating" NAME="selSiteRating" onchange="doFilter()">
<OPTION selected value="5">5</OPTION>
<OPTION value="4">4</OPTION>
<OPTION value="3">3</OPTION>
<OPTION value="2">2</OPTION>
<OPTION value="1">1</OPTION>
</SELECT>
</td>
</tr>
</table>
</div>
</div>
</form>
<xml id="xslFilter">
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:output method="xml"/>
<xsl:param name="Category" select="'Political'"/>
<xsl:param name="SiteRating" select="'5'"/>
<xsl:template match="/">
<CATALOG>
<xsl:for-each select="CATALOG/SITE[/Categories/Category=$Category and @SiteRating=$SiteRating]" >
<xsl:sort select="@ID" order="ascending" />
<data>
<xsl:for-each select="@*" >
<xsl:attribute name='{name()}'> <xsl:value-of select="."/></xsl:attribute>
</xsl:for-each>
</data>
</xsl:for-each>
</CATALOG>
</xsl:template>
<xsl:template match="data">
<data>
<xsl:apply-templates/>
</data>
</xsl:template>
</xsl:stylesheet>
</xml>
<xml id="xmlDSO">
<CATALOG>
<SITE ID="01" SiteName="Jowairiyya" SiteDescription="I am winking at you" SiteRating="5" SiteURL="http://library.nps.navy.mil/home/tgp/tgpndx.htm#2001">
<Categories>
<Category>Social</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="02" SiteName="Gulmakai" SiteDescription="Where are you good looking?" SiteRating="1" SiteURL="images/TalibanGirl2.jpg">
<Categories>
<Category>Military</Category>
<Category>Infrastructure</Category>
<Category></Category>
</Categories>
</SITE>
<SITE ID="03" SiteName="Frozen" SiteDescription="Looking for a little sunshine." SiteRating="5" SiteURL="images/TalibanGirl3.jpg">
<Categories>
<Category>Economic</Category>
<Category></Category>
<Category></Category>
</Categories>
</SITE>
<SITE ID="04" SiteName="Masooda" SiteDescription="I can't see anyone here" SiteRating="5" SiteURL="images/TalibanGirl4.jpg">
<Categories>
<Category>Social</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="05" SiteName="Parween" SiteDescription="Bring some light to my life" SiteRating="5" SiteURL="images/TalibanGirl5.jpg">
<Categories>
<Category>Social</Category>
<Category>Economic</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="06" SiteName="Shreengul" SiteDescription="I Declare a Jihad On U, Baby" SiteRating="5" SiteURL="images/TalibanGirl6.jpg">
<Categories>
<Category>Social</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="07" SiteName="Frogh" SiteDescription="NO MORE BEATINGS PLEASE" SiteRating="3" SiteURL="images/TalibanGirl7.jpg">
<Categories Category1="Political" Category2="Military" Category3="Social" Category4="Economic"/>
</SITE>
<SITE ID="08" SiteName="Mahboba" SiteDescription="Make me 1 of your wives" SiteRating="5" SiteURL="images/TalibanGirl8.jpg">
<Categories>
<Category>Information</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="09" SiteName="Shawjan" SiteDescription="R U A Terrorist with a heart?" SiteRating="1" SiteURL="images/TalibanGirl9.jpg">
<Categories>
<Category>Social</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="10" SiteName="Paktoon" SiteDescription="Not like all the other women" SiteRating="5" SiteURL="images/TalibanGirl10.jpg">
<Categories>
<Category>Social</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="11" SiteName="Hillary Clinton" SiteDescription="Looking for someone faithful" SiteRating="4" SiteURL="images/Hillary1.jpg">
<Categories>
<Category>Social</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="12" SiteName="Janet Reno" SiteDescription="Looking for that tall Man/Women of my dreams" SiteRating="1" SiteURL="images/JanetReno3.jpg">
<Categories>
<Category>Social</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="13" SiteName="Joe" SiteDescription="I'm smokin!" SiteRating="3" SiteURL="images/JoeCamel1.jpg">
<Categories>
<Category>Social</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="14" SiteName="Camel" SiteDescription="Will work for food" SiteRating="2" SiteURL="images/Camel2.jpg">
<Categories>
<Category>Social</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="15" SiteName="Camel" SiteDescription="Ever done it with a talking camel?" SiteRating="2" SiteURL="images/Camel3.jpg">
<Categories>
<Category>Social</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="16" SiteName="Peppi" SiteDescription="Join me for a pepsi" SiteRating="2" SiteURL="images/Camel1.jpg">
<Categories>
<Category>Military</Category>
<Category></Category>
<Category></Category>
</Categories>
</SITE>
<SITE ID="17" SiteName="Buck" SiteDescription="A face only a camel could love" SiteRating="2" SiteURL="images/Camel4.jpg">
<Categories>
<Category>Economic</Category>
<Category>Military</Category>
<Category></Category>
</Categories>
</SITE>
</CATALOG>
</xml>
<!-- Note: the reason for the xmlDSOorig data island is that the xmlDSO data island becomes repopulated after
a filtering is performed. If you try to filter a second time, you will need to start from the original contents. -->
<xml id="xmlDSOorig">
<CATALOG>
<SITE ID="01" SiteName="Jowairiyya" SiteDescription="I am winking at you" SiteRating="5" SiteURL="http://library.nps.navy.mil/home/tgp/tgpndx.htm#2001">
<Categories>
<Category>Social</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="02" SiteName="Gulmakai" SiteDescription="Where are you good looking?" SiteRating="1" SiteURL="images/TalibanGirl2.jpg">
<Categories>
<Category>Military</Category>
<Category>Infrastructure</Category>
<Category></Category>
</Categories>
</SITE>
<SITE ID="03" SiteName="Frozen" SiteDescription="Looking for a little sunshine." SiteRating="5" SiteURL="images/TalibanGirl3.jpg">
<Categories>
<Category>Economic</Category>
<Category></Category>
<Category></Category>
</Categories>
</SITE>
<SITE ID="04" SiteName="Masooda" SiteDescription="I can't see anyone here" SiteRating="5" SiteURL="images/TalibanGirl4.jpg">
<Categories>
<Category>Social</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="05" SiteName="Parween" SiteDescription="Bring some light to my life" SiteRating="5" SiteURL="images/TalibanGirl5.jpg">
<Categories>
<Category>Social</Category>
<Category>Economic</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="06" SiteName="Shreengul" SiteDescription="I Declare a Jihad On U, Baby" SiteRating="5" SiteURL="images/TalibanGirl6.jpg">
<Categories>
<Category>Social</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="07" SiteName="Frogh" SiteDescription="NO MORE BEATINGS PLEASE" SiteRating="3" SiteURL="images/TalibanGirl7.jpg">
<Categories Category1="Political" Category2="Military" Category3="Social" Category4="Economic"/>
</SITE>
<SITE ID="08" SiteName="Mahboba" SiteDescription="Make me 1 of your wives" SiteRating="5" SiteURL="images/TalibanGirl8.jpg">
<Categories>
<Category>Information</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="09" SiteName="Shawjan" SiteDescription="R U A Terrorist with a heart?" SiteRating="1" SiteURL="images/TalibanGirl9.jpg">
<Categories>
<Category>Social</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="10" SiteName="Paktoon" SiteDescription="Not like all the other women" SiteRating="5" SiteURL="images/TalibanGirl10.jpg">
<Categories>
<Category>Social</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="11" SiteName="Hillary Clinton" SiteDescription="Looking for someone faithful" SiteRating="4" SiteURL="images/Hillary1.jpg">
<Categories>
<Category>Social</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="12" SiteName="Janet Reno" SiteDescription="Looking for that tall Man/Women of my dreams" SiteRating="1" SiteURL="images/JanetReno3.jpg">
<Categories>
<Category>Social</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="13" SiteName="Joe" SiteDescription="I'm smokin!" SiteRating="3" SiteURL="images/JoeCamel1.jpg">
<Categories>
<Category>Social</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="14" SiteName="Camel" SiteDescription="Will work for food" SiteRating="2" SiteURL="images/Camel2.jpg">
<Categories>
<Category>Social</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="15" SiteName="Camel" SiteDescription="Ever done it with a talking camel?" SiteRating="2" SiteURL="images/Camel3.jpg">
<Categories>
<Category>Social</Category>
<Category>Military</Category>
<Category>Political</Category>
</Categories>
</SITE>
<SITE ID="16" SiteName="Peppi" SiteDescription="Join me for a pepsi" SiteRating="2" SiteURL="images/Camel1.jpg">
<Categories>
<Category>Military</Category>
<Category></Category>
<Category></Category>
</Categories>
</SITE>
<SITE ID="17" SiteName="Buck" SiteDescription="A face only a camel could love" SiteRating="2" SiteURL="images/Camel4.jpg">
<Categories>
<Category>Economic</Category>
<Category>Military</Category>
<Category></Category>
</Categories>
</SITE>
</CATALOG>
</xml>
<script language="JavaScript">
function doShowAll() {
try {
xmlDSO.loadXML(xmlDSOorig.xml);
}
catch (error) {
alert("doShowAll() in Default.htm caused the following error: " + error.SiteDescription)
}
}
function doFilter() {
try {
var strRating = document.all.selSiteRating.value;
var strCategory = document.all.selCategory.value;
vbFilterTable(strCategory, strRating);
}
catch (error) {
alert("doFilter() in Default.htm caused the following error: " + error.SiteDescription)
}
}
function CurrentRecord(){
try {
var iNum = window.event.srcElement.recordNumber;
xmlDSO.recordset.AbsolutePosition = iNum;
}
catch (error) {
alert("CurrentRecord() in Default.htm caused the following error: " + error.SiteDescription)
}
}
</script>
<script language="vbscript">
function vbFilterTable(strCategory, strRating)
dim objXSL, objXML, objTemplate, objProcessor, strHTML
Set objXML = CreateObject("Msxml2.FreeThreadedDOMDocument")
Set objXSL = CreateObject("Msxml2.FreeThreadedDOMDocument")
'Load the XML document
objXML.async = False
objXML.Loadxml xmlDSOorig.xml
'Load the XSL document
objXSL.async = False
objXSL.Loadxml xslFilter.xml
'Create an instance of our XSL Template object
'Set objTemplate = CreateObject("MSXML2.XSLTemplate.3.0")
Set objTemplate = CreateObject("MSXML2.XSLTemplate")
'Create an instance of our stylesheet object using our recently loaded XSLT document
Set objTemplate.stylesheet = objXSL
'Create an instance of our Processor object
Set objProcessor = objTemplate.createProcessor
'Define the input object for our object equal to our recently loaded XML document
objProcessor.input = objXML
'Now, finally we can add any parameters that we require to our Template processor
objProcessor.AddParameter "Category", strCategory
objProcessor.AddParameter "SiteRating", strRating
'Last but not least we do our transformation
objProcessor.Transform
'Store the results of the output into a string.
strXML = objProcessor.output
'Load up an XML DOM object from the recent XML output
objXML.loadxml strXML
'Select only the "SITE" elements from our document object
objXML.selectNodes("//CATALOG")
'Load our Data Island using our new XML object
xmlDSO.loadxml objXML.xml
end function
</script>
</body>
</html>