¬[ºc¤@­Ó WWW ¤Wªº Z39.50 ¦øªA¾¹¡]¤G¡^

´¿¤¸Åã / Yuen-Hsien Tseng
»²¤¯¤j¾Ç¹Ï®Ñ¸ê°T¾Ç¨t
Email: tseng@blue.lins.fju.edu.tw
¤¤°ê¹Ï®ÑÀ]¾Ç·|·|°T 107 ´Á
http://blue.lins.fju.edu.tw/~tseng/papers/lacz3950-2.htm
Oct. 27, 1997
Accessed times



«e¨¥ | Isite»P¦Û«Ø¸ê®Æ®wªº³sµ² | Isite¿ù»~ªº§ó¥¿ | µ²»y | °Ñ¦Ò¸ê®Æ

³ü¡B«e¨¥

¦b·|°T104´Á¤¤§Ú­Ì´¿¤¶²Ð¹LIsite Z39.50¦øªA¾¹ªº¨t²Î¬[ºc¥H¤Î¹ê»Ú¬[³]ªº±¡ªp [1]¡A¤å¤¤´£¨ì¦¹¨t²Î¥Ø«eªº¥¿¦¡ª©¥»¡]1.8ª©¡^ÁÙ¦³¤@¨Ç¿ù»~¡]bugs¡^¡A¨Ï±o¾ã­Ó¨t²Î¹B§@¨Ã¤£¶¶ºZ¡C¨ä³Ì·sªºª©¥»¡]2.0ª©¡^¤@ª½³£ÁÙ¦b¦b´ú¸Õ¶¥¬q¡AÁöµM¥i¥H¹ê»Ú¦w¸Ë¨Ï¥Î¡A¦ý¬OÁÙ¨S¦³¥¿¦¡ªº¦w¸Ë»P¨Ï¥Î»¡©ú¤å¥ó¥i¨Ñ°Ñ¦Ò¡A¨Ï¥ÎªÌ¥²¶·¾ÌÂǹL¥h¦w¸Ë¥ý«eª©¥»ªº¸gÅç¡A¤~¯à¥[¥H¹B¥Î¡C¦]¦¹¡A¥»¤å¤£¹ï·sªº´ú¸Õª©¥»°µ³ø¾É¡A¦ÓµÛ­«¦b¥¿¦¡ª©¥»°ÝÃD¸Ñ¨Mªº»¡©ú¡A´Á¨ÏŪªÌ¹ï¥¿¦¡ª©¥»¦³§ó²`ªº»{ÃÑ¡A¦Ó¯à¦Û¦æ¸Õ¥Î·sªºª©¥»¡C

¥»¤å©Ò¤¶²Ðªº Z39.50 ³nÅé¬O¥Ñ¬ü°êºô¸ô¸ê°Tµo±¸»PÀ˯Á¤¤¤ß ¡]CNIDR, Clearinghouse for Networked Information Discovery and Retrieval¡^©Òµo®iªº Isite ¸ê°T¨t²Î [2]¡C¦³Ãö¥»¨t²Î»PZ39.50ªº­I´º¤¶²Ð¡A½Ð°Ñ¾\«e¤å¡A³o¸Ì¶È­«½Æ¤@¨Ç¥²­n©Êªº»¡©ú¡C

Isite ³nÅé¥Ø«eªº¥¿¦¡ª©¥»¬° 1.08 ª©¡A¥i±qCNIDRªº FTP¯¸¤W¨ú±o¡Gftp://ftp.cnidr.org/pub/NIDR.tools/Isite/¡C§Ú­Ì¦w¸Ë¦¹ª©¥»¾D¹Jªº°ÝÃD¡A¦b©ó³z¹LWWW³s½uIsite ¬d¸ß¦Û«Øªº¸ê®Æ®w®É¡A¨äÀ˯Áµ²ªGªºÅã¥Ü¡A¦³¿òº|¤£§¹¾ãªº±¡ªp¡C§Ú­Ì§Q¥Î´»°²´Á¶¡³z¹L¹ï­ì©lµ{¦¡ªº°lÂÜÁA¸Ñ¡A±N¨ä§ó¥¿¸Ñ¨M¡C¬°¸ÑÄÀ³o¨Ç±¡ªp¡A©³¤U±N¥ý¤¶²Ð¦p¦óÅý¦Û«Øªº¸ê®Æ®w¡A³z¹LIsite¸ê°T¨t²Î´£¨Ñ³s½u¬d¸ß¡C

¶L¡BIsite»P¦Û«Ø¸ê®Æ®wªº³sµ²

Isite¸ê°T¨t²Î¬[ºc¦p¹Ï¤@©Ò¥Ü¡A¥i³sµ²Isite¥»¨­ªº¸ê®Æ®w¡A¤]¥i³sµ²¦w¸Ë¤H­û¦Û¦æ«Ø¥ßªº¸ê®Æ®w¡C¥Ø«e Isite ¨t²Î¤ºªþ¦³¤@®M­^¤åªº¥þ¤åÀ˯Áµ{¦¡ Isearch¡A¥i¥Î¥HÀ˯Á HTML¡BSGML¡B¥H¤ÎµLµ²ºc©Ê¤å¦rÀÉ®×µ¥¦hºØ¤å¥ó®æ¦¡¡C¨Ï¥ÎªÌ¤]¥i¥H±N¤w¦³ªº¸ê®Æ®w¡]¦p®Ñ¥Ø¸ê®Æ¡^±µ¤W¡A¨Ï¨ä¨ã³Æ Z39.50 À˯Á¼Ð·Çªº¤¶­±¡C³o³¡¥÷ªº³sµ²¥i³z¹L Isite ¨î­qªºÀ˯ÁÀ³¥Îµ{¦¡¤¶­± SAPI¡]Search Application Programming Interface¡^¹F¦¨¡C¥u­n¨Ï¥ÎªÌ¦Û«Øªº¸ê®Æ®wªºÀ˯Á¤ÞÀº¨ä¿é¥X»P¿é¤J²Å¦X¦¹¤¶­±ªº³W©w¡A¦A¥[¤W¹ï²ÕºAÀÉ¡]zserver.ini »P sapi.ini¡^¾A·íªº³]©w¡A§Y¥i¦¨¥\³s±µ zserver ¦øªA¾¹¡C


¹Ï¤@¡GIsite ¸ê°T¨t²Î¬[ºc¹Ï

¹Ï¤@Åã¥Ü¨Ï¥ÎªÌ¥i³z¹LÂsÄý¾¹³s¤WWWW¦øªA¾¹¡A¦A³z¹Lzgate »Pzcon¨â¤ä¤¶­±µ{¦¡³s¤Wzserver Z39.50¦øªA¾¹¡Azserver¦øªA¾¹¦A³z¹LSAPI¤¶­±©I¥sÀ˯Á¤ÞÀº¡AÀ˯Á¤ÞÀº±N¬d¸ß¸ê®Æ®wªºµ²ªG¦^³øµ¹zserver¦øªA¾¹¡Azserver¦A±Nµ²ªG¶Çµ¹zcon»Pzgateµ{¦¡¡A³z¹L¥L­Ì±Nµ²ªG¶Çµ¹WWW¦øªA¾¹«á¡A¥ÑWWW¦øªA¾¹¶Ç¸ê®Æµ¹¨Ï¥ÎªÌ¡C¦b³o¨Çµ{¦¡·í¤¤zgate¬O¤@¤äCGI¡]Common Gateway Interface¡^µ{¦¡ [3]¡A­t³d»PWWW¦øªA¾¹ªº³sµ²¡A¦Ózcon¤]¬O¤@¤ä¤¶­±µ{¦¡¡A­t³d»P¤£¦P¨Ï¥ÎªÌªº³sµ² [1]¡C¹Ï¤@¤¤µê½u¤ºªºµ{¦¡»PÀɮ׳£¥ÑIsite¨t²Î´£¨Ñ¡A¦]¦¹ÅªªÌ¥u­n·Ç³ÆWWW¦øªA¾¹ [4]¡B¦Û«Øªº¸ê®Æ®w¡B¥H¤Î¨äÀ˯Á¤ÞÀº§Y¥i¡C

°²³]¦Û«Ø¸ê®Æ®wªº¦WºÙ¬°MyDB, À˯Á¦¹¸ê®Æ®wªºÀ˯Á¤ÞÀº¬°MySearch¡A«h«Ø¥ßzserver¦øªA¾¹»P¦Û«Ø¸ê®Æ®wªº³sµ²¨BÆJ¦p¤U¡G

¤@¡B­×§ï²ÕºAÀÉzserver.ini¥H¤Îsapi.iniªº³]©w¨Ã±N²ÕºAÀÉ©ñ¸m¦b¾A·íªº¥Ø¿ý¤U¡A¨ÏzserverÁA¸Ñ¨ì¨º¸Ì©I¥sMySearchÀ˯Áµ{¦¡¡A¥H¤Î¨ì¨º­ÓÀÉ®×®³¨úÀ˯Áµ²ªG¡C

¤G¡B­×§ïMySearchÀ˯Á¤ÞÀº¸ê®Æ¿é¤J»P¿é¥Xªº®æ¦¡¤Î¬y¦V¡]©Î¼¶¼g³q¹Dµ{¦¡ (gateway) ¥Î¥H©I¥sMySearch¥H¤Î­×§ïMySearchªº¿é¥X®æ¦¡¤Î¬y¦V¡^¡C

¤T¡B­×§ïgateway.html»Psearch.html¨â­Ó¨Ï¥ÎªÌªº¤¶­±ÀÉ¡A¨Ã¦w¸m¦bWWW¦øªA¾¹¥i¥H¨ú¥Îªº¦a¤è¡AÅý¨Ï¥ÎªÌ¥i¥H³z¹LWWW¤¶­±¥s¥Î¡C

¨BÆJ¤@¤¤ªºzserver.ini²ÕºAÀÉ¡A¥²¶·­×§ï¨â­Ó¦a¤è¡G¤@¬O±N¡uPort=6668¡v§ï¦¨¡uPort=210¡v¡A·N«ä¬O±Nzserverªº³q°T°ð¥Ñ´ú¸Õ³q°T°ð§ï¨ì³W©wªº¼Ð·Ç³q°T°ð¤W¡F¥t¤@­Ó¦a¤è¬O¦b¡uDBList=TestDB¡v¥[¤J¦Û«Ø¸ê®Æ®wªº¦WºÙ¡uDBList=TestDB,MyDB¡v¡A·N«ä¬O§i¶Dzserver¦øªA¾¹¨t²Î¤º¦h¤F¤@­Ó¦W¬°MyDBªº¸ê®Æ®w¡C¥t¤@­Ó²ÕºAÀÉsapi.ini«h¦P¼Ë¥²¶·­×§ï¡uDBList=TestDB¡v¨Ï¦¨¬°¡uDBList=TestDB,MyDB¡v¡A¥t¥~ÁÙ­n¥[¤J¤@¬q´y­z¦p¤U¡G

[MyDB]
Type=SCRIPT
Location=/httpd/cgi-bin/MySearch
Results=/tmp/results

·N«ä¬O¦³¤@­Óµ{¦¡MySearch¥i¥H³z¹LSAPI©I¥s¡A¨ä¦ì¸m¦b¡u/httpd/cgi-bin/MySearch¡v¡A¦¹µ{¦¡ªºµ²ªG·|©ñ¦b¡u/tmp¡v¥Ø¿ý©³¤U¥Hresults¬°ÀɦW¶}ÀYªºÀɮפº¡C

¨BÆJ¤G¤¤¡Azserver·|±NÂsÄý¾¹ºÝ¶Ç¨ÓªºÀ˯Á±ø¥ó¡G¡u¦r¦ê¤@[ÄÝ©Ê,­È] ¦r¦ê¤G[ÄÝ©Ê,­È] …}¡v¡A¥H©R¥O¦C©I¥sªº¤è¦¡¥s¥ÎMySearch¡A§Y¡G

$/usr/bin/MySearch /tmp/results.<pid> ¦r¦ê¤@[ÄÝ©Ê,­È] ¦r¦ê¤G[ÄÝ©Ê,­È] …}

¨ä¤¤ <pid> ¬Ozserverµ¹©w¥Î¥HÃѧO¨Ï¥ÎªÌªº¸¹½X¡C©Ò¥HMySearch¥i¥H±q©R¥O¦C¤¤Àò±o¤£¦P¨Ï¥ÎªÌªº¬d¸ß¦r¦ê¡A¬d¸ß§¹²¦«á¡A±Nµ²ªG¼g¨ì /tmp/results.<pid> ÀÉ®×¥h¡Azserver´N¥i¥Ñ¦¹ÀÉ®×Ū¨ì¬d¸ßªºµ²ªG¡A°e¦^µ¹´£¥X¦¹¶µ¬d¸ßªº¨Ï¥ÎªÌ¡CMySearch±Nµ²ªG¼g¨ì /tmp/results.<pid> ®É¡A¥²¶·¿í¦u¤U¦C®æ¦¡¡G

[Default]
HitCount=3
Diagnostic=0
Separator=##separator string - your choice ##
[Data]
Record data for record number 1
##separator string - your choice ##
Record data for record number 2
##separator string - your choice ##
Record data for record number 3

¦¹ÀɮפÀ¬°¨â¬q¡A¨ä¤¤ [Data] ¬q¬O¦s©ñÀ˯Áµ²ªGªº¦a¤è¡A¦Ó [Default] ¬q«h¬O³]©wÅܼƪº¦a¤è¡A¨ä¤¤HitCount¬OÀ˯Áµ²ªGªºµ§¼Æ¡A¦ÓDiagnosticªº­È­Y¬°0ªí¥ÜÀ˯Á¦¨¥\¡A­Y¬°1ªí¥ÜÀ˯Á¥¢±Ñ¡A¦Ü©óSeparator ªí¥Ü¨Ï¥ÎªÌ¥i¥H¦Û¦æ©w¸qªº¤À¹j¦r¦ê¡A¨Ã¤£¤@©w¬O¥»¨Ò¤¤ªº²Å¸¹¡C

¨BÆJ¤T«h¬O³]©w¨Ï¥ÎªÌ¤¶­±ÀÉ¡Cgateway.html­n§ïªº¦a¤è¦³¤G­Ó¡G¤@¬O±N

<form name="POST" action="http://localhost/cgi-bin/zgate">

¤¤ªºlocalhost§ï¦¨ÅªªÌªº¥D¾÷¦ì§}¡A¦p

<form name="POST" action="http://lib.fju.edu.tw/cgi-bin/zgate">

²Ä¤G­Ó¦a¤è¬O±N

<OPTION VALUE="/httpd/htdocs/search.html", localhost, 6668>TestDB

§ï¦¨

<OPTION VALUE="/httpd/htdocs/search.html", lib.fju.edu.tw, 210>MyDB

gateway.htmlªº¥D­n¥Øªº¡A¬OÅý¨Ï¥ÎªÌ¿ï¾Ü¤@­Ó¾A·íªº¸ê®Æ®w³s½u¡A©Ò¥H¤W­z¨BÆJ¬O±NMyDBÅã¥Ü¦bºô­¶¤¤¨Ñ¨Ï¥ÎªÌ¬D¿ï¡AµM«á¥H³q°T°ð210³s¤Wzserver¨Ã¶i¤J¤U¤@­Óºô­¶search.html¤¤¡C¦bsearch.html¤¤­n­×§ïªº³¡¥÷¬O±N

<form name="POST" action="http://localhost/cgi-bin/zgate">
<input type=hidden name="host" value="localhost">
<input type=hidden name="port" value="6668">
<input type=hidden name="DBNAME" value="TestDB">

§ï¦¨

<form name="POST" action="/cgi-bin/zgate">
<input type=hidden name="host" value="Your-Host-address">
<input type=hidden name="port" value="210">
<input type=hidden name="DBNAME" value="MyDB">

¨ä¤¤hostªº­È¬O¦øªA¾¹¥D¾÷ªº¦ì§}¡C

§¹¦¨¥H¤W¨BÆJ¨Ã±N¦U­ÓÀɮ׫þ¨©¨ì¾A·íªº¥Ø¿ý«á¡A±Ò°ÊWWW¦øªA¾¹»PZ39.50¦øªA¾¹¡A¨t²Î´N¥i±µ¨ü¨Ï¥ÎªÌªº³s½u¬d¸ß¤F¡C

°Ñ¡BIsite¿ù»~ªº§ó¥¿

¦p«e©Ò­z¡A³z¹LWWW³s½uIsite ¬d¸ß¦Û«Øªº¸ê®Æ®w®É¡A¨äÀ˯Áµ²ªGªºÅã¥Ü¦³¿òº|¤£§¹¾ãªº±¡ªp¡C¦p¹Ï¤G¡]¤@¡^¬O¨Ï¥ÎªÌ¬d¸ß¤¶­±¡A¨Ï¥ÎªÌ¿ï¾Ü¨C­¶Åã¥Ü¤Tµ§µ²ªG¡A¹Ï¤G¡]¤G¡^À˯Áµ²ªGªº²Ä¤@­¶¥i¥H¥¿½TÅã¥Ü¡A¦ý½¤U¤@­¶«á¹Ï¤G¡]¤T¡^´NÅã¥ÜµLªk¥Ñ¦¹¦A½¤U¤@­¶¡C¦¹°ÝÃD¬Ý¦üµ{¦¡ªº¨Ç³\ÅÞ¿è¿ù»~¡A¦ýµLªk¥¿½Tªº¤@­¶¤@­¶ÂsÄýµ²ªG«o¬O¨Ï¥ÎªÌ¬Û·í¤jªº§xÂZ¡C¸g¹L¹ï­ì©lµ{¦¡½Xªº°lÂܲz¸Ñ«á¡A§Ú­Ìµo²{¦³¤T­Ó³¡¥÷­n­×§ï¡A¤~¯à¨ÏÅã¥Üªºª¬ªp«e«á¤@­P¡C¦¹¤T­Ó³¡¥÷³£µo¥Í¦bIsite¨t²Î©Ò¦b¥Ø¿ýªº¤l¥Ø¿ýzdistªº­ì©lµ{¦¡ÀÉzcon.cxx¤º¡C²Ä¤@­Ó³¡¥÷¬O±Nzcon.cxxÀÉ®×285¦æ¤Î340¦æªº

fprintf(fp, "<input name=\"ESNAME\" value=\"B\" type=\"HIDDEN\">");

§ï¦¨

fprintf(fp, "<input name=\"ESNAME\" value=\"F\" type=\"HIDDEN\">");

²Ä¤G³¡¥÷¬O±N307¦æ¡B334¦æ¥H¤Î346¦æµù¸Ñ°_¨Ó¡]§Y¦b¸Ó¦æªº³Ì«e­±´¡¤JC++ªºµù¸Ñ²Å¸¹¡G¡u//¡v¨â­Ó¥k±×½u¡^¡AÅý¥L­ÌÅܦ¨¤£¥i°õ¦æªº±Ô­z¡C²Ä¤T­Ó³¡¥÷«h±N277¦æ»P331¦æªº¦r¦ê¡G¡uMore on this record¡v§R°£¡A¨ä¾l¤£°Ê¡C¦p¦¹­×§ï«á¡A­«·s½sĶµ{¦¡¡A±N½sĶ«áªº¥i°õ¦æµ{¦¡zcon«þ¨©¨ìWWWªºCGIµ{¦¡¥Ø¿ý¤U§Y¥i¡C­×§ï«áªº¨t²Î¹B§@±¡ªp§Y¥i¦p¹Ï¤T¡]¤@¡^»P¹Ï¤T¡]¤G¡^Åã¥Ü¥¿½Tµ²ªG¤F¡C

µ²»y

¥Ø«e Isite ªº 1.08 ª©ÁÙ¨S¯à§¹¥þ²Å¦X Z39.50 ªº³W©w¡A·sª©¥» 2.0 ª©¤w´ú¸Õ¶W¹L¥b¦~¡A§Ú­Ì´¿¦bLinux¨t²Î¤W´ú¸Õ·sª©¥»ªº¦w¸Ë¡A¥i±¤¥¼¯à¦¨¥\¡C¦pªG¦³¾÷·|¡B¦³§ó¦hªº®É¶¡¯à¦b¤£¦PªºUnix ª©¥»¤W´ú¸Õ¡AÀ³¸Ó¥i¥H¦w¸Ë¨Ã¦¨¥\¬[³]°_·sª©ªºZ39.50¦øªA¾¹¡C

°Ñ¦Ò¸ê®Æ

[1] ´¿¤¸Åã¡A"¬[ºc¤@­Ó WWW ¤Wªº Z39.50 ¦øªA¾¹"¡A¤¤°ê¹Ï®ÑÀ]¾Ç·|·|°T¡A5¨÷1´Á¡]104¡^¡A85¦~3¤ë31¤é¡CAlso available at http://blue.lins.fju.edu.tw/~tseng/papers/lacz3950.htm

[2] CNIDR resources for information discovery and retrieval, http://www.cnidr.org/ir/ir.html

[3] ´¿¤¸Åã¡A"¼W¥[ Home Page ªº¤¬°Ê©Ê-- CGI µ{¦¡»P¸ê®Æ®wªº¹B¥Î"¡A¤¤°ê¹Ï®ÑÀ]¾Ç·|·|°T¡A4¨÷2´Á¡]101¡^¡A85¦~6¤ë31¤é¡CAlso available at http://blue.lins.fju.edu.tw/~tseng/cgi.htm

[4] ´¿¤¸Åã¡A"¬[­Ó WWW ¦øªA¾¹"¡A ¤¤°ê¹Ï®ÑÀ]¾Ç·|·|°T¡A4 ¨÷ 1 ´Á¡]100¡^¡A85 ¦~ 3 ¤ë 31 ¤é¡A­¶57-60¡C




¹Ï¤G¡]¤@¡^Z39.50¨Ï¥ÎªÌ¬d¸ß¤¶­±


¹Ï¤G¡]¤G¡^¬d¸ßµ²ªG²Ä¤@­¶


¹Ï¤G¡]¤T¡^¬d¸ßµ²ªG²Ä¤G­¶¡]¯Ê¡uÅã¥Ü¤U¤@­¶¡vªº«öÁä¡^


¹Ï¤T¡]¤@¡^¬d¸ßµ²ªG²Ä¤@­¶


¹Ï¤T¡]¤G¡^¬d¸ßµ²ªG²Ä¤G­¶