For my course, I was asked to create an html page in which it is possible to allow the user to enter a contact name, which onsubmit loads the previously created xml file, contacts the contacts until it matches the first name entered by the user, and displays the contact information other than an email address on the same page, in a table with headers and the display <h1> . Contact Information:. If there is no match, there must be <h2> which says that the contact does not exist.
Below is my xml file:
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/xsl" href="Contact.xsl" ?> <!DOCTYPE contact SYSTEM "contact.dtd"> <contact> <person> <name> <firstname>Bob</firstname> <lastname>Jones</lastname> </name> <phone>(02)44 42 45 63</phone> <address> <street>34 Highway Road</street> <city>Grovedale</city> <state>NSW</state> <postcode>3228</postcode> <email> bob.jones@email.com </email> </address> </person> <person> <name> <firstname>Gary</firstname> <lastname>Williams</lastname> </name> <phone>(02)44 41 87 56</phone> <address> <street>223 Yarra Avenue</street> <city>Branston</city> <state>NSW</state> <postcode>2317</postcode> <email> gary.williams@email.com </email> </address> </person>
I tried several things, but I have no idea how I will get the data to display in the table. Below is my XSL file, which I believe wants the table to appear, but with search results.
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <style> body { font-family: Arial, Helvetica, sans-serif; font-size: 14px; } div { margin-left: 150px; margin-right: 20px; margin-top: 50px; width: 80%; } h1 { font-size: 24px; color: #F00; } .headings { background-color: #06F; } .data { background-color: #6F9; } .table { border: 2px solid #F00; width: 100%; } </style> </head> <body> <div> <h1>CONTACTS</h1> <table class="table"> <tr class="headings"> <th>First Name</th> <th>Last Name</th> <th>Street</th> <th>City</th> <th>State</th> <th>Postcode</th> <th>Email</th> </tr> <xsl:for-each select="contact/person"> <tr class="data"> <td><xsl:value-of select="name/firstname"/></td> <td><xsl:value-of select="name/lastname"/></td> <td><xsl:value-of select="address/street"/></td> <td><xsl:value-of select="address/city"/></td> <td><xsl:value-of select="address/state"/></td> <td><xsl:value-of select="address/postcode"/></td> <td><xsl:value-of select="address/email"/></td> </tr> </xsl:for-each> </table> </div> </body> </html> </xsl:template> </xsl:stylesheet>
I need to use JavaScript to search for an XML file and create a table displaying the search results.
I have HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Task 2</title> <script language="JavaScript" type="text/javascript"> window.onload = loadIndex; function loadIndex() { if (document.implementation && document.implementation.createDocument) { xmlDoc = document.implementation.createDocument("", "", null); xmlDoc.load("Contact.xml"); } else if (window.ActiveXObject) { xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = "false"; xmlDoc.load("Contact.xml"); } } function searchIndex() { if (!xmlDoc) { loadIndex(); } var searchterm = document.getElementById("searchme").value; var allitems = xmlDoc.getElementsByTagName("firstname"); results = new Array; for (var i=0;i<allitems.length;i++) { var name = allitems[i].lastChild.nodeValue; var exp = new RegExp(searchterm,"i"); if ( name.match(exp) != null) { results.push(allitems[i]); } } showResults(results, searchterm); } function showResults(results, searchterm) { </script> </head> <body> First Name: <input type="text" name="firstname" id="searchme"> <br /> <input type="submit" value="Search" onClick="searchIndex(); return false;"> </body> </html>
As you can see, I have no idea where to start. I know that I would upload an XML file, and then assemble the first name tag, and then somehow compare the two, and then display the results.
I saw the following, and it looks like what I need, but I canβt get the results to display in the table. http://www.dzone.com/snippets/simple-javascriptxml-based
Thanks for the help.