<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Letras de Cristian &#187; Código</title>
	<atom:link href="http://www.cristiantacchi.com/blog/category/codigo/&#038;lang=es_es/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cristiantacchi.com/blog</link>
	<description>Uso de la tecnologia para surgir y ser mas productivo</description>
	<lastBuildDate>Thu, 27 Aug 2009 05:59:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Busqueda simple basada en Javascript/XML</title>
		<link>http://www.cristiantacchi.com/blog/2009/08/busqueda-simple/</link>
		<comments>http://www.cristiantacchi.com/blog/2009/08/busqueda-simple/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 05:26:27 +0000</pubDate>
		<dc:creator>cristiantacchi</dc:creator>
				<category><![CDATA[Código]]></category>

		<guid isPermaLink="false">http://www.cristiantacchi.com/blog/?p=68</guid>
		<description><![CDATA[Este código usa javascript para buscar en un indice basado en XML y provée la posibilidad de realizar búsquedas en un website sin necesidad de ejecutar código en el servidor (como es el caso de PHP+MySql)
Este código está basado en el trabajo de Wieland y mapmaker que publicaron sus códigos en Dzone Snippets y soluciona [...]]]></description>
			<content:encoded><![CDATA[<p>Este código usa javascript para buscar en un indice basado en XML y provée la posibilidad de realizar búsquedas en un website sin necesidad de ejecutar código en el servidor (como es el caso de PHP+MySql)</p>
<p>Este código está basado en el trabajo de <a href="http://snippets.dzone.com/user/Wieland">Wieland</a> y <a href="http://snippets.dzone.com/user/mapmaker">mapmaker</a> que publicaron sus códigos en <a href="http://snippets.dzone.com/posts/show/2719">Dzone Snippets</a> y soluciona un error en la búsqueda.</p>
<p>Error encontrado: Al realizar la búsqueda de un término (palabra o número), el código busca términos <strong>parecidos</strong> y <strong>no uno exactamente igual</strong> en el índice del archivo XML, el resultado de esto es que el código puede devolver información erronea (ej: buscar &#8220;1524&#8243; puede entregar como resultado los contenidos de los ítems &#8220;1524, 11524, 21524, etc&#8221;)</p>
<p>El siguiente código contiene contiene las actualizaciones necesarias para una búsqueda exacta (las líneas de código quitadas han sido resaltadas en <strong><span style="color: #ff0000;">rojo</span></strong> y la línea de código agregada ha sido resaltada en <strong><span style="color: #99cc00;">verde</span></strong>)</p>
<p>El archivo XML</p>
<blockquote><p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;searchable_index&gt;<br />
&lt;item meta1=&#8221;22&#8243; meta2=&#8221;87&#8243;&gt;0000&lt;/item&gt;<br />
&lt;item meta1=&#8221;25&#8243; meta2=&#8221;29&#8243;&gt;0001&lt;/item&gt;<br />
&lt;item meta1=&#8221;27&#8243; meta2=&#8221;54&#8243;&gt;0002&lt;/item&gt;<br />
&lt;item meta1=&#8221;23&#8243; meta2=&#8221;43&#8243;&gt;0003&lt;/item&gt;<br />
&lt;/searchable_index&gt;</p></blockquote>
<p>El código javascript</p>
<blockquote><p>&lt;script type=&#8221;text/javascript&#8221;&gt;</p>
<p>window.onload = loadIndex;</p>
<p>function loadIndex() { // load indexfile</p>
<p>// most current browsers support document.implementation</p>
<p>if (document.implementation &amp;&amp; document.implementation.createDocument) {</p>
<p>xmlDoc = document.implementation.createDocument(&#8221;", &#8220;&#8221;, null);<br />
xmlDoc.load(&#8221;index.xml&#8221;);<br />
}<br />
// MSIE uses ActiveX<br />
else if (window.ActiveXObject) {<br />
xmlDoc = new ActiveXObject(&#8221;Microsoft.XMLDOM&#8221;);<br />
xmlDoc.async = &#8220;false&#8221;;<br />
xmlDoc.load(&#8221;index.xml&#8221;);<br />
}<br />
}</p>
<p>function searchIndex() {</p>
<p>// search the index (duh!)<br />
if (!xmlDoc) {<br />
loadIndex();<br />
}<br />
// get the search term from a form field with id &#8217;searchme&#8217;</p>
<p>var searchterm = document.getElementById(&#8221;searchme&#8221;).value;<br />
var allitems = xmlDoc.getElementsByTagName(&#8221;item&#8221;);<br />
results = new Array;<br />
if (searchterm.length &lt; 2) {<br />
alert(&#8221;Ingrese al menos dos caracteres&#8221;);<br />
} else {<br />
for (var i=0;i&lt;allitems.length;i++) {<br />
// see if the XML entry matches the search term,<br />
// and (if so) store it in an array<br />
var name = allitems[i].lastChild.nodeValue;<br />
<strong><span style="color: #ff0000;">//    var exp = new RegExp(searchterm,&#8221;i&#8221;); </span></strong><br />
<strong><span style="color: #99cc00;">if ( name == searchterm ) {</span></strong><br />
<strong><span style="color: #ff0000;">//    if ( name.match(exp) != null) {</span></strong><br />
results.push(allitems[i]);</p>
<p>}<br />
}<br />
// send the results to another function that displays them to the user<br />
showResults(results, searchterm);<br />
}<br />
}</p>
<p>// Write search results to a table<br />
function showResults(results, searchterm) {</p>
<p>if (results.length &gt; 0) {</p>
<p>// if there are any results, write them to a table</p>
<p>for (var i=0;i&lt;results.length;i++) {<br />
var item = document.createTextNode(results[i].getAttribute(&#8221;name&#8221;));<br />
var item1 = results[i].getAttribute(&#8221;meta1&#8243;);<br />
var item2 = results[i].getAttribute(&#8221;meta2&#8243;);<br />
var visitorname = document.getElementById(&#8221;visitorname&#8221;).value;<br />
var visitormail = document.getElementById(&#8221;visitormail&#8221;).value;<br />
}<br />
//    alert(&#8221;codigo=&#8221; + searchterm + &#8220;name=&#8221; + visitorname + &#8220;mail=&#8221; + visitormail + &#8220;uno=&#8221; + item1 + &#8220;dos=&#8221; + item2);<br />
window.location.href = &#8220;email_ex.php?codigo=&#8221; + searchterm + &#8220;&amp;name=&#8221; + visitorname + &#8220;&amp;mail=&#8221; + visitormail + &#8220;&amp;uno=&#8221; + item1 + &#8220;&amp;dos=&#8221; + item2;<br />
return false;</p>
<p>} else {<br />
// else tell the user no matches were found<br />
var notfound = alert(&#8217;Código de cliente &#8216;+searchterm+&#8217; no encontrado&#8217;);<br />
}<br />
}<br />
&lt;/script&gt;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.cristiantacchi.com/blog/2009/08/busqueda-simple/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
