PubMed Central (PMC) 작업과정 허선 ( 대한의학학술지편집인협의회정보관리위원장 ) 10:35-11:00 머리말 KoreaMed를처음시작하던 1996년, 미국 NCBI에서 PubMed 사업을하면서앞으로 XML 파일만보내주면 MEDLINE 학술지가아니더라도등재된다는내용의글을보고열심히 XML 파일을만들자며 KoreaMed를시작하였다. 처음에 KoreaMed에등재되면 PubMed에도등재된다는언급을학회에하고시작하였는데, 그후 MEDLINE 학술지만 PubMed로간다는것으로바뀌어서여러학회의꿈은무산되었다. 그런일이있은지 10년뒤인 2006년, 이제 2008년이면정보위활동을접어야하는데 10년전의꿈을구현시키는방법이무엇일까생각하다가 2001년부터시작한 PMC 사업을한번다시들여다보게되었다. 이것을어떻게해서든지구현하여영문으로발행된학술지는 PMC에등재되어검색가능하도록하여야하겠다는생각으로공부하였고그가능성을타진하여본격적으로시작하였다. 우선편집인으로일하고있는 Journal of Educational Evaluation for Health Professions를가지고 PMC XML을만들어웹에서보이게하는작업을하였다. 그리고워드파일에서쉽게 PMC XML로변환하는 filtering program을김수녕교수께의뢰하여제작하였다. Xalan-Java, Xalna-C의사용법때문에어려움을겪다가프로그래머고항훈씨의도움으로 HTML 파일로변환하였다. 지금부터어떻게구현하였는지, 그리고그것을구현하여화면에띄웠을때에어떤느낌이었는지설명하려한다. 기생충학자가이런분야까지공부하는것이과연옳은일인가돌이켜보기도하지만, 아무도국내에서먼저시도하지않으니까할수밖에없다고여긴다. 이런일은의편협실무자가먼저이해하여가르쳐주었으면하는바람이었다. 예제파일 http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=1874508 은 PMC 학술지중알파벳에서가장앞선잡지의최근 full text이다. 다음 Fig. 1 같이보인다. 소스를보면 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="robots" content="index,nofollow,noarchive"> 이렇게시작하여 - 1 -
Fig. 1. Example screen of full text from PMC. <script type="text/javascript" language="javascript"><!-- try{initunobscureemail ("e_id2726096", '<a class="ext-reflink" href="' + reverseandreplacestring('if.uluo/ta/irattnam.utas:otliam', '/at/', '@') + '">' + reverseandreplacestring('if.uluo/ta/irattnam.utas', '/at/','@') + '</a>')}catch(e){} 이렇게끝난다. 이화면을봐서는도저히알수없다. 이화면은내부에서 HTML로자료를변환하여연결시켜서변환된 HTML 코드로보아도내용을알수없다. 그러므로, PMC XML 예제파일을가지고공부하였다. Journal Publishing XML DTD and schema (http://dtd.nlm.nih.gov/publishing/) 에서내용을찾을수있다. 이화면에서왼쪽차림표에 Tag Library를누르면우리가코딩할 Tag 에대한내용이나온다 (Fig. 2, http://dtd.nlm.nih.gov/publishing/tag-library/2.3/index.html) - 2 -
Fig. 2. XML Tag Library 화면. 이화면의차림표에서 Full Article Samples을누르면 BMJ, PNAS 예제파일이나온다. 여기서 XML 파일의구조를알수있다. 그중에 BMJ XML 파일을보면 <!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "nlm_lib/2.3/journalpublishing.dtd"> <article> <front> <journal-meta> <journal-id journal-id-type="pmc">bmj</journal-id> <journal-id journal-id-type="pubmed">bmj</journal-id> <journal-id journal-id-type="publisher">bmj</journal-id> <issn>0959-8138</issn> <publisher> <publisher-name>bmj</publisher-name> </publisher> </journal-meta> <article-meta> <article-id pub-id-type="other">jbmj.v324.i7342.pg880</article-id> - 3 -
<article-id pub-id-type="pmid">11950738</article-id> <article-categories> <subj-group> <subject>primary care</subject> 이렇게시작하여 <fn> <p>funding: Meetings of the working group in 1999-2000 were funded by the Scientific Foundation Board of the RCGP.</p> </fn> <fn> <p>competing interests: None declared.</p> </fn> </fn-group> </back> </article> 이렇게끝나는것을알수있다. 이대로따라서 JEEHP 코딩을하고 XML 파일을만들어열어서오류를수정하여웹화면에서볼수있다. JEEHP 파일만들기 예를들면 <?XML version="1.0" encoding="utf-8"?> <!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.1 20060430//EN" "http://jeehp.org/drxml/journalpublishing.dtd"> <?XML-stylesheet type="text/xsl" href="http://jeehp.org/drxml/viewnlm-v2.xsl"?> 이렇게시작하여만들었다. 이초기 heading 이매우중요하다. <?XML version="1.0" encoding="utf-8"?> 은이문서가 XML 문서이고 encoding은 TF-8 으로정하여준다는것이고 <!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.1 20060430//EN" "http://jeehp.org/drxml/journalpublishing.dtd"> 에서는 DTD를 v2.1로하고그파일은 http://jeehp.org/drxml/journalpublishing.dtd 에있다는것이다. 지금의 DTD의최신버전이 v2.3이다. <?XML-stylesheet type="text/xsl" href="http://jeehp.org/drxml/viewnlm-v2.xsl"?> 은화면에보여주는것은 viewnlm-v2.xsl이라는 xsl에따른다는것이다. - 4 -
여기서 DTD는따로내용을이해하여야하지만우리는그냥최신판을쓰는것이므로따로공부할필요는없다. 단지어떤 tag가어떤내용이라는것을정의한것이다수준에서이해하면된다. 또한 viewnlm-v2.xsl 역시 XML을화면에어떤형식으로뿌려주는지를정하는것이므로이것을바꾸면화면에나오는것이바뀌지만우리는역시손을대거나공부할필요없이최신판을쓰면된다. 만약 Response page를만들다가화면배열이맘에들지않는것이있다면이것을수정하여쓸수있다. XML 전문가가도와주어야하므로대부분의경우는프로그래머에게부탁하여수정한다. 이렇게하여처음만들어올린화면은 Fig.3과같다. Fig. 3. 처음 xml 화면으로띄운 Journal of Educational Evaluation for Health Professions. 이렇게 XML 파일로띄우고말면간단하지만문제는브라우저중에서는 XML을지원하지않는 opera 같은것도있고또한매번 journalpublishing.dtd과 viewnlml.xsl 파일을읽어서가져와야하므로웹브라우저에서 XML 파일을읽어오는데시간이꽤걸린다. 그러므로 XML 파일을그대로올리는것이아니라 HTML 파일로변환하여올린다. 그러면그파일만읽으므로빠르게사용자가화면에서볼수있다. Xalan-C 및 Xalan-Java 이두가지프로그램모두 XML 을 xsl 파일에맞추어 HTML 파일로변환시켜주는것인데 - 5 -
자바용은자바프로그램설치때문인지잘되지않아서 C로만든 Xalan-C 가된다는것을고항훈씨에게서배워서시행하여성공하였다. 그래서최종으로는 HTML 파일을올린다. 사용법은오후에배울것이다. 프로그램은무료이고 XALAN 설치는 http://blog.naver.com/huhsoleil2/70006714909 에설명이있다. 1. 두개의프로그램을다운로드한다. Xalan-C downloads ( 윈도우사용자용 http://ftp.kaist.ac.kr/pub/apache/xml/xalan-c/binaries/xalan-c_1_10_0-win32-msvc_6 0.zip ) Xerces-C downloads ( 윈도우사용자용 http://mirror.apache.or.kr/xml/xerces-c/binaries/xerces-c_2_7_0-windows_2000-msv c_60.zip ) 2. 압축을푼다. 3. 압축을풀은 XERCES 폴더의 BIN 폴더에서 xerces-c_2_7.dll를 XALAN의 BIN 폴더에복사한다. 4. Xalan-C_1-10_0-win32-msvc_60 BIN 폴더를환경변수에저장한다. 방법 > 내컴퓨터 마우스오른쪽눌러속성 고급 환경변수 시스템변수의 PATH 의끝에경로를추가한다. 이때 ; 를먼저붙인다. ;C: Program Files Xalan-C_1_10_0-win32-msvc_60 bin 5. xalan 밑의 bin 가지에 journalpublishing.dtd, 및이 DTD와관련된모든파일, nlmview-v2.xsl이같이있어야한다. 6. CMD 창에서다음과같이변환한다. XALANTRANSFORM INPUT 파일명.XML STYLE 파일명.XSL OUTPUT 파일명.HTML 예 ) xalantransform 1.XML viewnlm-v2.xsl 1.html 7) 만약 4 의과정처럼 path 에연결시키지않은경우에는 - 6 -
c: xalan-c 아래에다가 xalan 의파일을심고, bin 가지아래 xerces-c_2_7.dll 을심고, bin 가지아래나머지 journalpublishing.dtd 파일과관련 dtd 파일을전부심고, nlmview-v2.xsl 을심고 c: xalan-c bin> xalantransform 1.XML viewnlm-v2.xsl 1.html 이렇게치면변환된다. 코딩을모두수작업으로할것인가? 그럴수는없다. 대개하나의파일을다루는데숙련되면 15분걸린다고는하지만필터링프로그램이 5,000만원정도하는데 5,000만원이면그냥하나만드는것이낫겠다고여겨김수녕교수께부탁을드려 DrXML이라는필터링프로그램을하나제작하였다. 작업할때가장손이많이가는것을나열하면 Table, Reference, 참고문헌 hyperlink, 그리고저자사항순이다. 나머지 text파일부분은매우단순하고, 그림도단순하다. 이런부분만이라도저렴한비용으로만들어주신것프로그램으로자동처리할수있다면입력시간을매우짧게단축시킬수있다. 아직개선할점이있지만, 경비의문제도있으므로그것은작업을하면서천천히개선하여나가야할것이다. 또한학술지마다다른참고문헌작성법에따라수정을하여주어야한다. DrXML도사용법을배울것이다 (Fig. 4). Fig. 4. DrXML 초기화면. - 7 -
PMC XML 파일의점검 파일이제대로만들어졌는지점검할필요가있다. 다음과같은곳에서한다. PMC XML Validator http://www.pubmedcentral.nih.gov/utils/validate/xmlcheck.cgi PMC Style Checker http://www.pubmedcentral.nih.gov/utils/style_checker/stylechecker.cgi 이두가지를점검하는데 PMC Style Checker은완벽하게하기어렵지만 PMC XML Validator에서는오류가나면안된다. 문서편집기 crimson editor를사용하는것이좋다. notepad나 wordpad보다많은기능을제공하고전세계최고수준이면서도무료이다. http://crimsoneditor.com/ 에서내려받을수있다. 맺는말 이렇게작업하여처음 XML 파일을올리고다시 HTML로변환하여웹잡지를꾸몄다. 남들도하는것을구현하는것이대단한것은아니나적어도국내에서는최초로웹전용학술지가탄생하였다는점에서매우기뻤다. 영문이라서국내에서별로투고도없고, 국제적으로알려지지도않은학술지이나 PMC에등재되면조금사정이달라질것이다. 등재시키고나면다시 PubMed에등재준비를할작정이다. 아무쪼록나머지자세한내용은실무진을통하여공부할수있기바란다. 전체적인 PMC XML 파일작성은이런순으로하였다. - 8 -