home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 September / Chip_2004-09_cd1.bin / chplus / interval / clanek10.htm < prev    next >
Encoding:
Extensible Markup Language  |  2004-08-03  |  20.1 KB  |  244 lines

  1. <?xml version='1.0' encoding='windows-1250'?>
  2. <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
  3. <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='cs' lang='cs'>
  4. <head>
  5. <meta http-equiv='Content-Type' content='text/html; charset=windows-1250' />
  6. <meta http-equiv='Content-language' content='cs' />
  7. <meta http-equiv='Cache-control' content='no-cache' />
  8. <meta http-equiv='Pragma' content='no-cache' />
  9. <meta http-equiv='Expires' content='-1' />
  10. <meta name='robots' content='index,follow' />
  11. <meta name='googlebot' content='index,follow,snippet,noarchive' />
  12. <meta name='description' content='Interval.cz - Internetov² magazφn o webdesignu, v²voji webov²ch aplikacφ a e-komerci. VÜe podstatnΘ o technologiφch XHTML, HTML, CSS, DHTML, JavaScript, XML, .NET, ASP, PHP, Java, J2ME, SQL, WAP...' />
  13. <meta name='keywords' content='Interval' />
  14. <meta name='ICBM' content='49.1915, 16.626' />
  15. <meta name='DC.Title' content='Interval.cz' />
  16. <meta name='DC.Identifier' content='http://interval.cz' />
  17. <meta name='DC.Language' content='cs' />
  18. <meta http-equiv='pics-label' content='(pics-1.1 "http://www.icra.org/ratingsv02.html" comment "ICRAonline EN v2.0" l gen true for "http://interval.cz" r (nz 1 vz 1 lz 1 oz 1 cz 1) "http://www.rsac.org/ratingsv01.html" l gen true for "http://interval.cz" r (n 0 s 0 v 0 l 0))' />
  19. <meta http-equiv='imagetoolbar' content='no' />
  20. <meta http-equiv='MSThemeCompatible' content='no' />
  21. <meta name='MSSmartTagsPreventParsing' content='true' />
  22. <link rel='shortcut icon' type='image/x-icon' href='favicon.ico' />
  23. <link rel='alternate' type='application/rss+xml' title='RSS Interval.cz' href='http://interval.cz/__rss/rss.asp' />
  24. <link rel='home' href='http://interval.cz' />
  25. <link rel='search' href='http://interval.cz/search_ex.asp' />
  26. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/html4.css' />
  27. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/basic_all.css' />
  28. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/homepage_all.css' />
  29. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/articles_all.css' />
  30. <link rel='stylesheet' type='text/css' media='print' href='__services/styles/articles_print.css' />
  31. <title>Interval.cz - webdesign a e-komerce denn∞</title>
  32. </head>
  33. <body class='interval interval-articles'>
  34. <div id='page-header'><div id='interval-logo'><h1 title='Interval.cz - denn∞ o tvorb∞ webu a e-komerci (logo & index link)'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Interval.cz<span></span></a></h1></div><div id='advertising-page-header'></div><div class='page-maker'> </div></div>
  35. <div id='page-topmenu'><h2 class='textversion'>Navigace</h2><div id='page-mainmenu'><h3 class='textversion'>Hlavnφ menu</h3><ul><li class='first selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Titulnφ strana</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=14'>Webdesign</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=15'>V²voj aplikacφ</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=18'>E-komerce</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=17'>Nßstroje</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=16'>Magazφn</a></li><li class='right selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.inshop.cz'>Knihkupectvφ</a></li><li class='right'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interforum.interval.cz'>Interforum</a></li></ul></div><div id='page-mainmenu-maker'> </div></div>
  36. <div id='page-body'><div id='page-left'><div id='article'>
  37.  
  38.  
  39. <h2>Zpracovßnφ databßzov²ch dat p°es XSLT v ASP</h2>
  40. <p id='prepend'>Ka₧d² ASP programßtor jist∞ znß obvykl² zp∙sob psanφ webov²ch databßzov²ch aplikacφ, p°i kterΘm se p°ipojφ k databßzi, spuÜt∞nφm dotazu zφskß data v Recordsetu, iteracφ je prochßzφ, zpracovßvß a slepuje po₧adovan² HTML k≤d. Modernφ doba vÜak po₧aduje trochu nov∞jÜφ a hlavn∞ robustn∞jÜφ p°φstup k prßci s daty za vyu₧itφ nov²ch prost°edk∙, jako jsou XML a XSLT. Jak uvidφte, tyto postupy jsou p°φstupnΘ i na dnes ji₧ p°e₧itΘ platform∞ ASP.</p>
  41.  
  42. <p>Tento Φlßnek voln∞ navazuje na p°edchozφ <a href='http://interval.cz/clanek.asp?article=3462' title='B°φza, Petr: XmlDataDocument a zobrazenφ stromovΘ struktury p°es XSLT v ASP.NET'>XmlDataDocument a zobrazenφ stromovΘ struktury p°es XSLT v ASP.NET</a>, ve kterΘm jsme °eÜili ·kol podobn², tentokrßt vÜak aplikaci postavφme na trochu starÜφ platform∞. Struktura databßzovΘ tabulky je stßle stejnß - je rozebrßna v p∙vodnφm Φlßnku, proto se k nφ nebudu vracet, mφsto toho se hned vrhneme na k≤d naÜφ aplikace, p°iΦem₧ budu poukazovat na nejd∙le₧it∞jÜφ rozdφly obou °eÜenφ.</p>
  43.  
  44. <h3>NaΦtenφ vstupnφch dat</h3>
  45. <p>Prvnφm krokem je samoz°ejm∞ op∞t zφskßnφ dat, se kter²mi pak budeme pracovat. To znamenß p°ipojenφ k databßzi, vyvolßnφ dotazu a p°evedenφ dat do XML formßtu, kter² pot°ebujeme pro XSL transformaci. Jeliko₧ vÜak v ASP nemßme k dispozici takov² luxus jak² nabφzφ v .NETu t°φda <code>XmlDataDocument</code>, musφme najφt jin² zp∙sob zφskßnφ XML dokumentu z tabulky. Nebudeme vym²Ület ₧ßdnΘ krkolomnΘ zp∙soby a vyu₧ijeme komponentu <strong>SQLXML</strong>, kterß by nem∞la b²t na Microsoft SQL Serveru 2000 (a nov∞jÜφch) ₧ßdn² problΘm. OvÜem nep°edbφhejme!</p>
  46. <p>K p°φstupu k dat∙m pou₧ijeme ADO a standardnφ OLEDB ovladaΦ. Komponenta SQLXML sice obsahuje takΘ specißlnφho poskytovatele <strong>SQLXMLOLEDB</strong>, kter² vlastn∞ pracuje nad p∙vodnφm SQLOLEDB (viz <a href='http://msdn.microsoft.com/library/en-us/sqlxml3/htm/clientsidexml_70bp.asp'>Architecture of Client-Side and Server-Side XML Formatting</a>), ovÜem pokud mßte webov² server odd∞len² od databßzovΘho, pravd∞podobn∞ tohoto poskytovatele k dispozici nemßte. To vÜak nevadφ, proto₧e s b∞₧n²m OLEDB si bez problΘm∙ vystaΦφme.</p>
  47. <p>Dotaz pro databßzi bude obyΦejn² <samp>SELECT</samp> s dov∞tkem <samp>FOR XML AUTO</samp>, kter²m po₧ßdßme SQL server, aby nßm vrßtil v²sledek v XML formßtu.</p>
  48.  
  49. <div class='sample'>
  50. <%
  51. <br />
  52. <br />dim conn
  53. <br />set conn = Server.CreateObject("ADODB.Connection")
  54. <br />conn.Open "Provider=SQLOLEDB; Data Source=***; Initial Catalog=***; UId=***; Pwd=***"
  55. <br />
  56. <br />dim cmd
  57. <br />set cmd = Server.CreateObject("ADODB.Command")
  58. <br />cmd.ActiveConnection = conn
  59. <br />cmd.CommandText = "SELECT * FROM diskuse FOR XML AUTO"
  60. </div>
  61.  
  62. <p>Jak bude vypadat v²sledek takovΘho dotazu? M∙₧ete si to vyzkouÜet v Query Analyzeru, pokud jej mßte k dispozici. Zpracovßnφm dotazu vznikne fragment XML dokumentu jako dlouh² °et∞zec, kter² je pak rozd∞len po 256 znacφch do n∞kolika °ßdek jakΘsi fiktivnφ tabulky s jedin²m sloupcem. Zde ovÜem nastßvß menÜφ problΘm. Sloupec toti₧ nenφ °et∞zcovΘho typu (String), n²br₧ jsou to binßrnφ data, kterß jsou ve VBS reprezentovßny jako pole bajt∙ - Byte().</p>
  63. <p>S tφmto datov²m typem se ve VBS velmi obtφ₧n∞ pracuje, museli bychom tedy ka₧d² °ßdek n∞jak²m zp∙sobem p°evΘst na °et∞zec a pak vÜechny °ßdky spojit dohromady. Existuje vÜak jednoduÜÜφ a takΘ v²konn∞jÜφ zp∙sob. V²sledek dotazu lze cel² najednou "nasypat" do takzvanΘho <em>streamu</em> a pak jej cel² p°eΦφst jako °et∞zec, se kter²m ji₧ lze snadno pracovat. Nejd°φve tedy musφme stream vytvo°it, otev°φt a propojit jej s naÜim objektem <samp>cmd</samp>.</p>
  64.  
  65. <div class='sample'>
  66. dim stream
  67. <br />set stream = Server.CreateObject("ADODB.Stream")
  68. <br />stream.Open
  69. <br />cmd.Properties("Output Stream").Value = stream
  70. </div>
  71.  
  72. <p>VÜechno je p°ipraveno, tak₧e m∙₧eme p°φkaz spustit. P°itom musφme poskytovateli °φci, aby v²slednß data zapsal do p°ipojenΘho streamu, k Φemu₧ slou₧φ t°etφ parametr metody <strong>Execute</strong>, kterΘmu nastavφme hodnotu ADO konstanty <strong>adExecuteStream</strong>, tedy 1024. Ostatnφ parametry mohou z∙stat prßzdnΘ. PotΘ okam₧it∞ uzav°eme databßzovΘ p°ipojenφ, abychom zbyteΦn∞ neblokovali zdroje SQL serveru ostatnφm proces∙m.</p>
  73.  
  74. <div class='sample'>
  75. cmd.Execute , , 1024
  76. <br />conn.close
  77. </div>
  78.  
  79. <p>Nynφ stream obsahuje kompletnφ v²sledek dotazu. P°esuneme se na jeho zaΦßtek, a naΦteme cel² jeho obsah jako °et∞zec do novΘho XML dokumentu. P°itom musφme jeho obsah uzav°φt do jedinΘho elementu, proto₧e se jednß o XML fragment, kter² m∙₧e obsahovat vφce XML element∙, avÜak XML dokument smφ mφt jen jeden ko°enov² element. NßÜ element si pojmenujeme p°φznaΦn∞ <samp>diskuse</samp>. K dobr²m mrav∙m pat°φ takΘ p°ipojenφ XML deklarace.</p>
  80.  
  81. <div class='sample'>
  82. dim xml
  83. <br />set xml = Server.CreateObject("MSXML2.DOMDocument")
  84. <br />stream.Position = 0
  85. <br />xml.LoadXML("<?xml version='1.0'?>" & _
  86. <br />    "<diskuse>" & _
  87. <br />    stream.ReadText & _
  88. <br />    "</diskuse>")
  89. </div>
  90.  
  91. <p>Je t°eba dßt pozor na chyby MS XML parseru, kter² nevyvolßvß v²jφmky, pouze si zapisuje p°φpadnΘ chyby do vlastnosti <samp>parseError</samp> dokumentu. Kdyby doÜlo k chyb∞, b∞h k≤du pokraΦuje normßln∞ dßle a chyba se projevφ n∞kde jinde, ovÜem pak se nßm m∙₧e skuteΦn² zdroj chyby hledat velice t∞₧ko. Proto tΘto situaci rad∞ji p°edejdeme a p°φpadnou chybu zpracujeme ihned na mφst∞ - v ukßzkovΘ aplikaci pouze vypφÜeme chybovou zprßvu a ukonΦφme skript.</p>
  92.  
  93. <div class='sample'>
  94. if xml.parseError.errorCode <> 0 then
  95. <br />  response.write "Error loading XML: " & _
  96. <br />      xml.parseError.reason
  97. <br />  response.end
  98. <br />end if
  99. </div>
  100.  
  101. <p>Dlu₧no dodat, ₧e pravd∞podobnost chyby parsingu je asi pom∞rn∞ nφzkß, proto₧e onen XML dokument nikdo "nelepφ ruΦn∞", ale je generovßn komponentou SQLXML, p°iΦem₧ lze jist∞ ·sp∞Ün∞ pochybovat o tom, ₧e by tato komponenta vytvß°ela nevalidnφ XML. OvÜem rozmary Microsoft produkt∙ nenφ nikdy dobrΘ podce≥ovat a kdy₧ u₧ nic jinΘho, alespo≥ testujeme, zda jsme v²sledek dotazu sprßvn∞ uzav°eli do ko°enovΘho elementu dokumentu.</p>
  102. <p>XML dokument je p°ipraven. Jeho vnit°nφ strukturou jsme se zatφm nezab²vali, poj∩me to napravit. Budeme ji muset dob°e znßt, abychom pak sestavili dob°e fungujφcφ XSL transformaci. Zp∙sob, jak²m generuje server XML data, zßvisφ Φist∞ na pou₧itΘm dotazu. My jsme pou₧ili jeden ze zßkladnφch tvar∙ <samp>FOR XML AUTO</samp> a v takovΘm p°φpad∞ zφskßme dokument podobn² nßsledujφcφmu:</p>
  103.  
  104. <div class='sample'>
  105. <?xml version="1.0"?>
  106. <br /><diskuse>
  107. <br />  <diskuse
  108. <br />      ID="1"
  109. <br />      autor="paya"
  110. <br />      obsah="4all: Ahoj, jdeme na pivo?" />
  111. <br />  <diskuse
  112. <br />      ID="2"
  113. <br />      pID="1"
  114. <br />      autor="pierre"
  115. <br />      email="ja@pierre.cz"
  116. <br />      obsah="OK, v 19h na Stodolnφ?" />
  117. <br />  ...
  118. <br /></diskuse>
  119. </div>
  120.  
  121. <p>V²slednß struktura je trochu odliÜnß od tΘ, kterß vznikß zpracovßnφm .NET t°φdou XmlDataDocument. Ka₧d² °ßdek tabulky se p°evede na XML element, jeho₧ nßzev je shodn² s nßzvem p∙vodnφ tabulky. Nejviditeln∞jÜφ zm∞nou je p°evod sloupc∙ na XML atributy mφsto XML element∙. NicmΘn∞ pokud bychom tou₧ili vφce po XML elementech, staΦφ zm∞nit dopln∞k naÜeho SQL dotazu na <samp>FOR XML AUTO, ELEMENTS</samp>. To vÜak jen tak na okraj. VÜimn∞te si, ₧e pole, kterß majφ v databßzovΘ tabulce hodnotu NULL, nejsou v dokumentu op∞t v∙bec vid∞t.</p>
  122. <p>Dokument jsme si prohlΘdli, zb²vß jen naΦφst stylesheet provΘst transformaci a v²sledek vypustit na prohlφ₧eΦ klienta:</p>
  123.  
  124. <div class='sample'>
  125. dim xsl
  126. <br />set xsl = Server.CreateObject("MSXML2.DOMDocument")
  127. <br />xsl.load(server.MapPath("diskuse.xsl"))
  128. <br />response.write xml.transformNode(xsl)
  129. <br />%>
  130. </div>
  131.  
  132. <p>No a ·pln∞ nakonec napφÜeme stylesheet. Respektive staΦφ pou₧φt ukßzku z p∙vodnφho Φlßnku a upravit ji pro zpracovßnφ XML dokumentu s naÜφ mφrn∞ odliÜnou strukturou. FunkΦnost a v²sledek transformace z∙stanou naprosto toto₧nΘ.</p>
  133.  
  134. <div class='sample'>
  135. <?xml version='1.0'?>
  136. <br /><xsl:stylesheet
  137. <br />    xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
  138. <br />    version='1.0'>
  139. <br />
  140. <br />  <xsl:template match="/">
  141. <br />    <ul>
  142. <br />      <xsl:apply-templates
  143. <br />          select="diskuse/diskuse[count(pID)=0]" />
  144. <br />    </ul>
  145. <br />  </xsl:template>
  146. <br />
  147. <br />  <xsl:template match="diskuse">
  148. <br />    <li>
  149. <br />      <h4>
  150. <br />        <xsl:value-of select="@autor" />
  151. <br />        <xsl:if test="@email">
  152. <br />          <xsl:text> (</xsl:text>
  153. <br />          <a href="mailto:{@email}">
  154. <br />            <xsl:value-of select="@email" />
  155. <br />          </a>
  156. <br />          <xsl:text>)</xsl:text>
  157. <br />        </xsl:if>
  158. <br />      </h4>
  159. <br />      <p><xsl:value-of select="@obsah" /></p>
  160. <br />      <hr/>
  161. <br />    </li>
  162. <br />    <xsl:if test="/diskuse/diskuse[@pID=current()/@ID]">
  163. <br />      <ul>
  164. <br />        <xsl:apply-templates
  165. <br />         select="/diskuse/diskuse[@pID=current()/@ID]"/>
  166. <br />      </ul>
  167. <br />    </xsl:if>
  168. <br />  </xsl:template>
  169. <br />
  170. <br /></xsl:stylesheet>
  171. </div>
  172.  
  173. <p>K dispozici je vßm i <a href='podklady/briza/924/diskuse.zip'>ukßzkovß aplikace</a> ke sta₧enφ.</p>
  174.  
  175. <h3>Odkazy, zdroje</h3>
  176.  
  177. <div class='list'>
  178. <ul>
  179. <li><a href='http://interval.cz/clanek.asp?article=3462'>XmlDataDocument a zobrazenφ stromovΘ struktury p°es XSLT v ASP.NET</a> - B°φza, Petr (Interval.cz, 12. 7. 2004)</li>
  180. <li><a href='http://interval.cz/clanek.asp?article=3226'>Generujeme XML z MS SQL Serveru</a> - B°φza, Petr (Interval.cz, 1. 4. 2004)</li>
  181. <li><a href='http://msdn.microsoft.com/sqlxml/'>SQLXML</a> (MSDN library, nedatovßno)</li>
  182. <li><a href='http://interval.cz/serial.asp?serial=56'>Kompletnφ pr∙vodce XSLT</a> - B°φza, Petr (Interval.cz, nedatovßno)</li>
  183. <li><a href='http://www.kosek.cz/xml/xslt/'>XSLT v p°φkladech</a> - Ji°φ Kosek (www.kosek.cz, 26. 4. 2004)</li>
  184. <li><a href='http://www.w3.org/Style/XSL/'>The Extensible Stylesheet Language Family (XSL)</a> (W3C, nedatovßno)</li>
  185. </ul>
  186. </div>
  187.  
  188.  
  189.  
  190. <div id='article-author'>
  191. <a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/autor.asp?author=217'>B°φza, Petr</a> (29. 7. 2004)
  192.  
  193. </div>
  194.  
  195.  
  196. </div></div>
  197. <div id='page-right'><h2 class='textversion'>Prav² sloupek</h2>
  198. <div id='search'><h3 class='textversion'>Vyhledßvßnφ</h3><form method='get' action='http://interval.cz/search.asp'><div><input type='text' name='hledej' class='text' /><input type='submit' class='submit' value='Najdi!' /></div></form><div><a href='http://interval.cz/search_ex.asp'>RozÜφ°enΘ vyhledßvßnφ</a></div></div>
  199.  
  200.  
  201.  
  202. <div class='page-right-box book'>
  203.     <h3>Kni₧nφ novinka</h3>
  204.     <div class='page-right-box-in'>
  205.         <div class='book-top'>
  206.             <h4><a href='http://interval.cz/__redirect/redirect.asp?what=interval_booknews&url=http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=269'>Optimalizace pro vyhledßvaΦe - SEO</a></h4>
  207.         </div>
  208.     </div>
  209.     <div class='image'>
  210.         <img src='podklady/knihy/image.jpg' alt='obßlka' title='obßlka' /></a>
  211.     </div>
  212.     <div class='book-bottom'>Cena: <span class='book-price-old'>169 KΦ</span> <span class='book-price-new'>152 KΦ</span></div>
  213. </div>
  214.  
  215.  
  216.  
  217. <div class='page-right-box reading'>
  218.     <h3>NejΦten∞jÜφ</h3>
  219.     <div class='page-right-box-in'>
  220.         <ul>
  221. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3476'>Kurz SVG - vypl≥ovßnφ I</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3479'>PPWizard - pokroΦilß makra, podmφnky a standardnφ definice</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3478'>Transformace dat z databßze pomocφ XSL v .NET jednoduÜe</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3481'>Strßnkovßnφ v ovlßdacφm prvku DataGrid bez pou₧itφ PostBack</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3477'>Zpracovßnφ databßzov²ch dat p°es XSLT v ASP</a></li>
  222.         </ul>
  223.     </div>
  224. </div>
  225.  
  226.  
  227.  
  228. <div class='page-right-box cauldron'>
  229.     <h3>Diskuznφ kotel</h3>
  230.     <div class='page-right-box-in'>
  231.         <ul>
  232. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3473' title='(25 komentß°∙)'>Sedφm na konßri a Φtu Computerworld</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3468' title='(23 komentß°∙)'>PPWizard - tvo°φme a spravujeme WWW strßnky</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3474' title='(22 komentß°∙)'>PφÜeme pro web - o sφle slov</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3464' title='(15 komentß°∙)'>Kurz SVG - grafickß primitiva</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3472' title='(10 komentß°∙)'>Cryptography v .NET - Symmetric a Asymmetric encryption</a></li>
  233.         </ul>
  234.     </div>
  235. </div>
  236.  
  237.  
  238.  
  239. <div class='page-right-box emailserv'><h3>Email servis</h3><div class='page-right-box-in'><form action='prihlaseni.asp' method='post'><div class='shell'><input class='text' type='text' name='adresa' /></div><div class='shell'><input class='radio' type='radio' value='1' name='co' checked='checked' />T²dennφ p°ehled Φlßnk∙</div><div class='shell'><input class='radio' type='radio' value='2' name='co' />HELP konference</div><div class='shell'><input class='submit' type='submit' value='P°ihlßsit' /></div></form></div></div>
  240. </div>
  241. <div class='page-maker'> </div><div class='page-maker-white'> </div></div>
  242. <div id='page-foot'><div id='page-foot-menu'><a href='http://interval.cz/reklama.asp'>Inzerce na Interval.cz</a> | <a href='http://interval.cz/redakce.asp'>Redakce Interval.cz</a> | <a href='http://interval.cz/autori.asp'>Hledßme novΘ autory</a></div><div id='issn'>ISSN 1212-8651</div><div id='page-foot-zoner'>© Zoner software, s.r.o., vÜechna prßva vyhrazena, tento server dodr₧uje <a href='http://interval.cz/privacy.asp'>prßvnφ p°edpisy</a>o ochran∞ osobnφch ·daj∙.</div></div>
  243. </body>
  244. </html>