<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8791131963330037643</id><updated>2012-02-12T16:25:25.871-08:00</updated><category term='slice'/><category term='smtp'/><category term='useful SQL queries'/><category term='pass unique values'/><category term='bytebuffer'/><category term='OPENXML'/><category term='search engine'/><category term='eval'/><category term='java nio buffer'/><category term='response time'/><category term='sp_xml_preparedocument'/><category term='Sitemap'/><category term='sitemap index'/><category term='buffer'/><category term='java nio ByteBuffer'/><category term='site map index'/><category term='site map'/><category term='wrap'/><category term='SQL locking mechanism'/><category term='FOR XML PATH'/><category term='generating XML'/><category term='smtp in perl'/><category term='search engine optimization'/><category term='exception handling in perl'/><category term='SQL queries'/><category term='jmeter setup for QPS'/><category term='jmeter setup'/><category term='buffer internal'/><category term='crawlers'/><category term='MS SQL server'/><category term='robots.txt'/><category term='allocate'/><category term='robots'/><category term='email notification'/><category term='qps'/><category term='organic SEO'/><category term='XML NAMESPACES'/><category term='rm command'/><category term='sql server'/><category term='jmeter'/><category term='sp_xml_removedocument'/><category term='sitemapindex'/><category term='find command'/><category term='SEO'/><category term='load and performance test'/><category term='unix'/><category term='search robot'/><category term='Sitemap.xml'/><category term='java buffer'/><category term='jmeter tutorial'/><category term='query per second'/><category term='XSINIL'/><category term='jmeter setup for throughput'/><category term='search and remove files'/><category term='how to write /create robots.txt'/><category term='jmeter load test'/><category term='alert notification'/><title type='text'>Everyday Developer</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://everydaydeveloper.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://everydaydeveloper.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>BhawnaSingh</name><uri>http://www.blogger.com/profile/08221026032958536730</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8791131963330037643.post-5374486550610723813</id><published>2011-05-26T15:32:00.001-07:00</published><updated>2012-02-06T22:35:35.987-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pass unique values'/><category scheme='http://www.blogger.com/atom/ns#' term='jmeter tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='jmeter setup for throughput'/><category scheme='http://www.blogger.com/atom/ns#' term='jmeter setup for QPS'/><category scheme='http://www.blogger.com/atom/ns#' term='query per second'/><category scheme='http://www.blogger.com/atom/ns#' term='qps'/><category scheme='http://www.blogger.com/atom/ns#' term='load and performance test'/><category scheme='http://www.blogger.com/atom/ns#' term='jmeter setup'/><category scheme='http://www.blogger.com/atom/ns#' term='jmeter'/><category scheme='http://www.blogger.com/atom/ns#' term='jmeter load test'/><category scheme='http://www.blogger.com/atom/ns#' term='response time'/><title type='text'>JMeter setup for QPS evaluation</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;Jmeter is a feature rich tool to load test and analyze your system. Here I plan to share the steps of setting up a simple Jmeter test to evaluate the throughput and determine the QPS (query per second) the system can support.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The thumb rule to determine the QPS is to keep increasing the request per second to the system and find a saturation point where your throughput dramatically drops with the increase in response time. With any load testing you will see that the response time stays constant (or minor fluctuation) and throughput increases linearly with the increase in the load or requests to the server. As you would reach the saturation point of the server, throughput will stop increasing and would rather have a sharp dip and the response time shoots up. The throughtput your server handled before reaching this saturation point is the MAX throughtput your server can handle, in other words the QPS your server can support.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;To setup this test we will start with &lt;a href='http://jakarta.apache.org/jmeter/usermanual/get-started.html'&gt;downloading and setting up your Jmeter&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Once you have JMeter setup, you can start it in your preferred way; I start it in the UI mode. To create a simple test for our purpose, here are the steps I followed.&lt;br /&gt;&lt;b&gt;Setup test plan&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Step 1: Add a Thread Group to your Jmeter test plan. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Right Click on Test Plan and Add -&amp;gt; Threads (Users) -&amp;gt; Thread Group&lt;br /&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-NODemyLS3JM/Td7YtyiwE4I/AAAAAAAAHpM/Sp7-8cPDjUw/s1600/Jmeter1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 148px;" src="http://4.bp.blogspot.com/-NODemyLS3JM/Td7YtyiwE4I/AAAAAAAAHpM/Sp7-8cPDjUw/s320/Jmeter1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5611160466923459458" /&gt;&lt;/a&gt;&lt;p&gt;Step2: Next we will add a HTTP Request Sampler&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Right click on Thread Group and Add -&amp;gt; Sampler -&amp;gt; HTTP Request&lt;br /&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-3WDwwCzmDcs/Td7YuV5GCAI/AAAAAAAAHpU/nMkxI_vuW0A/s1600/Jmeter2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 142px;" src="http://4.bp.blogspot.com/-3WDwwCzmDcs/Td7YuV5GCAI/AAAAAAAAHpU/nMkxI_vuW0A/s320/Jmeter2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5611160476412413954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Notice the path has a q parameter with the value substitution, as we will fill in unique values from a file to pass unique URL requests to the server.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Step 3: Now to see the results in Graph, we need to add Graph Results Listener&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Right Click on HTTP Request and Add -&amp;gt; Listener -&amp;gt; Graph Results&lt;br /&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-Liw-YnhEVKc/Td7Yup3Do_I/AAAAAAAAHpc/s07DU2GqEgY/s1600/Jmeter3.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 122px;" src="http://2.bp.blogspot.com/-Liw-YnhEVKc/Td7Yup3Do_I/AAAAAAAAHpc/s07DU2GqEgY/s320/Jmeter3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5611160481772577778" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Pass Unique Values&lt;/b&gt;&lt;br /&gt;&lt;p&gt;Step 4: To send different parameter values with each user request sent to the server, we can add "CSV Data Set Config" Config Element.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Right Click on HTTP Request and Add -&amp;gt; Config Element -&amp;gt; CSV Data Set Config&lt;br /&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-P0QikAGH_dg/Td7Yu8Rf3qI/AAAAAAAAHpk/CIl-Innh1EI/s1600/Jmeter4.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 132px;" src="http://3.bp.blogspot.com/-P0QikAGH_dg/Td7Yu8Rf3qI/AAAAAAAAHpk/CIl-Innh1EI/s320/Jmeter4.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5611160486715317922" /&gt;&lt;/a&gt;&lt;p&gt;The MD5.csv file has unique id one per line. If you have multiple parameters you can add the parameters comma separated in Variable Names.&lt;br /&gt;&lt;b&gt;Monitor results /response&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Step 5: To see the summarized result&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Right Click on HTTP Request and Add -&amp;gt; Listener -&amp;gt; Summary Report&lt;br /&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/--79cHge8w-Q/Td7YvHtB8hI/AAAAAAAAHps/O-A_9UW22Ps/s1600/Jmeter5.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 132px;" src="http://2.bp.blogspot.com/--79cHge8w-Q/Td7YvHtB8hI/AAAAAAAAHps/O-A_9UW22Ps/s320/Jmeter5.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5611160489783587346" /&gt;&lt;/a&gt;&lt;p&gt;Now we can start generating the load for the server by going to the Thread Group section from the left panel. To simply show the effect of drop in throughput with the increase in load, in the example here I am increasing the users (or number of threads).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;From the Thread Group tab, I will increase the concurrent users starting with 10 and setting the Ramp up period to zero.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-Ng7UTkgxNAE/Td9K8GjgkpI/AAAAAAAAHqE/nYwkFXI2dgw/s1600/Jmeter6.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 132px;" src="http://2.bp.blogspot.com/-Ng7UTkgxNAE/Td9K8GjgkpI/AAAAAAAAHqE/nYwkFXI2dgw/s320/Jmeter6.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5611286057139081874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Here is my summarized report of the experiment-&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:91px'/&gt;&lt;col style='width:92px'/&gt;&lt;col style='width:92px'/&gt;&lt;col style='width:70px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr style='height: 15px'&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;&lt;strong&gt;# of Users&lt;/strong&gt;&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;&lt;strong&gt;Avg. resp. time&lt;/strong&gt;&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;&lt;strong&gt;Throughput&lt;/strong&gt;&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;&lt;strong&gt;KB/sec&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 15px'&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;(concurrent)&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt; &lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;     (qps)&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 15px'&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;10&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;193&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;33.44481605&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;101.2881&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 15px'&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;50&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;280&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;42.08754209&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;153.5357&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 15px'&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;75&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;225&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;78.45188285&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;234.3444&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 15px'&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;100&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;209&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;105.9322034&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;306.0768&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 15px'&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;150&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;314&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;83.01051467&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;246.4645&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 15px'&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;200&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;255&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;198.764146&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;317.7128&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 15px'&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;250&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;266&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;241.070028&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;521.4105&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 15px'&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;275&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;323&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;251.8878357&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;773.7123&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 15px'&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;300&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;619&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;88.13160987&lt;/td&gt;&lt;td style='padding-left: 7px; padding-right: 7px' vAlign='bottom'&gt;260.3781&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;This states that the QPS of my server is around 250-275. As we increase the load to 300, we can see a spike in the average response time and a dip in the throughput, stating that the server has reached it's saturation level. This summarized report also gives you the average response time your server can support. This information is very crucial in designing a system.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;This experiment can be varied in different ways to introduce other factors that could be related to the use case more applicable to the system you are testing viz.; add load in steps or delays, create a set of user behavior and run it in loops etc.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8791131963330037643-5374486550610723813?l=everydaydeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://everydaydeveloper.blogspot.com/feeds/5374486550610723813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://everydaydeveloper.blogspot.com/2011/05/jmeter-setup-for-qps-evaluation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/5374486550610723813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/5374486550610723813'/><link rel='alternate' type='text/html' href='http://everydaydeveloper.blogspot.com/2011/05/jmeter-setup-for-qps-evaluation.html' title='JMeter setup for QPS evaluation'/><author><name>BhawnaSingh</name><uri>http://www.blogger.com/profile/08221026032958536730</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-NODemyLS3JM/Td7YtyiwE4I/AAAAAAAAHpM/Sp7-8cPDjUw/s72-c/Jmeter1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8791131963330037643.post-529560372874909366</id><published>2010-03-29T14:10:00.001-07:00</published><updated>2010-03-29T14:35:05.859-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rm command'/><category scheme='http://www.blogger.com/atom/ns#' term='find command'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='search and remove files'/><title type='text'>Unix - find and remove files</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;Since rm command does not support searching of files we need to use find and rm command in combination. While working with searching and removing files today, I thought,  I will share with you some of these combinations to make your search easy.&lt;br /&gt;&lt;/p&gt;&lt;h4&gt;find&lt;br /&gt;&lt;/h4&gt;&lt;p&gt;Search files matching a certain pattern viz, '&amp;amp;'&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:638px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='center'&gt;&lt;tr style='height: 29px'&gt;&lt;td style='border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none' &gt;&lt;p style='background: #c6d9f1'&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;find . -name "*&amp;amp;*"&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;Here we are looking in the current directory for all the files which have '&amp;amp;' in its name and in case you need to exclude few set of files with a particular pattern viz, '_'&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:638px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr style='height: 29px'&gt;&lt;td style='border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none' vAlign='middle'&gt;&lt;p style='background: #c6d9f1'&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;find . -name "*&amp;amp;*"  -and –not –name "_"&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;If the directory we are searching in also has subdirectories which you would like to exclude from the search, then use type switch,&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:638px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr style='height: 29px'&gt;&lt;td style='border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none' vAlign='middle'&gt;&lt;p style='background: #c6d9f1'&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;find . –type f -name "*&amp;amp;*"  -and –not –name "_"&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;h4&gt;find and rm&lt;br /&gt;&lt;/h4&gt;&lt;p&gt;Now that we have found the list of files we would like to remove from the directory, we need to pass this list to the &lt;em&gt;'rm'&lt;/em&gt; (remove) command. Since rm command takes one file at a time, there are two ways we can do this.&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:638px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr style='height: 29px'&gt;&lt;td style='border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none' vAlign='middle'&gt;&lt;p style='background: #c6d9f1'&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;find . -name "FILE_SEARCH_PATTERN"-exec rm -i {} \;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;If you don't want the confirmation before removing each file, replace the &lt;strong&gt;rm &lt;/strong&gt;switch&lt;strong&gt; –i &lt;/strong&gt;with&lt;strong&gt; -f&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Or&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:638px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr style='height: 29px'&gt;&lt;td style='border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none' vAlign='middle'&gt;&lt;p style='background: #c6d9f1'&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;find . -name "FILE_SEARCH_PATTERN" | xargs rm&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;Where &lt;strong&gt;&lt;em&gt;'xargs'&lt;/em&gt;&lt;/strong&gt; creates an argument list for a UNIX command using standard input and executes it. In UNIX shells, there is a restriction on the number of arguments allowed on a command line. &lt;em&gt;'xargs'&lt;/em&gt; helps here with bundling the arguments into smaller groups and execute rm command for each group separately.&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8791131963330037643-529560372874909366?l=everydaydeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://everydaydeveloper.blogspot.com/feeds/529560372874909366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://everydaydeveloper.blogspot.com/2010/03/unix-find-and-remove-files_29.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/529560372874909366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/529560372874909366'/><link rel='alternate' type='text/html' href='http://everydaydeveloper.blogspot.com/2010/03/unix-find-and-remove-files_29.html' title='Unix - find and remove files'/><author><name>BhawnaSingh</name><uri>http://www.blogger.com/profile/08221026032958536730</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8791131963330037643.post-7271111101620405343</id><published>2010-03-10T11:14:00.001-08:00</published><updated>2010-03-10T11:14:19.239-08:00</updated><title type='text'>Append rows to the SELECT query result</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;&lt;span style='font-family:Georgia'&gt;&lt;span style='font-size:12pt'&gt;Something I stumped over recently when I was working with a list of categories. Simply put, I had to sort the category on the number of questions each have and append category 'Other' at the end. &lt;br/&gt;&lt;br/&gt;&lt;strong&gt;UNION ALL&lt;/strong&gt; can help resolve this issue. So All we need to do is- &lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style='color:#3333ff'&gt;&lt;span style='font-size:10pt'&gt;SELECT category &lt;br/&gt;FROM t_question &lt;br/&gt;WHERE category &amp;lt;&amp;gt; 'other' &lt;br/&gt;GROUP BY category &lt;br/&gt;&lt;br/&gt;UNION all &lt;br/&gt;&lt;br/&gt;SELECT DISTINCT category &lt;br/&gt;FROM t_question &lt;br/&gt;WHERE category = 'other'&lt;/span&gt;&lt;span style='font-size:12pt'&gt;&lt;br /&gt;							&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style='font-size:12pt'&gt;&lt;br/&gt;which will give me the list of categories from the table and add category 'other' at the end of the list. But if you need to sort the list (ORDER BY) as I needed to and if you are working on MS SQL Server 2005 then ORDER BY clause does not work with UNION clause. &lt;br/&gt;&lt;br/&gt;SO I updated the above query to- &lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style='color:#3333ff'&gt;&lt;span style='font-size:10pt'&gt;SELECT c.category &lt;br/&gt;FROM (SELECT category, count(*) num &lt;br/&gt;FROM t_question &lt;br/&gt;              WHERE category &amp;lt;&amp;gt; 'other' &lt;br/&gt;              GROUP BY category &lt;br/&gt;&lt;br/&gt;              UNION all &lt;br/&gt;&lt;br/&gt;              SELECT DISTINCT category, 1 &lt;br/&gt;              FROM t_question &lt;br/&gt;              WHERE category = 'other') c &lt;br/&gt;ORDER BY num DESC&lt;/span&gt;&lt;span style='font-size:12pt'&gt;&lt;br /&gt;							&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style='font-size:12pt'&gt;&lt;br/&gt;In case you bump into the same issue, now you know how to tweak your query. &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8791131963330037643-7271111101620405343?l=everydaydeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://everydaydeveloper.blogspot.com/feeds/7271111101620405343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://everydaydeveloper.blogspot.com/2010/03/append-rows-to-select-query-result.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/7271111101620405343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/7271111101620405343'/><link rel='alternate' type='text/html' href='http://everydaydeveloper.blogspot.com/2010/03/append-rows-to-select-query-result.html' title='Append rows to the SELECT query result'/><author><name>BhawnaSingh</name><uri>http://www.blogger.com/profile/08221026032958536730</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8791131963330037643.post-1325849802349613547</id><published>2009-04-01T20:26:00.000-07:00</published><updated>2009-04-01T16:32:50.873-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='smtp'/><category scheme='http://www.blogger.com/atom/ns#' term='exception handling in perl'/><category scheme='http://www.blogger.com/atom/ns#' term='email notification'/><category scheme='http://www.blogger.com/atom/ns#' term='smtp in perl'/><category scheme='http://www.blogger.com/atom/ns#' term='eval'/><category scheme='http://www.blogger.com/atom/ns#' term='alert notification'/><title type='text'>Perl script to send alert notification email</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;We usually have a bunch of automated tasks running at different schedules and it is not feasible to keep monitoring them in person. It is almost always need to have some kind of email alert notification at the minimum in place to get notifications when something suspicious happens in the scheduled tasks running. The Perl script below addresses to that minimum requirement. One can always improvise and add further features to it or have it incorporated can called from your java (or any other) programs etc.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The script has one subroutine &lt;em&gt;msgSender.&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:638px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid #4f81bd 1.0pt; border-bottom:  solid #4f81bd 1.0pt;'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;eval{&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91'&gt;or do {&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91'&gt;};&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;In the &lt;em&gt;eval&lt;/em&gt; block we will trap any exception thrown in the msgSender subroutine and in &lt;em&gt;or do&lt;/em&gt; block we will handle that exception by logging it.&lt;br /&gt;First we need to open the file to read the list of send email addresses from the file.&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:638px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid #4f81bd 1.0pt; border-bottom:  solid #4f81bd 1.0pt;'&gt;&lt;span style='color:#365f91'&gt;open (SENDTOLISTFILE, $sendToList ) or die("Could not open sender list file.");&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;while (my $line = &amp;lt;SENDTOLISTFILE&amp;gt;) {&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;chomp($line);&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push(@sendTo,$line);&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;close(SENDTOFILE);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;chomp($line)&lt;/em&gt; actually chops off \n from the line we read and we are copying the line read in an array defined by &lt;em&gt;sendTo&lt;/em&gt;. At the end we close the file.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Next we read the subject of the email and content to be sent as arguments. If you only have one task running, you can have your subject and message hardcoded.&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:638px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid #4f81bd 1.0pt; border-bottom:  solid #4f81bd 1.0pt;'&gt;&lt;span style='color:#365f91'&gt;my $messageSubject = $_[0];&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;my $messageContent = $_[1];&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;Now comes the actual part of setting up the SMTP server for send the email notification. &lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:638px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid #4f81bd 1.0pt; border-bottom:  solid #4f81bd 1.0pt;'&gt;&lt;span style='color:#365f91'&gt;# Setup SMTP mail server to send the alert email&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;use Net::SMTP;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;$smtp = Net::SMTP-&amp;gt;new('SMTP_SERVER_INFO'); # connect to an SMTP server&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;$smtp-&amp;gt;mail('alertNotify@YOUR_DOMAINNAME.com');       # use the sender's address here&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;for($count = @sendTo; $count&amp;gt;0 ; $count--)&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;{             &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;    $sendToVal = $sendTo[$count-1];&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;    $smtp-&amp;gt;to($sendToVal);            # recipient's address&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;$smtp-&amp;gt;data();                      # Start writing the mail&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;# Send the header.      &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;$smtp-&amp;gt;datasend("To: alertNotify\@YOUR_DOMAINNAME.com\n");&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;$smtp-&amp;gt;datasend("From: alertNofity\@YOUR_DOMAINNAME.com\n");&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;$smtp-&amp;gt;datasend("Subject: $messageSubject\n");&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;$smtp-&amp;gt;datasend("\n");&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;# Send the body.&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;$smtp-&amp;gt;datasend("This is a Broadcast Message. Please DO NOT reply to this email. It is not monitored\n");&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;$smtp-&amp;gt;datasend("------------------------------------------------------------------------------------------\n");&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;$smtp-&amp;gt;datasend("$messageContent\n");&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;$smtp-&amp;gt;dataend();                   # Finish sending the mail&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;$smtp-&amp;gt;quit;                        # Close the SMTP connection&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;Update SMTP_SERVER_INFO with your smtp server info and update the sender addresses with your sender email address.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Once we have the SMTP server info set, we need to setup the header and body info. At the end we end the email with the quit statement.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;At the end we log errors if any.&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:638px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid #4f81bd 1.0pt; border-bottom:  solid #4f81bd 1.0pt;'&gt;&lt;span style='color:#365f91'&gt;or do{&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;              my $errorLogging = "C:/logs/alertNotify.err";&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;              open(LOG,"&amp;gt;$errorLogging") || die("Cannot Open File");&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;              print LOG "alertNotify:$@"; &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;              close(LOG); &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;              exit(-1);&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;};&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Or do&lt;/em&gt; block is reached only if the &lt;em&gt;eval&lt;/em&gt; block throws an exception which is captured in &lt;strong&gt;$@&lt;/strong&gt; variable. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Instead of &lt;strong&gt;or do&lt;/strong&gt; block we can also use the &lt;strong&gt;eval&lt;/strong&gt; block in combination with if condition as below to capture and log errors.&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:638px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid #4f81bd 1.0pt; border-bottom:  solid #4f81bd 1.0pt;'&gt;&lt;span style='color:#365f91'&gt;eval{&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;};&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;if($@){&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;              my $errorLogging = "C:/logs/alertNotify.err";&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;              open(LOG,"&amp;gt;$errorLogging") || die("Cannot Open File");&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;              print LOG "alertNotify:$@"; &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;              close(LOG); &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;              exit(-1);&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;Feel free to post comments and questions here or at &lt;a href='mailto:bhawnablog@gmail.com'&gt;bhawnablog@gmail.com&lt;/a&gt;&lt;br /&gt;   &lt;/p&gt;&lt;p&gt;Putting it all together…the complete Perl script is below&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:638px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid #4f81bd 1.0pt;border-bottom:  solid #4f81bd 1.0pt;'&gt;&lt;span style='color:#365f91'&gt;#!/usr/bin/perl&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;msgSender($ARGV[0],$ARGV[1]);&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;sub msgSender{&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;eval{    &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        #Read the email sendTo list from the txt file&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        my $sendToList = "C:/alerts/sendToList.txt"; &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        #Open Pipe to the sendTo list file&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        open (SENDTOLISTFILE, $sendToList ) or die("Could not open sender list file C:/alerts/sendToList.txt");&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;         while (my $line = &amp;lt;SENDTOLISTFILE&amp;gt;) {&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;            chomp($line);&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;              push(@sendTo,$line);&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        close(SENDTOFILE);&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        #Read arguments for subject and content&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        my $messageSubject = $_[0];&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        my $messageContent = $_[1];&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        # Setup SMTP mail server to send the alert email&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        use Net::SMTP;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        $smtp = Net::SMTP-&amp;gt;new('SMTP_SERVER_HOST'); # connect to an SMTP server&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        $smtp-&amp;gt;mail('alertNotify@YOUR_DOMAINNAME.com');       # sender's address here&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        for($count = @sendTo; $count&amp;gt;0 ; $count--)&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        {             &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;            $sendToVal = $sendTo[$count-1];&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;            $smtp-&amp;gt;to($sendToVal);            # recipient's address&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        $smtp-&amp;gt;data();                      # Start writing the mail&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        # Send the header.      &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        $smtp-&amp;gt;datasend("To: alertAlias\@YOUR_DOMAINNAME.com\n");&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        $smtp-&amp;gt;datasend("From: alertNofity\@YOUR_DOMAINNAME.com\n");&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        $smtp-&amp;gt;datasend("Subject: $messageSubject\n");&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        $smtp-&amp;gt;datasend("\n");&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        # Send the body.&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        $smtp-&amp;gt;datasend("This is a Broadcast Message. Please DO NOT reply to this email. It is not monitored\n");&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        $smtp-&amp;gt;datasend("------------------------------------------------------------------------------------------\n");&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        $smtp-&amp;gt;datasend("$messageContent\n");&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        $smtp-&amp;gt;dataend();                   # Finish sending the mail&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;        $smtp-&amp;gt;quit;                        # Close the SMTP connection        &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;    or do{&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;            my $errorLogging = "C:/logs/alertNotify.err";&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;            open(LOG,"&amp;gt;$errorLogging") || die("Cannot Open File");&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;            print LOG "alertNotify:$@"; &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;            close(LOG); &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;            exit(-1);&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;    };        &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;    exit(0);    &lt;/span&gt;&lt;br /&gt;&lt;span style='color:#365f91'&gt;}&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8791131963330037643-1325849802349613547?l=everydaydeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://everydaydeveloper.blogspot.com/feeds/1325849802349613547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://everydaydeveloper.blogspot.com/2009/04/perl-script-to-send-alert-notification.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/1325849802349613547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/1325849802349613547'/><link rel='alternate' type='text/html' href='http://everydaydeveloper.blogspot.com/2009/04/perl-script-to-send-alert-notification.html' title='Perl script to send alert notification email'/><author><name>BhawnaSingh</name><uri>http://www.blogger.com/profile/08221026032958536730</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8791131963330037643.post-4883091084476233096</id><published>2009-03-31T06:56:00.000-07:00</published><updated>2009-03-31T12:04:55.535-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL locking mechanism'/><category scheme='http://www.blogger.com/atom/ns#' term='MS SQL server'/><title type='text'>SQL Server Locking Mechanism Quick Facts</title><content type='html'>&lt;span xmlns=''&gt;&lt;ol&gt;&lt;li&gt;&lt;span style='color:black'&gt;The size of memory made available to the SQL server defines the lock granularity that the server will pick while processing a transaction.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='color:black'&gt;The lowest granularity level is &lt;/span&gt;&lt;em&gt;row.&lt;/em&gt;&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;span style='color:black'&gt;SQL server gets shared locks on data being queried which means all queries can see data, but queries will block writes and writes will block queries, unlike Oracle which uses snapshots for executing queries,  so queries will not block writes and writes does not block queries (although writes blocks other writes).&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='color:black'&gt;For updating a single row, SQL server acquires a single lock but if you are updating a huge set of rows, viz. 1000 rows, SQL server might decide on acquiring a page, extent or whole table lock depending on how the data is stored physically. One can control this by specifying &lt;/span&gt;&lt;em&gt;ROWLOCK HINT&lt;/em&gt;&lt;span style='color:black'&gt; in the update statement. Although tuning the query using HINTs should be done only under expert supervision or by experts.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='color:black'&gt;SQL server acquires/ chooses &lt;/span&gt;&lt;em&gt;Bulk Update &lt;/em&gt;&lt;span style='color:black'&gt;lock for Bulk copy operations which improves performance at the cost of concurrency.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;TRANSACTION ISOLATION LEVEL &lt;/em&gt;&lt;span style='color:black'&gt;defined can affect the SQL server's choice of deciding on one level of lock over the other.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;SERIALIZABLE&lt;/em&gt; &lt;span style='color:black'&gt;is the most restrictive of all the transaction isolation levels (READ COMMITED, READ UNCOMMITED, REPEATABLE READ, SERIALIZABLE). It ensures that each transaction is completely isolated from others.&lt;/span&gt;&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;span style='color:black'&gt;By default, SQL Server transactions do not time out, unless &lt;/span&gt;&lt;em&gt;LOCK_TIMEOUT&lt;/em&gt;&lt;span style='color:black'&gt; is specified.&lt;/span&gt;&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;span style='color:black'&gt;SQL Server has deadlock detection and resolution mechanism which picks one of the transaction thread involved in deadlock to roll back. One can control which transaction gets rolled back using &lt;/span&gt;&lt;em&gt;SET DEADLOCK_PRIORITY&lt;/em&gt;&lt;span style='color:black'&gt; (LOW, NORMAL, HIGH or integer range from -10 to 10, default is NORMAL) statement. The transaction session with lower priority is picked to roll back in deadlock situations. For transaction sessions with same deadlock priority level, the one which is least expensive to roll back is picked and if nothing can be decided for the pick, the transaction to roll back is picked randomly.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8791131963330037643-4883091084476233096?l=everydaydeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://everydaydeveloper.blogspot.com/feeds/4883091084476233096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://everydaydeveloper.blogspot.com/2009/03/sql-server-locking-mechanism-quick.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/4883091084476233096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/4883091084476233096'/><link rel='alternate' type='text/html' href='http://everydaydeveloper.blogspot.com/2009/03/sql-server-locking-mechanism-quick.html' title='SQL Server Locking Mechanism Quick Facts'/><author><name>BhawnaSingh</name><uri>http://www.blogger.com/profile/08221026032958536730</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8791131963330037643.post-7856022027303158922</id><published>2009-03-24T00:59:00.000-07:00</published><updated>2009-03-24T13:20:16.821-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='useful SQL queries'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL queries'/><title type='text'>Useful /Handy SQL Queries: MS SQL server</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;&lt;strong&gt;Q. Find duplicates in a table&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;SELECT&lt;/span&gt; zip &lt;span style='color:gray'&gt;,&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:fuchsia'&gt; COUNT &lt;/span&gt;&lt;span style='color:gray'&gt;(&lt;/span&gt;zip&lt;span style='color:gray'&gt;)&lt;/span&gt;&lt;span style='color:blue'&gt; AS&lt;/span&gt; NumOccurrences&lt;br /&gt;&lt;/span&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;FROM&lt;/span&gt; zipcode&lt;/span&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt; GROUP &lt;/span&gt;&lt;span style='color:blue'&gt;BY&lt;/span&gt; zip&lt;/span&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt; &lt;br /&gt;HAVING &lt;/span&gt;&lt;span style='color:gray'&gt;(&lt;/span&gt;&lt;span style='color:fuchsia'&gt;COUNT&lt;/span&gt;&lt;span style='color:gray'&gt;(&lt;/span&gt;zip&lt;span style='color:gray'&gt;)&lt;/span&gt;&lt;span style='color:gray'&gt;&amp;gt;&lt;/span&gt; 1 &lt;span style='color:gray'&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Q. Select a row or column value at random&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;SELECT&lt;/span&gt;&lt;span style='color:blue'&gt; TOP&lt;/span&gt; 1 city &lt;br /&gt;&lt;/span&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;FROM &lt;/span&gt; cityAddress &lt;/span&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;ORDER &lt;/span&gt;&lt;span style='color:blue'&gt;BY &lt;/span&gt;&lt;span style='color:fuchsia'&gt;NEWID&lt;/span&gt;&lt;span style='color:gray'&gt;()&lt;/span&gt;&lt;span style='color:#0066ff'&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Q. List items in one table that are not in the other &lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;(&lt;em&gt;LEFT JOIN&lt;/em&gt;)&lt;br /&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;SELECT&lt;/span&gt; customers&lt;span style='color:gray'&gt;.*&lt;/span&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;FROM&lt;/span&gt; customers &lt;span style='color:gray'&gt;LEFT&lt;/span&gt;&lt;span style='color:gray'&gt;JOIN&lt;/span&gt; orders&lt;/span&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt; ON&lt;/span&gt; customers&lt;span style='color:gray'&gt;.&lt;/span&gt;customer_id &lt;span style='color:gray'&gt;= &lt;/span&gt;orders&lt;span style='color:gray'&gt;.&lt;/span&gt;customer_id &lt;/span&gt;&lt;br /&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;WHERE&lt;/span&gt; orders&lt;span style='color:gray'&gt;.&lt;/span&gt;customer_id &lt;span style='color:gray'&gt;IS&lt;/span&gt;&lt;span style='color:gray'&gt; NULL&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;Alternatively,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;SELECT&lt;/span&gt; customers&lt;span style='color:gray'&gt;.*&lt;/span&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;FROM&lt;/span&gt; customers &lt;br /&gt;&lt;/span&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;WHERE&lt;/span&gt; customers&lt;span style='color:gray'&gt;.&lt;/span&gt;customer_id &lt;span style='color:gray'&gt;NOT &lt;/span&gt;&lt;span style='color:gray'&gt;IN(&lt;/span&gt;&lt;span style='color:blue'&gt;SELECT&lt;/span&gt; customer_id &lt;span style='color:blue'&gt;FROM&lt;/span&gt; orders&lt;span style='color:gray'&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;Note: In clauses are slower in execution&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Q. List items in one table that are also in another table &lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;(&lt;em&gt;INNER JOIN&lt;/em&gt;)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;SELECT&lt;/span&gt;&lt;br /&gt;     &lt;span style='color:blue'&gt;DISTINCT&lt;/span&gt; customers&lt;span style='color:gray'&gt;.*&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;FROM&lt;/span&gt; customers &lt;span style='color:gray'&gt;INNER &lt;/span&gt;&lt;span style='color:gray'&gt;JOIN&lt;/span&gt; orders &lt;br /&gt;&lt;/span&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;ON&lt;/span&gt; customers&lt;span style='color:gray'&gt;.&lt;/span&gt;customer_id &lt;span style='color:gray'&gt;=&lt;/span&gt; orders&lt;span style='color:gray'&gt;.&lt;/span&gt;customer_id&lt;/span&gt;&lt;span style='color:#0070c0'&gt;&lt;br /&gt;    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;Alternatively,&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;SELECT&lt;/span&gt; customers&lt;span style='color:gray'&gt;.*&lt;/span&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;FROM&lt;/span&gt; customers &lt;br /&gt;&lt;/span&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;WHERE&lt;/span&gt; customers&lt;span style='color:gray'&gt;.&lt;/span&gt;customer_id &lt;span style='color:gray'&gt;IN(&lt;/span&gt;&lt;span style='color:blue'&gt;SELECT&lt;/span&gt; customer_id &lt;span style='color:blue'&gt;FROM&lt;/span&gt; orders&lt;span style='color:gray'&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;Note: In clauses are slower in execution&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Q. Get Total count of distinct column value&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Notice the &lt;em&gt;DISTINCT&lt;/em&gt; keyword placement&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;SELECT &lt;/span&gt;&lt;span style='color:fuchsia'&gt;COUNT&lt;/span&gt;&lt;span style='color:gray'&gt;(&lt;/span&gt;&lt;span style='color:blue'&gt;DISTINCT&lt;/span&gt; customer_state&lt;span style='color:gray'&gt;)&lt;/span&gt;&lt;span style='color:blue'&gt; AS&lt;/span&gt; total&lt;/span&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;br /&gt;&lt;span style='color:blue'&gt;FROM&lt;/span&gt; customers&lt;/span&gt;&lt;span style='color:#0070c0'&gt;&lt;br /&gt;    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Q. Copy data from one table into another&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;INSERT&lt;/span&gt; &lt;span style='color:blue'&gt;INTO&lt;/span&gt; customers&lt;span style='color:gray'&gt;(&lt;/span&gt;customer_id&lt;span style='color:gray'&gt;,&lt;/span&gt; customer_name&lt;span style='color:gray'&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;SELECT&lt;/span&gt; customer_id&lt;span style='color:gray'&gt;,&lt;/span&gt; customer_name&lt;br /&gt;&lt;/span&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;FROM&lt;/span&gt; partnerCustList&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Q. Bulk Insert data from one table into another. &lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The new table will have same structure as the one where the data is copied from with &lt;em&gt;Bulk Insert&lt;/em&gt;&lt;br /&gt;   &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;SELECT&lt;/span&gt; &lt;span style='color:gray'&gt;*&lt;/span&gt;&lt;br /&gt;     &lt;span style='color:blue'&gt;INTO&lt;/span&gt; customers&lt;br /&gt;&lt;/span&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;FROM&lt;/span&gt; partnerCustList&lt;/span&gt;&lt;span style='color:#0070c0'&gt;&lt;br /&gt;    &lt;/span&gt;&lt;/p&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8791131963330037643-7856022027303158922?l=everydaydeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://everydaydeveloper.blogspot.com/feeds/7856022027303158922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://everydaydeveloper.blogspot.com/2009/03/useful-handy-sql-queries-ms-sql-server.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/7856022027303158922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/7856022027303158922'/><link rel='alternate' type='text/html' href='http://everydaydeveloper.blogspot.com/2009/03/useful-handy-sql-queries-ms-sql-server.html' title='Useful /Handy SQL Queries: MS SQL server'/><author><name>BhawnaSingh</name><uri>http://www.blogger.com/profile/08221026032958536730</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8791131963330037643.post-8271943581817683688</id><published>2009-03-22T03:07:00.000-07:00</published><updated>2009-04-10T14:17:47.612-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bytebuffer'/><category scheme='http://www.blogger.com/atom/ns#' term='allocate'/><category scheme='http://www.blogger.com/atom/ns#' term='wrap'/><category scheme='http://www.blogger.com/atom/ns#' term='java nio buffer'/><category scheme='http://www.blogger.com/atom/ns#' term='buffer internal'/><category scheme='http://www.blogger.com/atom/ns#' term='java nio ByteBuffer'/><category scheme='http://www.blogger.com/atom/ns#' term='java buffer'/><category scheme='http://www.blogger.com/atom/ns#' term='buffer'/><category scheme='http://www.blogger.com/atom/ns#' term='slice'/><title type='text'>Java Buffer</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;A buffer is an object, used to write some primitive type data into or read from. A buffer provides structured access to the data while keeping track for the reading and writing processes. Buffers allow I/O operations on blocks of data instead of working with them byte by byte (stream-oriented) which speeds up the I/O operations.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;To understand buffers in depth we need to take a tour to the buffer internals.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Buffer Internals&lt;br /&gt;&lt;/h2&gt;&lt;h3&gt;State Variables&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;Buffer state variables help in keeping the "internal accounting" for them. With each read/ write operation, buffer's state variable is updated to help buffers manage its resources and help us perform I/O operations in blocks. Buffers has 3 state variables to track its state and the data it holds- &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Position&lt;/strong&gt; – keeps track of how much data was written or read from the buffer i.e, where should the next set of data block we added to the buffer or read from.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Limit &lt;/strong&gt;– keeps track of how much data is left in the buffer to read from or how much space is left in the buffer to write data into &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Capacity&lt;/strong&gt; – specifies the max amount of data that the buffer can hold.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;This brings us to the equation, &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt;&lt;strong&gt;position  ≤  limit   ≤  capacity&lt;/strong&gt;&lt;/span&gt;  where none of the state variables can be negative.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Now let us try to visualize these variables. Assuming the capacity of our buffer is 16 bytes shown by dashes below,&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:#c00000'&gt;&lt;strong&gt;State: Empty                                                                                                                                                                                 &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt;position =0                          &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;                     limit, capacity = 16&lt;br /&gt;&lt;/span&gt;&lt;img src="http://1.bp.blogspot.com/_AEF1CFRh8uE/ScgNP8_rVJI/AAAAAAAAD9Q/RXRk-PoSgkI/s320/Down_arrow-759877.JPG"  border="0" alt="down arrow" id="BLOGGER_PHOTO_ID_5316513927833277586" /&gt;____   ____  ____  ____       ____  ____ ____  ____      ____   ____  ____  ____    ____  ____ ____  ____&lt;img src="http://1.bp.blogspot.com/_AEF1CFRh8uE/ScgNP8_rVJI/AAAAAAAAD9Q/RXRk-PoSgkI/s320/Down_arrow-759877.JPG"  border="0" alt="down arrow" id="BLOGGER_PHOTO_ID_5316513927833277586" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:#c00000'&gt;&lt;strong&gt;State: First write of 8 bytes&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position = 8&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;limit, capacity = 16&lt;br /&gt;&lt;/span&gt;__&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_     __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_      &lt;img src="http://1.bp.blogspot.com/_AEF1CFRh8uE/ScgNP8_rVJI/AAAAAAAAD9Q/RXRk-PoSgkI/s320/Down_arrow-759877.JPG"  border="0" alt="down arrow" id="BLOGGER_PHOTO_ID_5316513927833277586" /&gt;____   ____  ____  ____    ____  ____ ____  ____&lt;img src="http://1.bp.blogspot.com/_AEF1CFRh8uE/ScgNP8_rVJI/AAAAAAAAD9Q/RXRk-PoSgkI/s320/Down_arrow-759877.JPG"  border="0" alt="down arrow" id="BLOGGER_PHOTO_ID_5316513927833277586" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:#c00000'&gt;&lt;strong&gt;State: Second write of 4 bytes&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position = 12        limit, capacity = 16&lt;br /&gt;&lt;/span&gt;__&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_     __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_      __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_   &lt;img src="http://1.bp.blogspot.com/_AEF1CFRh8uE/ScgNP8_rVJI/AAAAAAAAD9Q/RXRk-PoSgkI/s320/Down_arrow-759877.JPG"  border="0" alt="down arrow" id="BLOGGER_PHOTO_ID_5316513927833277586" /&gt; ____  ____ ____  ____&lt;img src="http://1.bp.blogspot.com/_AEF1CFRh8uE/ScgNP8_rVJI/AAAAAAAAD9Q/RXRk-PoSgkI/s320/Down_arrow-759877.JPG"  border="0" alt="down arrow" id="BLOGGER_PHOTO_ID_5316513927833277586" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Now let us flip the buffer to read the data from, &lt;em&gt;flip()&lt;/em&gt;, this sets the limit to the current position and resets position to 0.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:#c00000'&gt;&lt;strong&gt;State: flip()&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt;position = 0                                    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;limit = 12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;capacity = 16&lt;br /&gt;&lt;/span&gt;&lt;img src="http://1.bp.blogspot.com/_AEF1CFRh8uE/ScgNP8_rVJI/AAAAAAAAD9Q/RXRk-PoSgkI/s320/Down_arrow-759877.JPG"  border="0" alt="down arrow" id="BLOGGER_PHOTO_ID_5316513927833277586" /&gt;__&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_     __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_      __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_    &lt;img src="http://1.bp.blogspot.com/_AEF1CFRh8uE/ScgNP8_rVJI/AAAAAAAAD9Q/RXRk-PoSgkI/s320/Down_arrow-759877.JPG"  border="0" alt="down arrow" id="BLOGGER_PHOTO_ID_5316513927833277586" /&gt;____  ____ ____  ____&lt;img src="http://1.bp.blogspot.com/_AEF1CFRh8uE/ScgNP8_rVJI/AAAAAAAAD9Q/RXRk-PoSgkI/s320/Down_arrow-759877.JPG"  border="0" alt="down arrow" id="BLOGGER_PHOTO_ID_5316513927833277586" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The buffer is now ready to be read the data from,&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:#c00000'&gt;&lt;strong&gt;State: Read 8 bytes&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position = 8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;limit = 12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;capacity = 16&lt;br /&gt;&lt;/span&gt;&lt;span style='color:gray'&gt;__&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_     __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_&lt;/span&gt;      &lt;img src="http://1.bp.blogspot.com/_AEF1CFRh8uE/ScgNP8_rVJI/AAAAAAAAD9Q/RXRk-PoSgkI/s320/Down_arrow-759877.JPG"  border="0" alt="down arrow" id="BLOGGER_PHOTO_ID_5316513927833277586" /&gt;__&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_   &lt;img src="http://1.bp.blogspot.com/_AEF1CFRh8uE/ScgNP8_rVJI/AAAAAAAAD9Q/RXRk-PoSgkI/s320/Down_arrow-759877.JPG"  border="0" alt="down arrow" id="BLOGGER_PHOTO_ID_5316513927833277586" /&gt; ____  ____ ____  ____&lt;img src="http://1.bp.blogspot.com/_AEF1CFRh8uE/ScgNP8_rVJI/AAAAAAAAD9Q/RXRk-PoSgkI/s320/Down_arrow-759877.JPG"  border="0" alt="down arrow" id="BLOGGER_PHOTO_ID_5316513927833277586" /&gt;&lt;/p&gt;&lt;p&gt;The next read statement can read maximum 4 more bytes from our buffer due to the limit set to 12. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:#c00000'&gt;&lt;strong&gt;State: Read 4 bytes&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position, limit = 12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;capacity = 16&lt;br /&gt;&lt;/span&gt;&lt;span style='color:gray'&gt;__&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_     __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_&lt;/span&gt;&lt;span style='color:gray'&gt;__&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_&lt;/span&gt;    &lt;img src="http://1.bp.blogspot.com/_AEF1CFRh8uE/ScgNP8_rVJI/AAAAAAAAD9Q/RXRk-PoSgkI/s320/Down_arrow-759877.JPG"  border="0" alt="down arrow" id="BLOGGER_PHOTO_ID_5316513927833277586" /&gt;___  ___ ___  ___&lt;img src="http://1.bp.blogspot.com/_AEF1CFRh8uE/ScgNP8_rVJI/AAAAAAAAD9Q/RXRk-PoSgkI/s320/Down_arrow-759877.JPG"  border="0" alt="down arrow" id="BLOGGER_PHOTO_ID_5316513927833277586" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;And finally we clear up our buffer before using it further, &lt;em&gt;clear()&lt;/em&gt;, this sets the position to 0 and the limit equal to the buffer capacity.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:#c00000'&gt;&lt;strong&gt;State: clear()&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt;position =0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;limit, capacity = 16&lt;br /&gt;&lt;/span&gt;&lt;img src="http://1.bp.blogspot.com/_AEF1CFRh8uE/ScgNP8_rVJI/AAAAAAAAD9Q/RXRk-PoSgkI/s320/Down_arrow-759877.JPG"  border="0" alt="down arrow" id="BLOGGER_PHOTO_ID_5316513927833277586" /&gt;____   ____  ____  ____       ____  ____ ____  ____      ____   ____  ____  ____    ____  ____ ____  ____&lt;img src="http://1.bp.blogspot.com/_AEF1CFRh8uE/ScgNP8_rVJI/AAAAAAAAD9Q/RXRk-PoSgkI/s320/Down_arrow-759877.JPG"  border="0" alt="down arrow" id="BLOGGER_PHOTO_ID_5316513927833277586" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;Accessor Methods&lt;br /&gt;&lt;/h3&gt;&lt;h6&gt;Get (ByteBuffer)&lt;br /&gt;&lt;/h6&gt;&lt;ol&gt;&lt;li&gt;byte get(); - returns single byte.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ByteBuffer get( byte dest[] ); - reads a group of bytes into the array dest&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ByteBuffer get( byte dest[], int offset, int length ); - reads a group of bytes into the array dest&lt;br /&gt;&lt;/li&gt;&lt;li&gt;byte get( int index ); - returns a byte of data from the position specified by index&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The methods from 1-3 respect the buffer state variables whereas, method 4 does not. So the 4&lt;sup&gt;th&lt;/sup&gt; method ignores the position and limit state variable of the buffer and does not change their values either. Method 4 is referred as an absolute method while other methods are relative. Methods 2 and 3 just return this object on which they were called which allows chaining of the methods when needed.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt;buffer.get(data).flip();&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h6&gt;Put (ByteBuffer)&lt;br /&gt;&lt;/h6&gt;&lt;p&gt;1. ByteBuffer put( byte b ); - puts one byte in the buffer&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. ByteBuffer put( byte src[] ); - puts an array of bytes in the buffer&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. ByteBuffer put( byte src[], int offset, int length ); - puts an array of bytes in the buffer&lt;br /&gt;&lt;/p&gt;&lt;p&gt;4. ByteBuffer put( ByteBuffer src ); - copies data from source buffer into this buffer&lt;br /&gt;&lt;/p&gt;&lt;p&gt;5. ByteBuffer put( int index, byte b ); - puts data byte into the position specified by index&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Here the method 5 is absolute and all others are relative.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The methods discussed above are all related to &lt;em&gt;ByteBuffer&lt;/em&gt; class. Other buffer types have equivalent &lt;em&gt;get()&lt;/em&gt; and &lt;em&gt;put()&lt;/em&gt; methods dealing with the corresponding primitive type they handle.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;ByteBuffer&lt;/em&gt; class also has methods to get or put data of specific primitive type both in absolute and relative form. &lt;br /&gt;&lt;/p&gt;&lt;h3&gt;ByteBuffer Quick Facts&lt;br /&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Buffer allocation automatically empties the ByteBuffer and resets the state variables.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;duplicate&lt;/em&gt; and &lt;em&gt;slice&lt;/em&gt; methods perform shallow copy of the original ByteBuffer. So anything you do on the returned buffer will affect the original.&lt;/li&gt;&lt;/ol&gt;&lt;span style='color:blue'&gt;&lt;/span&gt;&lt;/span&gt;&lt;h3&gt;Other handy methods &lt;br /&gt;&lt;/h3&gt;&lt;h6&gt;Creating buffers: &lt;em&gt;allocate()&lt;/em&gt; and &lt;em&gt;wrap()&lt;/em&gt;&lt;br /&gt;&lt;/h6&gt;&lt;p&gt;Buffers can be created by allocating space for it using method &lt;em&gt;allocate&lt;/em&gt;() or by wrapping existing array into a buffer using method &lt;em&gt;wrap()&lt;/em&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt;ByteBuffer buffer = ByteBuffer.allocate(1024);&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Allocates 1024 bytes of space for the object buffer. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;You can also wrap an array of primitive type into a corresponding buffer.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt;Byte arr[] = new byte[1024];&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt;Bytebuffer buffer = ByteBuffer.wrap(arr);&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Both buffer and arr share the same memory space now.&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Direct vs. in-direct ByteBuffer Allocations&lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Direct ByteBuffer space is allocated in the native OS memory, although java does not guarantee the success. Allocation of direct ByteBuffer in memory is costly but it provides faster I/O.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt;ByteBuffer byte_buff = ByteBuffer.allocateDirect (2000);&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;There is no allocateDirect method for other primitive buffer types but we can use ByteBuffer &lt;em&gt;view buffers&lt;/em&gt; to read the data in other primitive type while still making use of ByteBuffer's &lt;em&gt;allocateDirect&lt;/em&gt; underneath.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt;ByteBuffer byte_buff = ByteBuffer.allocateDirect (2000);&lt;br /&gt;&lt;/span&gt;&lt;span style='color:blue'&gt;CharBuffer cbuf = buffer.asCharBuffer();&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h6&gt;Slicing buffers: &lt;em&gt;slice()&lt;/em&gt;&lt;br /&gt;&lt;/h6&gt;&lt;p&gt;Creates a sub-buffer out of the original buffer it is called upon and both share the same memory space. Slicing a buffer creates a shallow copy. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt;ByteBuffer origBuffer = ByteBuffer.allocate(16);&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt;origBuffer.position(4);&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt;origBuffer.limit(12);&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt;ByteBuffer slicedBuffer = origBuffer.slice();&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Now if we add 4 to each value in the buffer the above buffer can be represented as&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt;position = 0     position(slicedBuffer) = 4                &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;limit(slicedBuffer) = 12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;capacity = 16&lt;br /&gt;&lt;/span&gt;&lt;img src="http://1.bp.blogspot.com/_AEF1CFRh8uE/ScgNP8_rVJI/AAAAAAAAD9Q/RXRk-PoSgkI/s320/Down_arrow-759877.JPG"  border="0" alt="down arrow" id="BLOGGER_PHOTO_ID_5316513927833277586" /&gt;__&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;1&lt;/span&gt;_    &lt;img src="http://1.bp.blogspot.com/_AEF1CFRh8uE/ScgNP8_rVJI/AAAAAAAAD9Q/RXRk-PoSgkI/s320/Down_arrow-759877.JPG"  border="0" alt="down arrow" id="BLOGGER_PHOTO_ID_5316513927833277586" /&gt; __&lt;span style='text-decoration:underline'&gt;5&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;5&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;5&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;5&lt;/span&gt;_      __&lt;span style='text-decoration:underline'&gt;5&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;5&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;5&lt;/span&gt;_  __&lt;span style='text-decoration:underline'&gt;5&lt;/span&gt;_ &lt;img src="http://1.bp.blogspot.com/_AEF1CFRh8uE/ScgNP8_rVJI/AAAAAAAAD9Q/RXRk-PoSgkI/s320/Down_arrow-759877.JPG"  border="0" alt="down arrow" id="BLOGGER_PHOTO_ID_5316513927833277586" /&gt;   ____  ____ ____  ____&lt;img src="http://1.bp.blogspot.com/_AEF1CFRh8uE/ScgNP8_rVJI/AAAAAAAAD9Q/RXRk-PoSgkI/s320/Down_arrow-759877.JPG"  border="0" alt="down arrow" id="BLOGGER_PHOTO_ID_5316513927833277586" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;This feature allows data abstraction by helping you write functions to work with whole or a slice of buffer data.&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;h6&gt;Marking the buffer position: mark()&lt;br /&gt;&lt;/h6&gt;&lt;p&gt;Marks the current position in the buffer such that any subsequent buffer &lt;em&gt;reset()&lt;/em&gt; will bring the buffer position to the current mark position instead of setting it to 0.&lt;br /&gt;&lt;/p&gt;&lt;h6&gt;Rewind Buffer: rewind()&lt;br /&gt;&lt;/h6&gt;&lt;p&gt;Sets the buffer position to 0 and discards any mark settings&lt;br /&gt;&lt;/p&gt;&lt;h6&gt;Creating read-only buffers: asReadOnlyBuffer()&lt;br /&gt;&lt;/h6&gt;&lt;p&gt;&lt;span style='color:blue'&gt;ByteBuffer buffer = ByteBuffer.allocate(1024);&lt;br /&gt;&lt;/span&gt;&lt;span style='color:blue'&gt;ByteBuffer readoonlyBuffer = buffer.asReadOnlyBuffer();&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;Buffer in Action&lt;/h3&gt;&lt;span xmlns=''&gt;&lt;p&gt;Copying data from input stream into buffer and writing the data from the buffer into output stream.&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:638px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none'&gt;&lt;br /&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;import java.io.*;&lt;br /&gt;import java.nio.*;&lt;br /&gt;import java.nio.channels.*;&lt;br/&gt;public class BufferCopy &lt;br/&gt;{&lt;br/&gt;&amp;nbsp;&amp;nbsp;public static void main(String[] args) throws IOException &lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;      &amp;nbsp;&amp;nbsp;{&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FileInputStream inFile = new FileInputStream(args[0]);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FileOutputStream outFile = new FileOutputStream(args[1]);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FileChannel inChannel = inFile.getChannel();&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FileChannel outChannel = outFile.getChannel();    &lt;br/&gt;   &lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ByteBuffer buffer = ByteBuffer.allocate(1024*1024);&lt;br/&gt;    &lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (; inChannel.read(buffer) != -1; buffer.clear()) &lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buffer.flip();&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (buffer.hasRemaining()) &lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      outChannel.write(buffer);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;inChannel.close();&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;outChannel.close();     &lt;br/&gt;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;span xmlns=''&gt;&lt;p&gt;Converting ByteBuffer to CharBuffer&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:638px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none'&gt;&lt;span style='color:#1f497d; font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;char&lt;/strong&gt;[] data = "ByteToCharBuffer".toCharArray();&lt;br/&gt;ByteBuffer bb = ByteBuffer.allocate(data.length * 2);&lt;br/&gt;CharBuffer cb = &lt;strong&gt;bb.asCharBuffer();&lt;/strong&gt;&lt;br/&gt;cb.put(data);&lt;br/&gt;&lt;strong&gt;while &lt;/strong&gt;((c = cb.getChar()) != 0)&lt;br/&gt;   System.out.print(c + " ");    &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;Wrap a char array into a charBuffer&lt;br /&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:638px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#1f497d; font-family:Courier New; font-size:10pt'&gt;CharBuffer buffer = CharBuffer.allocate(8);&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#1f497d; font-family:Courier New; font-size:10pt'&gt;char[] myBuffer = new char[100];&lt;br/&gt;CharBuffer cb = &lt;strong&gt;CharBuffer.wrap&lt;/strong&gt;(myBuffer);    &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;span xmlns=''&gt;&lt;p&gt;Converting between string and bytes&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:638px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none'&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;// Create the encoder and decoder&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;Charset charset = Charset.forName("ISO-8859-1");&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;CharsetDecoder decoder = charset.newDecoder();&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;CharsetEncoder encoder = charset.newEncoder();&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;try &lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;    // Convert string to bytes (ISO-LATIN-1) in ByteBuffer&lt;br /&gt;&lt;/span&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:#365f91'&gt;    ByteBuffer bbuf = encoder.encode(CharBuffer.wrap(&lt;/span&gt;&lt;span style='color:#0066ff'&gt;&lt;em&gt;"string"&lt;/em&gt;&lt;/span&gt;&lt;span style='color:#365f91'&gt;));&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;   &lt;br /&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;   // Convert bytes from ByteBuffer into CharBuffer and then to a string.&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;    CharBuffer cbuf = decoder.decode(bbuf);&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;    String s = cbuf.toString();&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;} &lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;    catch (CharacterCodingException e) {&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;String and byte conversion using the direct allocation for ByteBuffer&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:638px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none'&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;// Create a direct ByteBuffer for channeling the data&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;ByteBuffer bytebuf = ByteBuffer.allocateDirect(1024);&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;// Create a non-direct character ByteBuffer&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;CharBuffer charbuf = CharBuffer.allocate(1024);&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;// Convert characters in charbuf to bytebuf&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;encoder.encode(charbuf, bytebuf, false);&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;// flip bytebuf before reading from it&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;bytebuf.flip();&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;// Convert bytes in bytebuf to charbuf&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;decoder.decode(bytebuf, charbuf, false);&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;// flip charbuf before reading from it&lt;br /&gt;&lt;/span&gt;&lt;span style='color:#365f91; font-family:Courier New; font-size:10pt'&gt;charbuf.flip();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8791131963330037643-8271943581817683688?l=everydaydeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://everydaydeveloper.blogspot.com/feeds/8271943581817683688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://everydaydeveloper.blogspot.com/2009/03/java-buffers.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/8271943581817683688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/8271943581817683688'/><link rel='alternate' type='text/html' href='http://everydaydeveloper.blogspot.com/2009/03/java-buffers.html' title='Java Buffer'/><author><name>BhawnaSingh</name><uri>http://www.blogger.com/profile/08221026032958536730</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_AEF1CFRh8uE/ScgNP8_rVJI/AAAAAAAAD9Q/RXRk-PoSgkI/s72-c/Down_arrow-759877.JPG' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8791131963330037643.post-1459848190953823915</id><published>2009-03-11T06:30:00.000-07:00</published><updated>2009-03-26T13:50:56.765-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='search robot'/><category scheme='http://www.blogger.com/atom/ns#' term='robots.txt'/><category scheme='http://www.blogger.com/atom/ns#' term='robots'/><category scheme='http://www.blogger.com/atom/ns#' term='how to write /create robots.txt'/><category scheme='http://www.blogger.com/atom/ns#' term='search engine'/><category scheme='http://www.blogger.com/atom/ns#' term='crawlers'/><title type='text'>Keeping search robots away!</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;At times, you would want few of your web pages to not be visible in the search engine result page (SERP).  The reason being it is under construction; or it's a semi-private page, something you would like to share with smaller community; or any other.  Here I have discussed ways to keep the search engine robots or crawlers from visiting the page or a link on a page supported by &lt;em&gt;Robots Exclusion Protocol (REP).&lt;/em&gt;&lt;br /&gt;   &lt;/p&gt;&lt;p&gt;To block the search engine robot from indexing a particular page, use the mate tag &lt;em&gt;robots &lt;/em&gt;with the content value &lt;em&gt;noindex.&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt;&amp;lt;meta name="robots" content="noindex" /&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Alternatively, if you'd like the web page to be indexed but suggest the search robot to not follow any of the links on the page, use the &lt;em&gt;nofollow&lt;/em&gt; content value.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt;&amp;lt;meta name="robots" content="nofollow" /&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;More Content values for robots Meta tag -&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:91px'/&gt;&lt;col style='width:400px'/&gt;&lt;col style='width:147px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr style='height: 29px'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Content Value&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Supported By&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 29px; background: #d3dfee'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;noindex&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none; font-size:10pt'&gt;&lt;p&gt;Do not index the web page&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none; font-size:10pt'&gt;&lt;p&gt;Google, Yahoo, Ask, MSN Live&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 29px'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; font-size:10pt'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;index&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; font-size:10pt'&gt;&lt;p&gt;Index the web page&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 29px; background: #d3dfee'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;nofollow&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none; font-size:10pt'&gt;&lt;p&gt;Do not follow/visit any link on the web page&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none; font-size:10pt'&gt;&lt;p&gt;Google, Yahoo, Ask, MSN Live&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 29px'&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;follow&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; font-size:10pt'&gt;&lt;p&gt;Follow all the links on the web page&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 29px; background: #d3dfee'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;noarchive&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none; font-size:10pt'&gt;&lt;p&gt;Do not cache the web page&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none; font-size:10pt'&gt;&lt;p&gt;Google, Yahoo, Ask, MSN Live&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 29px'&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;nosnippet&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; font-size:10pt'&gt;&lt;p&gt;Do not auto generate the description based on page content&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; font-size:10pt'&gt;&lt;p&gt;Google&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 29px; background: #d3dfee'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;noodp&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none; font-size:10pt'&gt;&lt;p&gt;Do not overwrite the description or title tag content from Open Directory project [home page only]&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none; font-size:10pt'&gt;&lt;p&gt;Google, Yahoo, MSN Live&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 29px'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-bottom:  solid #4f81bd 1.0pt'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;noydir&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-bottom:  solid #4f81bd 1.0pt; font-size:10pt'&gt;&lt;p&gt;Do no overwrite the description or title tag content&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-bottom:  solid #4f81bd 1.0pt; font-size:10pt'&gt;&lt;p&gt;Yahoo&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;You can also have combinations of content values (of course the combinations should make sense).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue'&gt;&amp;lt;meta name="robots" content="noindex, follow" /&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Now if you are dealing with keeping search robots from visiting multiple web pages of your website, you can make use of robots.txt file which is placed in the top-level directory hierarchy of your web site.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Here is the syntax of the robots.txt file-&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue; font-family:Courier New; font-size:10pt'&gt;User-Agent: *&lt;br /&gt;Disallow: /&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;In the above syntax, &lt;span style='color:blue; font-family:Courier New; font-size:10pt'&gt;User-Agent &lt;/span&gt;identifies the search robot and &lt;span style='color:blue'&gt;*&lt;/span&gt; refers to all search robots. You can also specify the search robot name here to address a particular search engine robot. Refer to the User-Agent of major search engines.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;To restrict certain directory of your website -&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue; font-family:Courier New; font-size:10pt'&gt;User-Agent: *&lt;br /&gt;Disallow: /Songs&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;To restrict particular robot from visiting your web directory&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue; font-family:Courier New; font-size:10pt'&gt;User-Agent: Googlebot/2.1&lt;br /&gt;Disallow: /Songs&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;If you are addressing multiple search robots in your robots.txt, make sure that the directive for specific User-agent is specified before.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue; font-family:Courier New; font-size:10pt'&gt;#Disallow Google bot from visiting any webpage/ content under /Songs/private &lt;br /&gt;User-Agent: Googlebot/2.1&lt;br /&gt;Disallow: /Songs/private&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue; font-family:Courier New; font-size:10pt'&gt;#Disallow all other bots from visiting any web page/ content under /Songs&lt;br /&gt;User-Agent: *&lt;br /&gt;Disallow: /Songs&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;More Robots.txt directives –&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:120px'/&gt;&lt;col style='width:408px'/&gt;&lt;col style='width:200px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr style='height: 29px'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Content Value&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Supported By&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 29px; background: #d3dfee'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right: none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Disallow&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none; font-size:10pt'&gt;&lt;p&gt;Do not visit specified web page&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none; font-size:10pt'&gt;&lt;p&gt;ALL search robots&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 29px'&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Allow&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; font-size:10pt'&gt;&lt;p&gt;Allow visiting the particular web page&lt;span style='color:blue; font-family:Courier New; font-size:10pt'&gt;&lt;br&gt;Eg, Disallow: /Songs&lt;br /&gt;       Allow: /Songs/Favs&lt;/span&gt;&lt;br /&gt;Above statement will restrict the search robot from visiting all the directories under Songs other than Favs subfolder&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; font-size:10pt'&gt;&lt;p&gt;Google, Yahoo, Ask, MSN Live&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 29px; background: #d3dfee'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none; font-size:10pt'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Sitemap&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none; font-size:10pt'&gt;&lt;p&gt;Location of your sitemap&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Sitemap: &lt;code&gt;http://yourwebsite.com/sitemap_location.xml&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Location of sitemap index file can also be included here.&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none; font-size:10pt'&gt;&lt;p&gt;Google, Yahoo, Ask, MSN Live&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 29px'&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Wild card (*/$)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; font-size:10pt'&gt;&lt;p&gt;Wildcard * - matches sequence of characters&lt;br /&gt;&lt;span style='color:blue; font-family:Courier New; font-size:10pt'&gt;Eg, Disallow: /Songs/*personal*&lt;/span&gt;&lt;br /&gt;Wildcard $ - matches everything from the end of the URL&lt;br /&gt;&lt;span style='color:blue; font-family:Courier New; font-size:10pt'&gt;Eg, Disallow: /Songs/*.mp3$&lt;/span&gt;&lt;br /&gt;Learn more on &lt;a href='http://www.google.com/support/webmasters/bin/answer.py?answer=40367'&gt;pattern matching&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; font-size:10pt'&gt;&lt;p&gt;Google, Yahoo, MSN Live&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 29px; background: #d3dfee'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none; font-size:10pt'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Crawl-Delay&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none; font-size:10pt'&gt;&lt;p&gt;Specifies minimum delay between two successive requests made by search robot&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none; font-size:10pt'&gt;&lt;p&gt;Ask&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;h4&gt;robots.txt quick Tips&lt;/h4&gt;&lt;br /&gt;Q. To allow all search engine spiders to index all the files of your website&lt;br /&gt;&lt;br /&gt;Your robots.txt file should like below&lt;br /&gt;&lt;span style='color:blue; font-family:Courier New; font-size:10pt'&gt;User-agent: *&lt;br /&gt;Disallow:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Q. To disallow all spiders to index any file&lt;br /&gt;&lt;br /&gt;Your robots.txt file should like below&lt;br /&gt;&lt;span style='color:blue; font-family:Courier New; font-size:10pt'&gt;User-agent: *&lt;br /&gt;Disallow: /&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Note: Slash '/' here is your root directory and by adding that in your Disallow statement you are restricting spiders from indexing all the files of your website.&lt;/div&gt;&lt;br /&gt;&lt;p&gt;For specific questions related to writing robots.txt for your website, please reach me at &lt;a href='mailto:bhawnablog@gmail.com'&gt;bhawnablog@gmail.com&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8791131963330037643-1459848190953823915?l=everydaydeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://everydaydeveloper.blogspot.com/feeds/1459848190953823915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://everydaydeveloper.blogspot.com/2009/03/keeping-search-robots-away.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/1459848190953823915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/1459848190953823915'/><link rel='alternate' type='text/html' href='http://everydaydeveloper.blogspot.com/2009/03/keeping-search-robots-away.html' title='Keeping search robots away!'/><author><name>BhawnaSingh</name><uri>http://www.blogger.com/profile/08221026032958536730</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8791131963330037643.post-3875508644483397612</id><published>2009-03-09T22:33:00.000-07:00</published><updated>2009-03-16T13:12:13.652-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sitemap'/><category scheme='http://www.blogger.com/atom/ns#' term='site map index'/><category scheme='http://www.blogger.com/atom/ns#' term='sitemap index'/><category scheme='http://www.blogger.com/atom/ns#' term='site map'/><category scheme='http://www.blogger.com/atom/ns#' term='sitemapindex'/><category scheme='http://www.blogger.com/atom/ns#' term='Sitemap.xml'/><title type='text'>Creating XML Site Map</title><content type='html'>&lt;span xmlns=""&gt;&lt;p&gt;Apart from the HTML site map on your web site, which can help the web site visitors and search engine robots in navigating through your web site, you can create a XML &lt;strong&gt;Sitemap&lt;/strong&gt;. The XML Sitemaps are specifically for search engine robots and can be submitted to the particular search engine. A Sitemap lists all the links of your website that you would like to be visited by the search engine robots, specifically helps with dynamic pages, which search engine robots, will have no knowledge of otherwise.&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;Sitemap&lt;br /&gt;&lt;/h3&gt;&lt;table style="BORDER-COLLAPSE: collapse;font-size:10pt;" border="0"&gt;&lt;colgroup&gt;&lt;col style="WIDTH: 302px"&gt;&lt;col style="WIDTH: 59px"&gt;&lt;col style="WIDTH: 277px"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; BORDER-TOP: #4f81bd 1pt solid; PADDING-LEFT: 3px; BORDER-LEFT: medium none; BORDER-BOTTOM: #4f81bd 1pt solid"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; BORDER-TOP: #4f81bd 1pt solid; PADDING-LEFT: 3px; BORDER-LEFT: medium none; BORDER-BOTTOM: #4f81bd 1pt solid"&gt; &lt;/td&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; BORDER-TOP: #4f81bd 1pt solid; PADDING-LEFT: 3px; BORDER-LEFT: medium none; BORDER-BOTTOM: #4f81bd 1pt solid"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr style="BACKGROUND: #d3dfee"&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-LEFT: medium none"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;&amp;lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 7px; PADDING-LEFT: 3px; BORDER-LEFT: medium none"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;Required&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-LEFT: medium none"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;     &amp;lt;url&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;Required&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr style="BACKGROUND: #d3dfee"&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-LEFT: medium none"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;        &amp;lt;loc&amp;gt;http://www.example.com/index.html&amp;lt;/loc&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-LEFT: medium none"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;Required&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-LEFT: medium none"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;        &amp;lt;lastmod&amp;gt;2005-01-01&amp;lt;/lastmod&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;Optional&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px"&gt;&lt;p&gt;&lt;a href="http://www.w3.org/TR/NOTE-datetime"&gt;W3C Datetime standard&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="BACKGROUND: #d3dfee"&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-LEFT: medium none"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;        &amp;lt;changefreq&amp;gt;monthly&amp;lt;/changefreq&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-LEFT: medium none"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;Optional&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-LEFT: medium none"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;[alwayshourlydailyweeklymonthlyyearlynever]&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;        &amp;lt;priority&amp;gt;0.8&amp;lt;/priority&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;Optional&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;Default = 0.5&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="BACKGROUND: #d3dfee"&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-LEFT: medium none"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;    &amp;lt;/url&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-LEFT: medium none"&gt; &lt;/td&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-LEFT: medium none"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-BOTTOM: #4f81bd 1pt solid"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;&amp;lt;/urlset&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-BOTTOM: #4f81bd 1pt solid"&gt; &lt;/td&gt;&lt;td style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-BOTTOM: #4f81bd 1pt solid"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;All the data in Sitemap must be entity-escaped, UTF-8 encoded. Sitemaps have an upper limit of 50,000URLs and 10MB size per Sitemap. Sample Sitemap.xml.&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;Location&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;Sitemap.xml file is usually located under the high-level directory of your website (&lt;code&gt;http://www.yourwebsite.com/Sitemap.xml&lt;/code&gt;). This is not a requirement but highly recommended. The location of a Sitemap.xml decides the URLs it can contain in it. So if the Sitemap.xml is located under www.youwebsite.com/product/Sitemap.xml, the Sitemap.xml can only contain URLs for pages under &lt;code&gt;http://www.yourwebsite.com/product/&lt;/code&gt; which also means all the URLs in a Sitemap.xml must be for the same host. You also need to specify path to your Sitemap.xml in robots.txt.&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;Sitemapindex&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;Sitemapindex groups multiple Sitemap files together with a Sitemap element entry for each Sitemap file location on your website. There is an upper limit of 1,000 Sitemap per website. A Sitemapindex can only group Sitemap of the same website and as with Sitemap, all the data in Sitemapindex should entity escaped and UTF-8 encoded. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table style="BORDER-COLLAPSE: collapse;font-size:10pt;"  border="0"&gt;&lt;colgroup&gt;&lt;col style="WIDTH: 480px"&gt;&lt;col style="WIDTH: 69px"&gt;&lt;col style="WIDTH: 200px"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; BORDER-TOP: #4f81bd 1pt solid; PADDING-LEFT: 3px; BORDER-LEFT: medium none; BORDER-BOTTOM: #4f81bd 1pt solid"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; BORDER-TOP: #4f81bd 1pt solid; PADDING-LEFT: 3px; BORDER-LEFT: medium none; BORDER-BOTTOM: #4f81bd 1pt solid"&gt; &lt;/td&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; BORDER-TOP: #4f81bd 1pt solid; PADDING-LEFT: 3px; BORDER-LEFT: medium none; BORDER-BOTTOM: #4f81bd 1pt solid"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr style="BACKGROUND: #d3dfee"&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-LEFT: medium none"&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:#365f91;"&gt;&amp;lt;sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; PADDING-LEFT: 7px; BORDER-LEFT: medium none"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;Required&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-LEFT: medium none"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 7px; PADDING-LEFT: 3px"&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:#365f91;"&gt;     &amp;lt;sitemap&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;Required&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr style="BACKGROUND: #d3dfee"&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-LEFT: medium none"&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:#365f91;"&gt;    &amp;lt;loc&amp;gt;http://www.yourwebsite.com/sitemap1.xml&amp;lt;/loc&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-LEFT: medium none"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;Required&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-LEFT: medium none"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px"&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color:#365f91;"&gt;       &amp;lt;lastmod&amp;gt;2009-01-31&amp;lt;/lastmod&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;Optional&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px"&gt;&lt;p&gt;&lt;a href="http://www.w3.org/TR/NOTE-datetime"&gt;W3C Datetime standard&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="BACKGROUND: #d3dfee"&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-LEFT: medium none"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;&amp;lt;/sitemap&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-LEFT: medium none"&gt; &lt;/td&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-LEFT: medium none"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-BOTTOM: #4f81bd 1pt solid"&gt;&lt;p&gt;&lt;span style="color:#365f91;"&gt;&amp;lt;/sitemapindex&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-BOTTOM: #4f81bd 1pt solid"&gt; &lt;/td&gt;&lt;td style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BORDER-BOTTOM: #4f81bd 1pt solid"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;h3&gt;Submitting Sitemap &lt;/h3&gt;&lt;p&gt;&lt;strong&gt;1. Through robots.txt&lt;br /&gt;&lt;/p&gt;&lt;/strong&gt;&lt;p&gt;Specify the location of your Sitemap.xml in robots.txt&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Sitemap: &lt;code&gt;http://yourwebsite.com/sitemap.xml&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;strong&gt;2. Thru Search Engine Submission Interface&lt;br /&gt;&lt;/p&gt;&lt;/strong&gt;&lt;p&gt;Most search engine provide interface to submit Sitemap, some also provide tools to generate one for your website.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.google.com/support/webmasters/bin/answer.py?answer=34575&amp;amp;topic=13451"&gt;Google Sitemap Submission interface&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://code.google.com/p/googlesitemapgenerator/"&gt;Google Sitemap Generator&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.ask.com/bar?q=yahoo+sitemap+submission&amp;amp;page=1&amp;amp;qsrc=145&amp;amp;zoom=Free+Url+SubmissionDominance+and+SubmissionSubmission+to+God&amp;amp;ab=0&amp;amp;u=http%3A%2F%2Fsiteexplorer.search.yahoo.com%2F"&gt;Yahoo Sitemap Submission interface&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt; 3. Via PING URL&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;&amp;lt;SearchEngineURL&amp;gt;/ping?sitemap=http%3A%2F%2Fwww.yourwebsite.com%2Fsitemap.xml&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="font-family:Courier;"&gt;Google ping URL -www.google.com/webmasters/tools/ping?sitemap=http%3A%2F%2Fwww.yourwebsite.com%2Fsitemap.xml&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;BR&gt;&lt;/BR&gt;&lt;span style="font-family:Courier;"&gt;Ask ping URL - http://submissions.ask.com/ping?sitemap=http%3A%2F%2Fwww.yourwebsite.com%2Fsitemap.xml&lt;/span&gt;&lt;/code&gt;&lt;BR&gt;&lt;/BR&gt;&lt;code&gt;&lt;span style="font-family:Courier;"&gt;Yahoo ping URL - http://search.yahooapis.com/SiteExplorerService/V1/updateNotification?appid=YahooDemo&amp;amp;url=http%3A%2F%2Fwww.yourwebsite.com%2Fsitemap.xml&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;Here the SearchEnginerURL is the URL of the search engine you would like to submit the Sitemap to. Once you receive the HTTP 200 response, you know that the search engine received your Sitemap (although it does not guarantee that your site is valid). The ping request can be issued from wget, curl or any other mechanism.&lt;/p&gt; &lt;br /&gt;&lt;h3&gt;Other Formats of Sitemap&lt;/h3&gt;&lt;p&gt;Although the other formats carry limited information about your website, sometimes they can come in handy for the Sitemap submission.&lt;/p&gt;&lt;p&gt;&lt;b&gt;RSS /ATOM Feed&lt;/b&gt; – RSS feeds can also be submitted as&lt;br /&gt;Sitemaps. The &amp;lt;link&amp;gt; in the feed is interpreted as the URL to the page and &amp;lt;&lt;span&gt;pubDate&lt;/span&gt;&amp;gt; or &amp;lt;modified&amp;gt; field is interpreted as last&lt;br /&gt;modified info by search engine robots.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Text File&lt;/b&gt; – A simple text file containing URL to your web pages per line can be submitted as Sitemap. &lt;/p&gt;&lt;p&gt;The text file must be UTF-8 encoded and must not have any comment lines. A text file can have 50,000 URLs and should be no larger than 10MB. The text file can be separated at Sitemap into several text files with list of URLs (less than 50,000) and each file can be submitted separately. The text file must be in the highest level directory of your website.&lt;/p&gt;&lt;p&gt;There are more formats of Sitemap which are accepted by search engines to satisfy different data formats, such as, video sitemap,&lt;br /&gt;mobile sitemap, news sitemap, code search sitemap etc. Also not all search&lt;br /&gt;engines support them. If interested in these sitemap&lt;br /&gt;content, please refer &lt;a href="http://www.google.com/support/webmasters/bin/answer.py?answer=34654&amp;amp;topic=13452"&gt;Google Webmaster Help&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Compressing Sitemap&lt;/h3&gt;&lt;p&gt;You can compress the Sitemap xml or text file and provide the link to the compressed file in your links or submissions and is accepted per Sitemap standard.&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse; background: #c6d9f1;font-size=10pt;'&gt;&lt;colgroup&gt;&lt;col style='width:454px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none'&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;sitemap&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;loc&amp;gt;http://www.yourwebsite.com/sitemap1.xml.gz&amp;lt;/loc&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;lastmod&amp;gt;2009-01-31&amp;lt;/lastmod&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/sitemap&amp;gt;&lt;br /&gt;&amp;lt;/sitemapindex&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;h3&gt;Sitemap Validation&lt;/h3&gt;&lt;p&gt;Schema for validating sitemaps can be downloaded from:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Sitemap Schema:&lt;/strong&gt;&lt;br /&gt;&lt;a href='http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd'&gt;http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd&lt;/a&gt;&lt;/p&gt;&lt;p&gt;XML header for referring the xsd will change to-&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse; background: #c6d9f1;font-size:10pt;'&gt;&lt;colgroup&gt;&lt;col style='width:599px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none'&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version='1.0' encoding='UTF-8'?&amp;gt;&lt;br /&gt;&amp;lt;urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;         xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9"&lt;br /&gt;         url="http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"&lt;br /&gt;         xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"&amp;gt;&lt;br /&gt;   &amp;lt;url&amp;gt;&lt;br /&gt;      ...&lt;br /&gt;   &amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;/urlset&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Sitemap index Schema:&lt;/strong&gt;&lt;a href='http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd'&gt;http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd&lt;/a&gt;&lt;/p&gt;&lt;p&gt;XML header for referring the xsd will change to&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse; background: #c6d9f1; font-size:10pt;'&gt;&lt;colgroup&gt;&lt;col style='width:599px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none'&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version='1.0' encoding='UTF-8'?&amp;gt;&lt;br /&gt;&amp;lt;sitemapindex xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;         xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9"&lt;br /&gt;         url="http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd"&lt;br /&gt;         xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"&amp;gt;&lt;br /&gt;   &amp;lt;sitemap&amp;gt;&lt;br /&gt;      ...&lt;br /&gt;   &amp;lt;/sitemap&amp;gt;&lt;br /&gt;&amp;lt;/sitemapindex&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;For specific questions related to generating or writing Sitemap for your website, please reach me at &lt;a href="mailto:bhawnablog@gmail.com"&gt;bhawnablog@gmail.com&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8791131963330037643-3875508644483397612?l=everydaydeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://everydaydeveloper.blogspot.com/feeds/3875508644483397612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://everydaydeveloper.blogspot.com/2009/03/creating-xml-site-map.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/3875508644483397612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/3875508644483397612'/><link rel='alternate' type='text/html' href='http://everydaydeveloper.blogspot.com/2009/03/creating-xml-site-map.html' title='Creating XML Site Map'/><author><name>BhawnaSingh</name><uri>http://www.blogger.com/profile/08221026032958536730</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8791131963330037643.post-6645827922337209084</id><published>2009-03-08T01:24:00.000-08:00</published><updated>2009-03-16T13:12:57.648-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='search engine optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='organic SEO'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><category scheme='http://www.blogger.com/atom/ns#' term='search engine'/><title type='text'>Organic SEO Best Practices Checklist</title><content type='html'>&lt;span xmlns=''&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse;'&gt;&lt;colgroup&gt;&lt;col style='width:71px'/&gt;&lt;col style='width:435px'/&gt;&lt;col style='width:330px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr style='height: 45px'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91; font-size:12pt'&gt;&lt;strong&gt;The DOs&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none'&gt;&lt;p style='text-align: center'&gt;&lt;span style='color:#365f91; font-size:12pt'&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none'&gt;&lt;p style='text-align: center'&gt;&lt;span style='color:#365f91; font-size:12pt'&gt;&lt;strong&gt;TIPs&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 45px; background: #d3dfee'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Title Tag&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;&amp;lt;title&amp;gt;keyword in the Title&amp;lt;/Title&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;ul&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;&amp;lt; 60-65 characters including spaces.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;First 3 words in any combination will lead to keyword phrase.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 45px'&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Image Tag&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;&amp;lt;img src="" alt="keyword in the alternate text"/&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;ul&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;Alt is another opportunity to add keywords&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;Add only image related text in &lt;strong&gt;Alt&lt;/strong&gt;&lt;br /&gt;          &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;Create short and meaningful alt text&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 45px; background: #d3dfee'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Anchors&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;&amp;lt;a href="link to a related website"&amp;gt;keyword&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;ul&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;Text based links&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;As long as it is a important keyword text and the link is relevant, anchor it&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;Avoid broken links&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;Use anchor text for linking to relevant dynamic content (crawlers will favor you)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 45px'&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Meta Tags&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;&amp;lt;meta name="keyword" content="related keyword list"/&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;&amp;lt;meta name="description" content="short description of your website with few keywords"/&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;ul&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;&amp;lt;200 characters (description)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;Do not repeat exact title in description&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;Avoid keyword repetition&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 45px; background: #d3dfee'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Header Tags&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;&amp;lt;h1&amp;gt;&amp;lt;/h1&amp;gt;,&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;&amp;lt;h2&amp;gt;&amp;lt;/h2&amp;gt;,&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;&amp;lt;h3&amp;gt;&amp;lt;/h3&amp;gt;,&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;&amp;lt;h4&amp;gt;&amp;lt;/h4&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;ul&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;Most important &amp;lt;h1&amp;gt;------&amp;gt; less important &amp;lt;h4&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;&amp;lt;h1&amp;gt; occurrence – 2 at most &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 45px'&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;URL &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;&lt;em&gt;Parameter&lt;/em&gt;: http://www.yoursite.com/products.jsp?id=12356&amp;amp;category=7&amp;amp;type=42&amp;amp;size=6&amp;amp;batch=65&lt;br /&gt;         &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;&lt;em&gt;Depth&lt;/em&gt;: http://www.yoursite.com/products/category/batch/season/item&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;ul&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;Max parameters: 2&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;Max depth: 4&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 45px; background: #d3dfee'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Inbound Links&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt; &lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;ul&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;As many strong inbound links, the better&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;Request links, write articles with link to your site, PR, social network community, paid links&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 45px'&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Visible Body Text&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;&amp;lt;body&amp;gt;body text&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;ul&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;Use &amp;lt;strong&amp;gt;&amp;lt;/strong&amp;gt; for relevant keywords&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;Use &amp;lt;em&amp;gt;&amp;lt;/em&amp;gt; for relevant keywords&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 45px; background: #d3dfee'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Sitemap&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;XML based document at the root of your website.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;http://www.yourwebsite.com/sitemap.xml&lt;/span&gt;&lt;span style='color:#365f91; font-size:10pt'&gt;&lt;br /&gt;         &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;&lt;span style='color:#365f91'&gt;Learn more about &lt;a href='http://everydaydeveloper.blogspot.com/2009/03/creating-xml-site-map.html'/&gt;writing Sitemap&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;ul&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;&amp;lt; 50,000 URLs  and 10MB size per site map&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;&amp;lt;1,000 site maps, per website, if multiple site maps used&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;Submit Site to the search engines&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 45px'&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Navigation&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt; &lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;ul&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;Text based navigation on the left&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 45px; background: #d3dfee'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Domain Name&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt; &lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;ul&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;If new website, try using keyword in domain name to specifically define the content of your website&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 45px'&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Bread-crumb trail&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;On your web page, provides navigation depth info. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;Home &amp;gt; kids &amp;gt; Toys &amp;gt; 4T – 5T&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;ul&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;Use your website name instead of HOME&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 45px; background: #d3dfee'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;FAQs&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;FAQs of popular searches related to your product&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;ul&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;4-15 questions&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;200-800 words for each FAQ.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 45px'&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Popular Search List&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;Maintain a list of popular /most frequently searched items/ keywords related to your product /website on very web page.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;ul&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;The search list should be relevant and should link to pages in your website.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 45px; background: #d3dfee'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Robots.txt&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;Learn more about &lt;a href='http://everydaydeveloper.blogspot.com/2009/03/keeping-search-robots-away.html'&gt;robots.txt&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;ul&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;Suggest crawlers on pages to crawl and pages to avoid&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;Helps in logging search engine visits&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 45px'&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Company Address&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;Company Name, Street Address, City, State, Zip, Country, Phone#&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;ul&gt;&lt;li&gt;&lt;span style='font-size:10pt'&gt;Provides visibility in location search&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 45px; background: #d3dfee'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Contact Statement&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none'&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;If you need more info, please contact ……&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none'&gt;&lt;ul&gt;&lt;li&gt;&lt;div&gt;&lt;span style='font-size:10pt'&gt;Instead,&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span style='font-size:10pt'&gt;If you need more info about &amp;lt;yourproductname&amp;gt;, please contact …..&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse;'&gt;&lt;colgroup&gt;&lt;col style='width:148px'/&gt;&lt;col style='width:688px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr style='height: 54px'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91; font-size:12pt'&gt;&lt;strong&gt;The DON'Ts&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-top:  solid #4f81bd 1.0pt; border-left:  none; border-bottom:  solid #4f81bd 1.0pt; border-right:  none' colspan='2'&gt;&lt;p style='text-align: center'&gt;&lt;span style='color:#365f91; font-size:12pt'&gt;&lt;strong&gt;The Fix&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 54px; background: #d3dfee'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Duplicate URLs&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none;font-size:10pt;' colspan='2'&gt;&lt;ul&gt;&lt;li&gt;&lt;div&gt;Use canonical link tag in the &amp;lt;head&amp;gt; section of all the duplicate pages to point to the original web page content:&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&amp;lt;link rel="canonical" href=http://yourwebsite.com/product.html"/&amp;gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 54px'&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Broken Links&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px;font-size:10pt;' colspan='2'&gt;&lt;ul&gt;&lt;li&gt;Fix them!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Add nofollow keyword to the link suggesting the search crawler to not visit the link&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 54px; background: #d3dfee'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Cookies&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none;font-size:10pt;'&gt;&lt;ul&gt;&lt;li&gt;Un restrict cookies&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Set some default content when cookie is unavailable.&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 54px'&gt;&lt;td style='padding-left: 3px; padding-right: 3px'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Session Ids&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px;font-size:10pt;' colspan='2'&gt;&lt;ul&gt;&lt;li&gt;Generate a guest user and allow to view the un restricted content&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 54px; background: #d3dfee'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;Frames&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-left:  none; border-right:  none;font-size:10pt;' colspan='2'&gt;&lt;ul&gt;&lt;li&gt;Provide alternative to framed web site using the &amp;lt;noframes&amp;gt; tag.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The &amp;lt;noframes&amp;gt; tag content should be exactly the same as frames site content&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Add link to HOME, with attribute TARGET="_top"&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style='height: 54px'&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-bottom:  solid #4f81bd 1.0pt'&gt;&lt;p&gt;&lt;span style='color:#365f91'&gt;&lt;strong&gt;302 redirect&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-left: 3px; padding-right: 3px; border-bottom:  solid #4f81bd 1.0pt;font-size:10pt;' colspan='2'&gt;&lt;ul&gt;&lt;li&gt;Avoid, if possible&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Use robot.txt to avoid crawling this link, if possible&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Add &amp;gt; 15-sec delay before redirecting&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8791131963330037643-6645827922337209084?l=everydaydeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://everydaydeveloper.blogspot.com/feeds/6645827922337209084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://everydaydeveloper.blogspot.com/2009/03/organic-seo-best-practices-checklist.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/6645827922337209084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/6645827922337209084'/><link rel='alternate' type='text/html' href='http://everydaydeveloper.blogspot.com/2009/03/organic-seo-best-practices-checklist.html' title='Organic SEO Best Practices Checklist'/><author><name>BhawnaSingh</name><uri>http://www.blogger.com/profile/08221026032958536730</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8791131963330037643.post-3590315486938562713</id><published>2009-03-02T23:45:00.000-08:00</published><updated>2009-04-15T14:44:27.257-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OPENXML'/><category scheme='http://www.blogger.com/atom/ns#' term='generating XML'/><category scheme='http://www.blogger.com/atom/ns#' term='XSINIL'/><category scheme='http://www.blogger.com/atom/ns#' term='sp_xml_removedocument'/><category scheme='http://www.blogger.com/atom/ns#' term='sp_xml_preparedocument'/><category scheme='http://www.blogger.com/atom/ns#' term='XML NAMESPACES'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='FOR XML PATH'/><title type='text'>Using FOR XML and OPEN XML in MS SQL Server</title><content type='html'>&lt;span xmlns=""&gt;&lt;h1&gt;Generating XML from Tables&lt;br /&gt;&lt;/h1&gt;&lt;p&gt;&lt;span style="font-size:10;"&gt;When working with XML files, importing and exporting data from and into XML file, we 'FOR XML' clause made available by MS SQL server can come in very handy. This clause make it possible to completely eliminate the need of conversion code to represent data in XML or read data from an XML file into database. Since we use XML to represent our data and interact with our modules, it makes a lot of sense to get familiar with this clause.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10;"&gt;Let's start with creating the wordlist table which has the most frequent search terms and its language-&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;table style="BORDER-COLLAPSE: collapse" border="0"&gt;&lt;colgroup&gt;&lt;col style="WIDTH: 20px"&gt;&lt;col style="WIDTH: 54px"&gt;&lt;col style="WIDTH: 65px"&gt;&lt;col style="WIDTH: 68px"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;&lt;strong&gt;ID&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;&lt;strong&gt;Words&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;&lt;strong&gt;Frequency&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;&lt;strong&gt;Language&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;1&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;hello&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;87&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;English&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;2&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;bonjour&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;59&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;French&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;3&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;Bye&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;56&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;English&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;4&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;hola&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;44&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;Spanish&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;5&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;gibberish&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;5&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:10;"&gt;NULL&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-size:10;"&gt;&lt;h3&gt;Generate flat file from database tables&lt;br /&gt;&lt;/h3&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10;"&gt;Often we need to create a delimited list of data and when the data is in the database-&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; words &lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:red;"&gt;','&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:fuchsia;"&gt;convert&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; frequency&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:red;"&gt;','&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:fuchsia;"&gt;ISNULL&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;language&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:red;"&gt;''&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:red;"&gt;'|'&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;FROM&lt;/span&gt; wordList&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;ORDER&lt;/span&gt;&lt;span style="color:blue;"&gt;BY&lt;/span&gt; frequency &lt;span style="color:blue;"&gt;DESC&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;FOR &lt;/span&gt;&lt;span style="color:blue;"&gt;XML PATH&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;''&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;Which will generate a list of pipe separated words which can further be used in a SQL query or be saved in a table to be used by another process.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:10;color:blue;"&gt;hello,87,English|bonjour,59,French|Bye,56,English|hola,44,Spanish|gibberish,5,|&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10;"&gt;&lt;h3&gt;Generating XML from table records.&lt;br /&gt;&lt;/h3&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10;"&gt;Now let's generate the following XML file from the above data.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Term &lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;1&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Word &lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;xml:language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;English&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;hello&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Word&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;87&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Term &lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Term &lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;2&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Word &lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;xml:language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;French&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;bonjour&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Word&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;59&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Term&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10;"&gt;Notice how the elements and attributes are specified&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt;&lt;span style="color:blue;"&gt; TOP&lt;/span&gt; 2 ID &lt;span style="color:blue;"&gt;AS&lt;/span&gt;&lt;span style="color:red;"&gt;'@id'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; language &lt;span style="color:red;"&gt;'Word/@xml:language'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; words &lt;span style="color:red;"&gt;'Word'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; frequency &lt;span style="color:red;"&gt;'frequency'&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;FROM&lt;/span&gt; wordList&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;ORDER&lt;/span&gt;&lt;span style="color:blue;"&gt; BY&lt;/span&gt; frequency &lt;span style="color:blue;"&gt;DESC&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;FOR &lt;/span&gt;&lt;span style="color:blue;"&gt;XML&lt;/span&gt;&lt;span style="color:blue;"&gt; PATH&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'Term'&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10;"&gt;&lt;h3&gt;Adding namespace and root element&lt;br /&gt;&lt;/h3&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10;"&gt;WITH XMLNAMESPACES allows you to provide namespace in the XML generated by the FOR XML clause and ROOT keyword will allow us to add a root tag to the generated XML as below.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;WITH &lt;/span&gt;&lt;span style="color:blue;"&gt;XMLNAMESPACES&lt;/span&gt;&lt;/strong&gt;&lt;span style="color:gray;"&gt;( &lt;/span&gt;&lt;span style="color:red;"&gt;'uri1'&lt;/span&gt;&lt;span style="color:blue;"&gt;as&lt;/span&gt; ns1&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:blue;"&gt;DEFAULT&lt;/span&gt;&lt;span style="color:red;"&gt;'uri'&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color:blue;"&gt;TOP&lt;/span&gt; 2 ID &lt;span style="color:blue;"&gt;as&lt;/span&gt;&lt;span style="color:red;"&gt;'@id'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; language &lt;span style="color:red;"&gt;'ns1:Word/@xml:language'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; words &lt;span style="color:red;"&gt;'ns1:Word'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; frequency &lt;span style="color:red;"&gt;'frequency'&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;FROM&lt;/span&gt; wordList&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;ORDER&lt;/span&gt;&lt;span style="color:blue;"&gt; BY&lt;/span&gt; frequency &lt;span style="color:blue;"&gt;DESC&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;FOR &lt;/span&gt;&lt;span style="color:blue;"&gt;XML&lt;/span&gt;&lt;span style="color:blue;"&gt; PATH&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'Term'&lt;/span&gt;&lt;span style="color:gray;"&gt;),&lt;/span&gt;&lt;span style="color:blue;"&gt; ROOT&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'WordFrequencyList'&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;WordFrequencyList &lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;uri&lt;/span&gt;"&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt; xmlns:ns1&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;uri1&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Term &lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;1&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;ns1:Word &lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;xml:language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;English&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;hello&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;ns1:Word&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;87&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Term&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Term &lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;2&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;ns1:Word &lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;xml:language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;French&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;bonjour&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;ns1:Word&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;59&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Term&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;WordFrequencyList&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10;"&gt;&lt;h3&gt;Using XSINIL directive for null values&lt;/h3&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10;"&gt;With XSINIL directive we can add all the null values to the elements with xsi:nil directive set to true.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; ID &lt;span style="color:blue;"&gt;as&lt;/span&gt;&lt;span style="color:red;"&gt; '@id'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; words &lt;span style="color:red;"&gt;'Word'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; frequency &lt;span style="color:red;"&gt;'Frequency'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:blue;"&gt;language&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;FROM&lt;/span&gt; wordList&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;WHERE&lt;/span&gt; ID &lt;span style="color:gray;"&gt;=&lt;/span&gt;&lt;span style="color:red;"&gt;'5' &lt;/span&gt;&lt;span style="color:green;"&gt;--IGNORE: Added to get only one result in the output.&lt;/span&gt;&lt;span style="color:red;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;ORDER &lt;/span&gt;&lt;span style="color:blue;"&gt;BY &lt;/span&gt;frequency &lt;span style="color:blue;"&gt;DESC&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;FOR&lt;/span&gt;&lt;span style="color:blue;"&gt; XML &lt;/span&gt;&lt;span style="color:blue;"&gt;PATH&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'Term'&lt;/span&gt;&lt;span style="color:gray;"&gt;),&lt;/span&gt;&lt;span style="color:blue;"&gt; ROOT&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'WordFrequencyList'&lt;/span&gt;&lt;span style="color:gray;"&gt;),&lt;/span&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt; ELEMENTS &lt;/span&gt;&lt;span style="color:blue;"&gt;XSINIL&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;WordFrequencyList &lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;a href="http://www.w3.org/2001/XMLSchema-instance"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/a&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Term &lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;5&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Word&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;gibberish&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Word&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;5&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color:maroon;"&gt;language &lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;xsi:nil&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;true&lt;/span&gt;"&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Term&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:10;"&gt;&lt;span style="font-family:Courier New;color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family:Courier New;color:maroon;"&gt;WordFrequencyList&lt;/span&gt;&lt;span style="font-family:Courier New;color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10;"&gt;Now that I have your attention on the power FOR XML clause provides while working with XML documents, let us understand the FOR XML clause in further detail&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10;"&gt;FOR XML clause has 4 modes-&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;div&gt;&lt;table style="BORDER-COLLAPSE: collapse" border="0"&gt;&lt;colgroup&gt;&lt;col style="WIDTH: 624px"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; BORDER-TOP: #4f81bd 1pt solid; PADDING-LEFT: 3px; BORDER-LEFT: medium none; BORDER-BOTTOM: #4f81bd 1pt solid"&gt;&lt;span style="font-size:10;color:#365f91;"&gt;&lt;strong&gt;&lt;strong&gt;RAW – With RAW mode each not NULL column value in the rowset is mapped to an XML attribute value of &lt;/strong&gt;&amp;lt;row&amp;gt;&lt;strong&gt; element.&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;table style="BORDER-COLLAPSE: collapse" border="0"&gt;&lt;colgroup&gt;&lt;col style="WIDTH: 250px"&gt;&lt;col style="WIDTH: 450px"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr style="BACKGROUND: #d3dfee; HEIGHT: 70px"&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; BORDER-TOP: medium none; PADDING-LEFT: 3px; BORDER-LEFT: medium none" colspan="2"&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt;&lt;span style="color:#365f91;"&gt; ID &lt;/span&gt;&lt;span style="color:blue;"&gt;as&lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;'@id'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:#365f91;"&gt; words &lt;/span&gt;&lt;span style="color:red;"&gt;'Word'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:#365f91;"&gt; frequency &lt;/span&gt;&lt;span style="color:red;"&gt;'Frequency'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;language&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;span style="color:blue;"&gt;FROM&lt;/span&gt;&lt;span style="color:#365f91;"&gt; wordList&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;span style="color:blue;"&gt;ORDER &lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;BY&lt;/span&gt;&lt;span style="color:#365f91;"&gt; frequency &lt;/span&gt;&lt;span style="color:blue;"&gt;DESC&lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;span style="color:blue;"&gt;FOR&lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt; XML &lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;RAW&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; BORDER-TOP: medium none; PADDING-LEFT: 3px; BORDER-LEFT: medium none; BORDER-BOTTOM: 0.5pt solid"&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;row&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;_x0040_id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;1&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;Word&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;hello&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;87&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;English&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;row&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;_x0040_id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;2&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;Word&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;bonjour&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;59&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;French&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;row&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;_x0040_id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;3&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;Word&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;Bye&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;56&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;English&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;row&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;_x0040_id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;4&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;Word&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;hola&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;44&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;Spanish&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;row&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;_x0040_id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;5&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;Word&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;gibberish&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;5&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;table style="BORDER-COLLAPSE: collapse" border="0"&gt;&lt;colgroup&gt;&lt;col style="WIDTH: 624px"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; BORDER-TOP: #4f81bd 1pt solid; PADDING-LEFT: 3px; BORDER-LEFT: medium none; BORDER-BOTTOM: #4f81bd 1pt solid"&gt;&lt;span style="font-size:10;color:#365f91;"&gt;&lt;strong&gt;AUTO– With AUTO mode the query result forms simple nested XML hierarchy. It does not allow you to control the hierarchy. It uses heuristics in shaping the XML which leads to nested XML for nested queries.&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;table style="BORDER-COLLAPSE: collapse" border="0"&gt;&lt;colgroup&gt;&lt;col style="WIDTH: 250px"&gt;&lt;col style="WIDTH: 560px"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr style="BACKGROUND: #d3dfee; HEIGHT: 70px"&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; BORDER-TOP: medium none; PADDING-LEFT: 3px; BORDER-LEFT: medium none"&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt;&lt;span style="color:#365f91;"&gt; ID &lt;/span&gt;&lt;span style="color:blue;"&gt;as&lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;'@id'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:#365f91;"&gt; words &lt;/span&gt;&lt;span style="color:red;"&gt;'Word'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:#365f91;"&gt; frequency &lt;/span&gt;&lt;span style="color:red;"&gt;'Frequency'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;language&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;FROM&lt;/span&gt;&lt;span style="color:#365f91;"&gt; wordList&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;span style="color:blue;"&gt;ORDER&lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt; BY &lt;/span&gt;&lt;span style="color:#365f91;"&gt; frequency &lt;/span&gt;&lt;span style="color:blue;"&gt;DESC&lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;span style="color:blue;"&gt;FOR &lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;XML &lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;RAW &lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;br /&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; BORDER-TOP: medium none; PADDING-LEFT: 3px; BORDER-LEFT: medium none; BORDER-BOTTOM: 0.5pt solid" colspan="2"&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;wordList&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;_x0040_id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;1&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;Word&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;hello&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;87&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;English&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;wordList&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;_x0040_id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;2&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;Word&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;bonjour&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;59&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;French&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;wordList&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;_x0040_id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;3&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;Word&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;Bye&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;56&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;English&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;wordList&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;_x0040_id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;4&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;Word&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;hola&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;44&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;Spanish&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;wordList&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;_x0040_id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;5&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;Word&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;gibberish&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt;5&lt;/span&gt;&lt;span style="color:#365f91;"&gt;"&lt;/span&gt;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;table style="BORDER-COLLAPSE: collapse" border="0"&gt;&lt;colgroup&gt;&lt;col style="WIDTH: 624px"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; BORDER-TOP: #4f81bd 1pt solid; PADDING-LEFT: 3px; BORDER-LEFT: medium none; BORDER-BOTTOM: #4f81bd 1pt solid"&gt;&lt;span style="font-size:10;color:#365f91;"&gt;&lt;strong&gt;PATH – With PATH mode we can construct nested XML and can control the mix of elements and attributes. This mode considers column names (or aliases) as XPATH expressions. Examples for PATH mode is discussed in the first section of this document above.&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;table style="BORDER-COLLAPSE: collapse" border="0"&gt;&lt;colgroup&gt;&lt;col style="WIDTH: 624px"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; BORDER-TOP: #4f81bd 1pt solid; PADDING-LEFT: 3px; BORDER-LEFT: medium none; BORDER-BOTTOM: #4f81bd 1pt solid"&gt;&lt;span style="font-size:10;color:#365f91;"&gt;&lt;strong&gt;EXPLICIT – With EXPLICIT mode the table must be in a specific format which defines the XML hierarchy. It expects the TAG and PARENT column to appear first. The EXPLICIT mode queries can get a bit cumbersome so why not stay with PATH mode which gives us enough flexibility to generate XML with nested hierarchy.&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;h1&gt;Generating Tables from XML documents&lt;/h1&gt;&lt;span style="font-size:10;"&gt;The &lt;strong&gt;OPENXML&lt;/strong&gt;, a SQL keyword, generates a dynamic in-memory table representation of the XML document where the OPENXML can be used in SELECT and SELECT INTO statements. Stored procedure, &lt;strong&gt;sp_xml_prepareddocument&lt;/strong&gt;, should be called before OPENXML, as this stored procedure parses the XML document, generates in-memory (DOM) representation of the document and provides OPENXML with the handle to generate the tabular representation from the XML Dom structure.&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;img src="http://1.bp.blogspot.com/_AEF1CFRh8uE/Sbqt_kiGlWI/AAAAAAAADyQ/V1fbBDd85T4/s320/blog_FOROPENXML_process-706286.JPG"  border="0" alt="Generating Table from XML Document Process Flow" id="BLOGGER_PHOTO_ID_5312743629476802082"/&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:10;"&gt;Do not forget to call sp_xml_removedocument stored procedure in the end to free the memory held by in-memory DOM structure.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10;"&gt;&lt;h3&gt;The Process of converting XML document into table&lt;br /&gt;&lt;/h3&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:10;"&gt;To understand the generation of table structure from an XML document let us take the following XML document as our sample.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;WordFrequencyList&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Term &lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;1&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Word &lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;xml:language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;English&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;hello&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Word&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;87&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Term&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Term &lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;2&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Word &lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;xml:language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;French&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;bonjour&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Word&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;59&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Term&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;WordFrequencyList&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:10;"&gt;We can pass this XML document as an argument to our stored procedure or read it directly as a file. For the sake of understanding the concept we are discussing I will define the XML in our stored procedure itself.&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;table style="BORDER-COLLAPSE: collapse" border="0"&gt;&lt;colgroup&gt;&lt;col style="WIDTH: 638px"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; BORDER-TOP: #4f81bd 1pt solid; PADDING-LEFT: 3px; BORDER-LEFT: medium none; BORDER-BOTTOM: #4f81bd 1pt solid"&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;DECLARE&lt;/span&gt;&lt;span style="color:#365f91;"&gt; @hxmldoc &lt;/span&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;DECLARE&lt;/span&gt;&lt;span style="color:#365f91;"&gt; @xmldoc &lt;/span&gt;&lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:#365f91;"&gt;500&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt;&lt;span style="color:#365f91;"&gt; @xmldoc &lt;/span&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;&lt;span style="color:red;"&gt;'&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:red;"&gt;&lt;strong&gt;&amp;lt;WordFrequencyList&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:red;"&gt;&lt;strong&gt;&amp;lt;Term id="1"&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:red;"&gt;&lt;strong&gt;&amp;lt;Word xml:language="English"&amp;gt;hello&amp;lt;/Word&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:red;"&gt;&lt;strong&gt;&amp;lt;Frequency&amp;gt;87&amp;lt;/Frequency&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:red;"&gt;&lt;strong&gt;&amp;lt;/Term&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:red;"&gt;&lt;strong&gt;&amp;lt;Term id="2"&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:red;"&gt;&lt;strong&gt;&amp;lt;Word xml:language="French"&amp;gt;bonjour&amp;lt;/Word&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:red;"&gt;&lt;strong&gt;&amp;lt;Frequency&amp;gt;59&amp;lt;/Frequency&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:red;"&gt;&lt;strong&gt;&amp;lt;/Term&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:red;"&gt;&lt;strong&gt;&amp;lt;/WordFrequencyList&amp;gt;'&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:green;"&gt;&lt;strong&gt;--CALL to sp_xml_preparedocument for generating the in-memory DOM structure&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;EXEC&lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt; sp_xml_preparedocument&lt;/span&gt;&lt;span style="color:#365f91;"&gt; @hxmldoc &lt;/span&gt;&lt;span style="color:blue;"&gt;OUTPUT&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:#365f91;"&gt; @xmldoc&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:green;"&gt;&lt;strong&gt;--CALL to OPENXML in the SELECT INTO SQL query&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;*&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;INTO&lt;/span&gt;&lt;span style="color:#365f91;"&gt; WordFreq&lt;/span&gt;&lt;span style="color:gray;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;OPENXML&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:#365f91;"&gt;@hxmldoc&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;'/WordFrequencyList/Term'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:#365f91;"&gt;1&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;WITH &lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:#365f91;"&gt;ID &lt;/span&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;&lt;span style="color:#365f91;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;'@id'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:#365f91;"&gt;words &lt;/span&gt;&lt;span style="color:blue;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:#365f91;"&gt;50&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:#365f91;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;'Word'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:#365f91;"&gt;frequency &lt;/span&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;&lt;span style="color:#365f91;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;'Frequency'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;language&lt;/span&gt;&lt;span style="color:#365f91;"&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:#365f91;"&gt;50&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:#365f91;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;'Word/@xml:language'&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:gray;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;EXEC&lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;sp_xml_removedocument&lt;/span&gt;&lt;span style="color:#365f91;"&gt; @hxmldoc&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:10;"&gt;&lt;strong&gt;Result-&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;table style="BORDER-COLLAPSE: collapse" border="0"&gt;&lt;colgroup&gt;&lt;col style="WIDTH: 30px"&gt;&lt;col style="WIDTH: 75px"&gt;&lt;col style="WIDTH: 75px"&gt;&lt;col style="WIDTH: 95px"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;span style="font-size:10;"&gt;&lt;strong&gt;ID&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;span style="font-size:10;"&gt;&lt;strong&gt;Words&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;span style="font-size:10;"&gt;&lt;strong&gt;Frequency&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;span style="font-size:10;"&gt;&lt;strong&gt;Language&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;span style="font-size:10;"&gt;1&lt;/span&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;span style="font-size:10;"&gt;hello&lt;/span&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;span style="font-size:10;"&gt;87&lt;/span&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;span style="font-size:10;"&gt;English&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;span style="font-size:10;"&gt;2&lt;/span&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;span style="font-size:10;"&gt;bonjour&lt;/span&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;span style="font-size:10;"&gt;59&lt;/span&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px" valign="center"&gt;&lt;span style="font-size:10;"&gt;French&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;sp_xml_preparedocument takes two arguments, first is the handle to the XML in-memory (DOM) structure which is returned by the procedure once it is executed and second is the XML document itself. We pass this XML document handle to the OPEN XML call to generate table records.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:10;"&gt;&lt;h3&gt;XML Doc with Namespaces&lt;/h3&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10;"&gt;To read XML docs with namespaces there is a third parameter in the sp_xml_preparedocument stored procedure which can be defined. Let us understand this in detail.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;WordFrequencyList &lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;uri&lt;/span&gt;"&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt; xmlns:ns1&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;uri1&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Term &lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;1&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;ns1:Word &lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;xml:language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;English&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;hello&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;ns1:Word&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;87&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Term&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Term&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;2&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;ns1:Word &lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;xml:language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;French&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;bonjour&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;ns1:Word&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;59&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Frequency&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Term&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;WordFrequencyList&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:10;"&gt;In the XML document above, the &lt;strong&gt;WordFrequencyList&lt;/strong&gt;,&lt;strong&gt; Term&lt;/strong&gt;,&lt;strong&gt;&lt;/strong&gt;and&lt;strong&gt; Frequency &lt;/strong&gt;elements belongs to a default namespace defined by &lt;strong&gt;uri&lt;/strong&gt; and element &lt;strong&gt;Word &lt;/strong&gt;belongs to namespace defined by &lt;strong&gt;uri1.&lt;/p&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size:10;"&gt;&lt;p&gt;If we feed this XML to our OPENXML call above we would get an empty table. To address this issue due to namespace, we need to pass the namespace declaration to the sp_xml_preparedocument call.&lt;/p&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;table style="BORDER-COLLAPSE: collapse" border="0"&gt;&lt;colgroup&gt;&lt;col style="WIDTH: 638px"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 3px; BORDER-TOP: #4f81bd 1pt solid; PADDING-LEFT: 3px; BORDER-LEFT: medium none; BORDER-BOTTOM: #4f81bd 1pt solid"&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;DECLARE&lt;/span&gt;&lt;span style="color:#365f91;"&gt; @hxmldoc &lt;/span&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;DECLARE&lt;/span&gt;&lt;span style="color:#365f91;"&gt; @xmldoc &lt;/span&gt;&lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:#365f91;"&gt;500&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;DECLARE&lt;/span&gt;&lt;span style="color:#365f91;"&gt; @xmlns &lt;/span&gt;&lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:#365f91;"&gt;500&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt;&lt;span style="color:#365f91;"&gt; @xmldoc &lt;/span&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;&lt;span style="color:red;"&gt;'&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:red;"&gt;&lt;strong&gt;&amp;lt;WordFrequencyList xmlns="uri" xmlns:ns1="uri1"&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:red;"&gt;&lt;strong&gt;&amp;lt;Term id="1"&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:red;"&gt;&lt;strong&gt;&amp;lt;ns1:Word xml:language="English"&amp;gt;hello&amp;lt;/ns1:Word&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:red;"&gt;&lt;strong&gt;&amp;lt;Frequency&amp;gt;87&amp;lt;/Frequency&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:red;"&gt;&lt;strong&gt;&amp;lt;/Term&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:red;"&gt;&lt;strong&gt;&amp;lt;Term id="2"&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:red;"&gt;&lt;strong&gt;&amp;lt;ns1:Word xml:language="French"&amp;gt;bonjour&amp;lt;/ns1:Word&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:red;"&gt;&lt;strong&gt;&amp;lt;Frequency&amp;gt;59&amp;lt;/Frequency&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:red;"&gt;&lt;strong&gt;&amp;lt;/Term&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:red;"&gt;&lt;strong&gt;&amp;lt;/WordFrequencyList&amp;gt;'&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt;&lt;span style="color:#365f91;"&gt; @xmlns &lt;/span&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;'&amp;lt;root xmlns:wf="uri" xmlns:wf1="uri1" /&amp;gt;'&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:green;"&gt;&lt;strong&gt;--CALL to sp_xml_preparedocument for generating the in-memory DOM structure&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;EXEC &lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;sp_xml_preparedocument&lt;/span&gt;&lt;span style="color:#365f91;"&gt; @hxmldoc &lt;/span&gt;&lt;span style="color:blue;"&gt;OUTPUT&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:#365f91;"&gt; @xmldoc&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:#365f91;"&gt; @xmlns&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:green;"&gt;&lt;strong&gt;--CALL to OPENXML in the SELECT INTO SQL query&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;*&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;INTO&lt;/span&gt;&lt;span style="color:#365f91;"&gt; WordFreq&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;OPENXML&lt;/span&gt;&lt;span style="color:gray;"&gt; (&lt;/span&gt;&lt;span style="color:#365f91;"&gt;@hxmldoc&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;'/wf:WordFrequencyList/wf:Term'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:#365f91;"&gt;1&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;WITH&lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt; (&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:#365f91;"&gt;ID &lt;/span&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;&lt;span style="color:#365f91;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;'@id'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:#365f91;"&gt;words &lt;/span&gt;&lt;span style="color:blue;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:#365f91;"&gt;50&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:#365f91;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;'wf1:Word'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:#365f91;"&gt;frequency &lt;/span&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;&lt;span style="color:#365f91;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;'wf:Frequency'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;language&lt;/span&gt;&lt;span style="color:#365f91;"&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:#365f91;"&gt;50&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:#365f91;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;'wf1:Word/@xml:language'&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;color:gray;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:8;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;EXEC &lt;/span&gt;&lt;span style="color:#365f91;"&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;sp_xml_removedocument&lt;/span&gt;&lt;span style="color:#365f91;"&gt; @hxmldoc&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:10;"&gt;Notice the definition of @xmlns variable. We have used prefix &lt;strong&gt;ws &lt;/strong&gt;and &lt;strong&gt;ws1&lt;/strong&gt; as the prefix as the prefix you use does not have to match the one in the XML document. We then use these prefixes in the OPENXML call to refer to elements in the XML document.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10;"&gt;The examples discussed above, pretty much covers most of the requirements of working with XML document conversion. Please refer to the MSDN in case you have specific requirement. Also you can always email me at &lt;a href="mailto:bhawnablog@gmail.com"&gt;bhawnablog@gmail.com&lt;/a&gt; with your specific questions and I will be more than happy to help you.&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8791131963330037643-3590315486938562713?l=everydaydeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://everydaydeveloper.blogspot.com/feeds/3590315486938562713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://everydaydeveloper.blogspot.com/2009/03/using-for-xml-and-open-xml-in-ms-sql_11.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/3590315486938562713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8791131963330037643/posts/default/3590315486938562713'/><link rel='alternate' type='text/html' href='http://everydaydeveloper.blogspot.com/2009/03/using-for-xml-and-open-xml-in-ms-sql_11.html' title='Using FOR XML and OPEN XML in MS SQL Server'/><author><name>BhawnaSingh</name><uri>http://www.blogger.com/profile/08221026032958536730</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_AEF1CFRh8uE/Sbqt_kiGlWI/AAAAAAAADyQ/V1fbBDd85T4/s72-c/blog_FOROPENXML_process-706286.JPG' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
