Subject: RE: [xsl] Filtering XML with XSL From: "Sam Awad" <sammy_awad@xxxxxxxxx> Date: Wed, 5 Feb 2003 22:52:44 -0700 |
Thanks for your help Chuck, Here is the xsl file that contains the JavaScript: <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema"> <xsl:param name="column" select="'givenName'" /> <xsl:param name="userFirstName" select="''" /> <xsl:template match="*|@*"> <xsl:copy> <xsl:apply-templates select="@* | * | comment() | processing-instruction() | text()" /> </xsl:copy> </xsl:template> <xsl:template match="/"> <HTML> <head> <script language="javascript"> function sort(column){ try{ var s = new ActiveXObject("MSXML2.FreeThreadedDOMDocument"); var x = document.XMLDocument; if (x == null){ x = navigator.XMLDocument; s.loadXML(navigator.XSLDocument.xml); }else{ s.loadXML(document.XSLDocument.xml); } var tem = new ActiveXObject("MSXML2.XSLTemplate"); tem.stylesheet = s; var proc = tem.createProcessor(); proc.addParameter("column", column); proc.input = document.xmldocument; proc.transform(); var str = proc.output; var newDoc = document.open("text/html", "replace"); newDoc.write(str); navigator.XMLDocument = x; navigator.XSLDocument = s; newDoc.close(); }catch(exception){ } } function filter(userFirstName){ try{ var s = new ActiveXObject("MSXML2.FreeThreadedDOMDocument"); var x = document.XMLDocument; if (x == null){ x = navigator.XMLDocument; s.loadXML(navigator.XSLDocument.xml); }else{ s.loadXML(document.XSLDocument.xml); } var tem = new ActiveXObject("MSXML2.XSLTemplate"); tem.stylesheet = s; var proc = tem.createProcessor(); proc.addParameter("userFirstName", userFirstName); proc.input = x; proc.transform(); var str = proc.output; var newDoc = document.open("text/html"); newDoc.write(str); navigator.XMLDocument = x; navigator.XSLDocument = s; newDoc.close(); }catch(exception){ } } </script> <script language="vbscript"> function printIt() window.print end function </script> </head> <BODY> <xsl:choose> <xsl:when test="$userFirstName"> <xsl:apply-templates select="xml/rs:data/z:row[@givenName=$userFirstName]" mode="single" /> </xsl:when> <xsl:otherwise> <TABLE width="740"> <tr bgcolor="Black"> <td class="head" onclick="sort('sn')" width="40"><font face="Verdana" size="1" color="White"><b>Last</b></font></td> <td class="head" onclick="sort('givenName')" width="40"><font face="Verdana" size="1" color="White"><b>First</b></font></td> <td width="80"><font face="Verdana" size="1" color="White"><b>Title</b></font></td> <td class="head" onclick="sort('Office')" width="50"><font face="Verdana" size="1" color="White"><b>Office</b></font></td> <td width="100"><font face="Verdana" size="1" color="White"><b>Office Number</b></font></td> <td width="100"><font face="Verdana" size="1" color="White"><b>Mobile Number</b></font></td> <td width="100"><font face="Verdana" size="1" color="White"><b>Email</b></font></td> <td class="head" onclick="printIt()" width="20"><font face="Verdana" size="1" color="red"><b>PRINT</b></font></td> </tr> <xsl:if test="$column='sn'"> <xsl:for-each select="xml/rs:data/z:row"> <xsl:sort select="@sn" order="ascending" /> <xsl:call-template name="SortByChoice"> </xsl:call-template> </xsl:for-each> </xsl:if> <xsl:if test="$column='givenName'"> <xsl:for-each select="xml/rs:data/z:row"> <xsl:sort select="@givenName" order="ascending" /> <xsl:call-template name="SortByChoice"> </xsl:call-template> </xsl:for-each> </xsl:if> </TABLE> </xsl:otherwise> </xsl:choose> </BODY> </HTML> </xsl:template> <xsl:template name="SortByChoice"> <TR bgcolor="#FAEBD7"> <TD><font face="Verdana" size="1" color="black"><xsl:value-of select="@sn"/></font></TD> <TD><font face="Verdana" size="1" color="black"><xsl:attribute name="onclick">filter('<xsl:value-of select="@givenName" />');</xsl:attribute><u><xsl:value-of select="@givenName"/></u></font></TD> <TD><font face="Verdana" size="1" color="black"><xsl:value-of select="@title"/></font></TD> <TD><font face="Verdana" size="1" color="black"><xsl:value-of select="@physicalDeliveryOfficeName"/></font></TD> <TD><font face="Verdana" size="1" color="black"><xsl:value-of select="@telephonenumber"/></font></TD> <TD><font face="Verdana" size="1" color="black"><xsl:value-of select="@mobile"/></font></TD> <TD><font face="Verdana" size="1" color="black"><xsl:value-of select="@mail"/></font></TD> </TR> </xsl:template> <xsl:template match="xml/rs:data/z:row" mode="single"> <TABLE width="740"> <tr bgcolor="#ff8800"> <td align="center"><img><xsl:attribute name="src"><xsl:value-of select="@url"/></xsl:attribute></img></td> <td><font face="Verdana" size="1" color="black">Last Name:<xsl:value-of select="@sn" /><br />First Name:<xsl:value-of select="@givenName" /><br />Title:<xsl:value-of select="@title" /><br />Office Location:<xsl:value-of select="@physicalDeliveryOfficeName" /><br />Office Number:<xsl:value-of select="@telephonenumber" /><br />Mobile Number:<xsl:value-of select="@mobile" /><br />Email Address:<xsl:value-of select="@mail" /><br /></font></td> </tr> </TABLE> <div style="background-color:#FF8800;width:80%;"> <center> <a href="JavaScript:sort('sn')">Back</a> </center> </div> </xsl:template> </xsl:stylesheet> =================================================== Also, here is a short version of the generated xml file: ==================================================== <xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882' xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882' xmlns:rs='urn:schemas-microsoft-com:rowset' xmlns:z='#RowsetSchema'> <s:Schema id='RowsetSchema'> <s:ElementType name='row' content='eltOnly' rs:updatable='true'> <s:AttributeType name='title' rs:number='1' rs:nullable='true'> <s:datatype dt:type='string' dt:maxLength='256' rs:maybenull='false'/> </s:AttributeType> <s:AttributeType name='mail' rs:number='2' rs:nullable='true'> <s:datatype dt:type='string' dt:maxLength='256' rs:maybenull='false'/> </s:AttributeType> <s:AttributeType name='physicalDeliveryOfficeName' rs:number='3' rs:nullable='true'> <s:datatype dt:type='string' dt:maxLength='256' rs:maybenull='false'/> </s:AttributeType> <s:AttributeType name='mobile' rs:number='4' rs:nullable='true'> <s:datatype dt:type='string' dt:maxLength='256' rs:maybenull='false'/> </s:AttributeType> <s:AttributeType name='telephonenumber' rs:number='5' rs:nullable='true'> <s:datatype dt:type='string' dt:maxLength='256' rs:maybenull='false'/> </s:AttributeType> <s:AttributeType name='givenName' rs:number='6' rs:nullable='true'> <s:datatype dt:type='string' dt:maxLength='256' rs:maybenull='false'/> </s:AttributeType> <s:AttributeType name='sn' rs:number='7' rs:nullable='true'> <s:datatype dt:type='string' dt:maxLength='256' rs:maybenull='false'/> </s:AttributeType> <s:AttributeType name='name' rs:number='8' rs:nullable='true'> <s:datatype dt:type='string' dt:maxLength='256' rs:maybenull='false'/> </s:AttributeType> <s:extends type='rs:rowbase'/> </s:ElementType> </s:Schema> <rs:data> <z:row mail='someone@xxxxxxxxxxxxx' physicalDeliveryOfficeName='someplace' mobile='111-570-6533' telephonenumber='111-239-1053' givenName='Anthony' sn='Peters' name='Anthony Peters'/> <z:row title='Engineering Project Manager' mail='sometwo@xxxxxxxxxxxxx' physicalDeliveryOfficeName='other place' mobile='111-371-6810' telephonenumber='111-531-7249' givenName='John' sn='Allen' name='John Allen'/> </rs:data> </xml> """"""""""""""""""""""""""""""""""""""""""""""""""" -----Original Message----- From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of Charles White Sent: Wednesday, February 05, 2003 6:13 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: [xsl] Filtering XML with XSL Can you post the code that is failing? Generally (not always), when using the XMLDocument and XSLDocument properties client-side, you are using them to reload the XSLT so that you can do things like feed new parameter values and the like upon reload. Chuck White Author, Mastering XSLT, Sybex Books http://www.javertising.com/webtech http://www.tumeric.net ----- Original Message ----- From: "Sam Awad" <sammy_awad@xxxxxxxxx> To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> Sent: Wednesday, February 05, 2003 3:49 PM Subject: RE: [xsl] Filtering XML with XSL > Thanks Steve for your help. My xml is dynamically created and it seems to me > like you are doing a server side trip to retransform. > At this point, my problem is that the javascript does not work with the > properties XMLDocument and XSLDocument. They don't work with the DOM object > or the navigator object. I got alerts all over the script and the following > variables come up undefined: > - document.XMLDocument > - navigator.XMLDocument > > Not sure what the pre-requisites for Chris Bayes's javascript are. I am > running IE6 on a w2k sp2 ==> my msxml is version 3 running in "replace > mode". > > I really hope that someone on the list has any ideas as to what is happening > here. > > Thanks in advance to anyone for any help. > > > > -- XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Filtering XML with XSL, Charles White | Thread | Re: [xsl] Filtering XML with XSL, Charles White |
Re: [xsl] Generating IDs and sepera, Charles White | Date | RE: [xsl] generating id by calling , Roger Glover |
Month |