CINXE.COM
Balisage: Report from the Field: PubMed Central, an XML-based Archive of Life Sciences Journal Articles
<!DOCTYPE HTML> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Balisage: Report from the Field: PubMed Central, an XML-based Archive of Life Sciences Journal Articles </title> <link rel="stylesheet" href="../../../balisage-proceedings.css" type="text/css"> <link href="https://fonts.googleapis.com/css?family=PT+Sans+Narrow&display=swap" rel="stylesheet"> <meta name="viewport" content="width=device-width, initial-scale=1"><script type="text/JavaScript"> var detailsElement = document.createElement("details"); if (!("open" in detailsElement)) { document.write('<script src="../../../js/bower_components/better-dom/dist/better-dom.js"><\/script>'); document.write('<script src="../../../js/bower_components/better-details-polyfill/dist/better-details-polyfill.js"><\/script>'); document.write('<script src="../../../js/classname.js"><\/script>'); } /* Enable CSS styling of figure elements in IE: * https://xopus.com/devblog/2008/style-unknown-elements.html */ var IEfix = document.createElement('figure'); </script><style type="text/css" id="inverter" media="none"> html { filter: invert(100%); } * { background-color: inherit; } /* do not invert SVG images */ img:not([src*=".svg"]), [style*="url("] { filter: invert(100%); } </style> <!--balisage-proceedings.xsl--><meta name="generator" content="Balisage Conference Proceedings XSLT (v1.2)"> <meta name="keywords" content="Archiving, JATS/NLM"> <link id="favicon" rel="shortcut icon" type="image/png" href="https://balisage.net/favicon.ico"><script type="text/javascript"> function hidecite(citeID) { cite = document.getElementById(citeID); cite.style.display = "none"; return; } function showcite(citeID,anchorID) { cite = document.getElementById(citeID); citeLeft = cite.style.left; citeTop = cite.style.top; if (citeLeft != (getLeft(anchorID)+"px") || citeTop != (getTop(anchorID)+"px")) { cite.style.display = "none"; } if (cite.style.display != "table-cell") { movebox(citeID, anchorID); cite.style.display = "table-cell"; } else { cite.style.display = "none"; }; return; } function movebox(citeID, anchorID) { cite = document.getElementById(citeID); // alert(cite.offsetWidth + " by " + cite.offsetHeight) horizontalOffset = getLeft(anchorID); // horizontalOffset = (inMain(anchorID)) ? // (horizontalOffset - 260) : (horizontalOffset + 20) // (horizontalOffset - (20 + cite.offsetWidth)) : (horizontalOffset + 20) verticalOffset = getTop(anchorID); // verticalOffset = (inMain(anchorID)) ? // (verticalOffset - 20) : (verticalOffset + 20) // (verticalOffset - (20 + cite.offsetHeight)) : (verticalOffset + 20) /* horizontalOffset = getAbsoluteLeft(anchorID) - getScrollLeft(anchorID) + 20; if (inMain(anchorID)) { horizontalOffset = horizontalOffset - 300; } verticalOffset = getAbsoluteTop(anchorID) - getScrollTop(anchorID) - 40; if (inMain(anchorID)) { verticalOffset = verticalOffset - 300; } */ cite.style.left = horizontalOffset + "px"; cite.style.top = verticalOffset + "px"; } function getLeft(objectID) { var left = getAbsoluteLeft(objectID) - getScrollLeft(objectID); left = (inMain(objectID)) ? (left - 260) : (left + 20) return left; } function getTop(objectID) { var top = getAbsoluteTop(objectID) - getScrollTop(objectID); top = (inMain(objectID)) ? (top - 50) : (top + 20) return top; } function getAbsoluteLeft(objectId) { // Get an object left position from the upper left viewport corner o = document.getElementById(objectId) oLeft = o.offsetLeft // Get left position from the parent object while(o.offsetParent!=null) { // Parse the parent hierarchy up to the document element oParent = o.offsetParent // Get parent object reference oLeft += oParent.offsetLeft // Add parent left position o = oParent } return oLeft } function getAbsoluteTop(objectId) { // Get an object top position from the upper left viewport corner o = document.getElementById(objectId) oTop = o.offsetTop // Get top position from the parent object while(o.offsetParent!=null) { // Parse the parent hierarchy up to the document element oParent = o.offsetParent // Get parent object reference oTop += oParent.offsetTop // Add parent top position o = oParent } return oTop } function getScrollLeft(objectId) { // Get a left scroll position o = document.getElementById(objectId) oLeft = o.scrollLeft // Get left position from the parent object while(o.offsetParent!=null) { // Parse the parent hierarchy up to the document element oParent = o.offsetParent // Get parent object reference oLeft += oParent.scrollLeft // Add parent left position o = oParent } return oLeft } function getScrollTop(objectId) { // Get a right scroll position o = document.getElementById(objectId) oTop = o.scrollTop // Get top position from the parent object while(o.offsetParent!=null) { // Parse the parent hierarchy up to the document element oParent = o.offsetParent // Get parent object reference oTop += oParent.scrollTop // Add parent top position o = oParent } return oTop } function inMain(objectId) { // returns true if in div#main o = document.getElementById(objectId) while(o.parentNode != null) { // Parse the parent hierarchy up to div#main oParent = o.parentNode if (o.id == "main") { return true; } o = oParent; } return false; } /* function showcite(citeID) { cite = document.getElementById(citeID); if (cite.style.display != "table-cell") { cite.style.display = "table-cell"; } else { cite.style.display = "none"; }; return; } */ </script></head> <body> <div class="skipnav"><a href="#main">Skip to contents.</a></div> <div id="balisage-header" role="banner" aria-label="Logo and breadcrumb navigation"> <!--* balisage-production-html *--><a href="https://www.balisage.net" class="event-logo"><img alt="Balisage event logo" height="105px" src="../../../icons/Longhaul-M.png"></a><h2 class="year-logo page-header"><span class="name">Balisage</span><span class="subhed">Symposium</span><span class="year">2010</span></h2> <nav class="breadnav" aria-label="breadcrumb" aria-role="navigation"> <ol class="breadcrumb" vocab="https://schema.org/" typeof="BreadcrumbList"> <li property="itemListElement" typeof="ListItem"><a property="item" typeof="WebPage" href="/"><span property="name">Balisage</span></a><meta property="position" content="1"> </li> <li property="itemListElement" typeof="ListItem"><a property="item" typeof="WebPage" href="../../.."><span property="name">Proceedings</span></a><meta property="position" content="2"> </li> <li property="itemListElement" typeof="ListItem"><a property="item" typeof="WebPage" href="../../cover.html"><span property="name">Volume 6 (2010)</span></a><meta property="position" content="3"> </li> <li property="itemListElement" typeof="ListItem"><a property="item" typeof="WebPage" href=""><span property="name">Report from the Field: PubMed Central, an XML-based Archive of Life Sciences Journal Articles</span></a><meta property="position" content="3"> </li> </ol> </nav> </div> <nav id="main-menu" role="navigation" aria-label="Menu"> <details role="menu"> <summary role="button" tabindex="0"> <svg role="img" viewBox="0 0 20 20" height="20" width="20"> <title>Menu</title> <path d="m0-0v4h20v-4h-20zm0 8v4h20v-4h-20zm0 8v4h20v-4h-20z" fill="currentColor"></path> </svg> Menu </summary> <div class="menu"> <ul class="hamburger"> <li><a href="../../../index.html">Series Home</a></li> <li><a href="../../../bibliography.html">Master bibliography</a></li> <li><a href="../../../authors.html">Author index</a></li> <li><a href="../../../topics.html">Topic index</a></li> <li><a href="../../../vol6/print/Beck01/BalisageVol6-Beck01.html">Print/Mobile</a></li> <li><a href="../../../vol6/epub/Beck01/BalisageVol6-Beck01.epub">EPUB</a></li> <li><a href="../../../vol6/xml/Beck01/BalisageVol6-Beck01.xml">XML Source</a></li> <li><a href="#d144960e49">The Data Evaluation Process</a></li> <li><a href="#d144960e110">PMC Processing Model</a></li> <li><a href="#d144960e156">XML Philosophy</a></li> <li><a href="#d144960e161">Some Strict Things</a></li> <li><a href="#d144960e170">Some Flexible Things</a></li> <li><a href="#d144960e175">The DTD</a></li> <li><a href="#d144960e184">PMC Tagging Style</a></li> <li><a href="#d144960e192">(Re)Usability of XML</a></li> <li><a href="#d144960e200">PMC Tools</a></li> <li><a href="#d144960e249">Our People</a></li> <li><a href="#d144960e260">Some Challenges: When Print Goes Away</a></li> <li><a href="#d144960e275">Conclusion</a></li> <li><a href="#d144960e283">Acknowledgments</a></li> <li><span class="themeswitchwrapper"></span></li> </ul> </div> </details> </nav> <nav class="navbar wide-mode" role="navigation" aria-label="Navigation Bar"> <ul class="navmenu"> <li><a class="navbar-link" href="../../../index.html">Series Home</a></li> <li><a class="navbar-link" href="../../../bibliography.html">Master bibliography</a></li> <li><a class="navbar-link" href="../../../authors.html">Author index</a></li> <li><a class="navbar-link" href="../../../topics.html">Topic index</a></li> <li><span class="themeswitchwrapper"></span><script> (function () { function isDeclarationSupported(property, value) { var prop = property + ':', el = document.createElement('test'), mStyle = el.style; el.style.cssText = prop + value; return mStyle[property]; } if (!isDeclarationSupported('filter', 'invert(100%)')) { document.querySelector('.invertedthemebutton').hidden = true; return; } // add Dark theme buttons var spans = document.getElementsByClassName('themeswitchwrapper'); for (var i = 0; i < spans.length; i++) { spans[i].innerHTML = '<label class="invertedthemebutton"><input type="checkbox" class="invertthemer"/>Dark theme: <span aria-hidden="true"></span></label>'; } // find all the checkboxes for Dark Theme: var checkboxes = document.getElementsByClassName('invertthemer'); /* Liam: use browser local storage to remember theme choice * between pages. */ function html5StorageSupported() { try { var ourTest = 'balisage-test'; localStorage.setItem(ourTest, ourTest); localStorage.removeItem(ourTest); return true; /* Note: not testing if it actually returns the right * item; we do not need perfection here. * * Downside of this method is it wil raise local storage * events in all open windows/tabs, but since we are * going to save the preference with a write event, * that's not really as big a deal as it sounds. * * Using try/catch because in private browsing, accessing * storage will throw an error - also with some privacy * blockers probably. Liam */ } catch(e) { return false; } return (window.localStorage !== undefined); } console.log("establishing theme"); const internalThemeLabel = 'balisage-theme'; const storeTheme = html5StorageSupported(); for (var i = 0; i < checkboxes.length; i++) { var checkbox = checkboxes[i]; checkbox.addEventListener('change', function () { // Triggers repaint in most browsers: inverter.setAttribute('media', this.checked ? 'screen' : 'none'); // Forces repaint in Chrome: inverter.textContent = inverter.textContent.trim(); var on = this.checked; if (storeTheme) { if (on) { localStorage.setItem(internalThemeLabel, "dark"); } else { localStorage.removeItem(internalThemeLabel); } } console.log("theme switch to " + (this.checked? " dark" : "light")); // make all checkboxes the same var all = document.getElementsByClassName('invertthemer'); for (var i = 0; i < all.length; i++) { all[i].checked = on; } }); if (storeTheme) { var themeName = localStorage.getItem(internalThemeLabel); if (themeName !== undefined) { if (themeName === "dark") { console.log("initiate dark theme"); /* since the light theme is the default, we only * need to do something if it's dark. * Note the use of === in case themeName is false. */ checkbox.checked = true; inverter.setAttribute('media', 'screen'); // Force repaint in Chrome: inverter.textContent = inverter.textContent.trim(); } } } } // foreach checkbox })(); </script></li> </ul> <ul class="navmenu" title="This Paper: "> <li>[Web]</li> <li><a class="navbar-link" href="../../../vol6/print/Beck01/BalisageVol6-Beck01.html">Print/Mobile</a></li> <li><a class="navbar-link" href="../../../vol6/epub/Beck01/BalisageVol6-Beck01.epub">EPUB</a></li> <li><a class="navbar-link" href="../../../vol6/xml/Beck01/BalisageVol6-Beck01.xml">XML Source</a></li> </ul> </nav> <nav id="index-mast" class="wide-mode" role="navigation"> <div class="content" aria-role="contentinfo" aria-label="title, author, abstract"> <details class="toc" open> <summary> <h2 class="inline-heading">Table of Contents</h2> </summary> <dl> <dt><span class="section"><a href="#d144960e49" class="toc">The Data Evaluation Process</a></span></dt> <dt><span class="section"><a href="#d144960e110" class="toc">PMC Processing Model</a></span></dt> <dt><span class="section"><a href="#d144960e156" class="toc">XML Philosophy</a></span></dt> <dd> <dl> <dt><span class="section"><a href="#d144960e161" class="toc">Some Strict Things</a></span></dt> <dt><span class="section"><a href="#d144960e170" class="toc">Some Flexible Things</a></span></dt> <dt><span class="section"><a href="#d144960e175" class="toc">The DTD</a></span></dt> <dt><span class="section"><a href="#d144960e184" class="toc">PMC Tagging Style</a></span></dt> <dt><span class="section"><a href="#d144960e192" class="toc">(Re)Usability of XML</a></span></dt> <dt><span class="section"><a href="#d144960e200" class="toc">PMC Tools</a></span></dt> </dl> </dd> <dt><span class="section"><a href="#d144960e249" class="toc">Our People</a></span></dt> <dt><span class="section"><a href="#d144960e260" class="toc">Some Challenges: When Print Goes Away</a></span></dt> <dt><span class="section"><a href="#d144960e275" class="toc">Conclusion</a></span></dt> <dt><span class="section"><a href="#d144960e283" class="toc">Acknowledgments</a></span></dt> </dl> </details> </div> </nav> <main id="main" role="main" aria-label="Main Content"> <div class="article"> <details class="citation-block"> <summary class="title">How to cite this paper</summary> <p class="citation">Beck, Jeff. “Report from the Field: PubMed Central, an XML-based Archive of Life Sciences Journal Articles.” Presented at International Symposium on XML for the Long Haul: Issues in the Long-term Preservation of XML, Montréal, Canada, August 2, 2010. In <cite>Proceedings of the International Symposium on XML for the Long Haul: Issues in the Long-term Preservation of XML</cite>. Balisage Series on Markup Technologies, vol. 6 (2010). <span class="doi">https://doi.org/10.4242/BalisageVol6.Beck01</span>. </p> </details> <div class="confgroup"><span class="conftitle">International Symposium on XML for the Long Haul: Issues in the Long-term Preservation of XML<br></span><span class="confdates">August 2, 2010<br></span></div> <div class="content" aria-role="contentinfo" aria-label="title, author, abstract"> <h1 class="article-title" id="d144960e2">Balisage Paper: Report from the Field: PubMed Central, an XML-based Archive of Life Sciences Journal Articles </h1> <details class="mast-box"> <summary class="title">Jeff Beck</summary> <div class="affiliation"> <p class="jobtitle">Technical Information Specialist</p> <p class="orgname">National Center for Biotechnology Information (NCBI), National Library of Medicine (NLM), National Institutes of Heath (NIH) </p> </div> <div class="personblurb"> <p id="d144960e22">Jeff has been involved in the PubMed Central project at NLM since 2000. He has been working journal publishing since the early 1990. </p> </div> </details> <div class="legalnotice-block"> <p id="d144960e30">Author's contribution to the Work was done as part of the Author's official duties as an NIH employee and is a Work of the United States Government. Therefore, copyright may not be established in the United States. 17 U.S.C. § 105. If Publisher intends to disseminate the Work outside the U.S., Publisher may secure copyright to the extent authorized under the domestic laws of the relevant country, subject to a paid-up, nonexclusive, irrevocable worldwide license to the United States in such copyrighted work to reproduce, prepare derivative works, distribute copies to the public and perform publicly and display publicly the work, and to permit others to do so. </p> </div> <div class="abstract"> <h2>Abstract</h2> <p id="d144960e11">PubMed Central (PMC) is an XML-based archive of life sciences journal literature at the U.S. National Institutes of Heath that allows public access to full-text journal articles. The archive was created in 2000 and has grown steadily to over 2 million records. The project has been successful in part because of the strict XML control and the flexibility that PMC givesre its submitters. </p> <p id="d144960e13">This paper gives an overview of the PMC data evaluation process; the XML processing model; the PMC philosophy toward XML use, including use of the NLM DTD, XML Taggging Style, usability or reusablilty of the XML, public XML tools, and our people; and some challenges we continue to face maintaining the archive. </p> </div> <details class="toc"> <summary> <h2 class="inline-heading">Table of Contents</h2> </summary> <dl> <dt><span class="section"><a href="#d144960e49" class="toc">The Data Evaluation Process</a></span></dt> <dt><span class="section"><a href="#d144960e110" class="toc">PMC Processing Model</a></span></dt> <dt><span class="section"><a href="#d144960e156" class="toc">XML Philosophy</a></span></dt> <dd> <dl> <dt><span class="section"><a href="#d144960e161" class="toc">Some Strict Things</a></span></dt> <dt><span class="section"><a href="#d144960e170" class="toc">Some Flexible Things</a></span></dt> <dt><span class="section"><a href="#d144960e175" class="toc">The DTD</a></span></dt> <dt><span class="section"><a href="#d144960e184" class="toc">PMC Tagging Style</a></span></dt> <dt><span class="section"><a href="#d144960e192" class="toc">(Re)Usability of XML</a></span></dt> <dt><span class="section"><a href="#d144960e200" class="toc">PMC Tools</a></span></dt> </dl> </dd> <dt><span class="section"><a href="#d144960e249" class="toc">Our People</a></span></dt> <dt><span class="section"><a href="#d144960e260" class="toc">Some Challenges: When Print Goes Away</a></span></dt> <dt><span class="section"><a href="#d144960e275" class="toc">Conclusion</a></span></dt> <dt><span class="section"><a href="#d144960e283" class="toc">Acknowledgments</a></span></dt> </dl> </details> </div> <p id="d144960e32">PubMed Central <a class="xref" id="d144960e34" href="javascript:showcite('cite-PMC01','d144960e34')">[PMC01]</a> is the U.S. National Institutes of Health's free digital archive of full-text biomedical and life sciences journal literature. Content is stored in XML at the article level. Structures above article (issues, volumes, etc.) are built as collections of articles. The content is displayed dynamically from the archival XML every time that a user retrieves an article. In that respect, every request confirms that the archival copy is still functional. </p> <p id="d144960e37">PMC contains over 2 million article records from over 1,000 titles with 10-15,000 new records being added each month. On average, 600,000-700,000 articles are retrieved by 400,000 unique users each day <a class="xref" id="d144960e39" href="javascript:showcite('cite-PMC02','d144960e39')">[PMC02]</a>. </p> <p id="d144960e42">PubMed Central was started in 1999 to allow free full-text access to journal articles. Participation by journals is voluntary. From the beginning there has always been a requirement that participating journals provide their content to NCBI marked up in some "reasonable" SGML or XML format along with the highest-resolution images available, PDF files (if available), and all supplementary material. Complete details on the PMC's file requirements are available <a class="xref" id="d144960e44" href="javascript:showcite('cite-PMC03','d144960e44')">[PMC03]</a>. </p> <p id="d144960e47">A discussion of what makes a "reasonable" SGML or XML format could be an interesting topic for another paper. For now, "reasonable" means that there is sufficient granularity in the source model to map those elements critical to the understanding of the article (and/or its functioning in the PMC system) from the original article to the appropriate place in the PMC XML model. </p> <div class="section" id="d144960e49"> <h2 class="title" style="clear: both">The Data Evaluation Process</h2> <p id="d144960e52">Journals joining PMC must pass two tests. First, the content must be approved for the NLM collection <a class="xref" id="d144960e54" href="javascript:showcite('cite-NLM01','d144960e54')">[NLM01]</a>. Essentially this is just a check to be sure that the content is "in scope" for a medical library. </p> <p id="d144960e57">Next the journal must go through a technical evaluation to "be sure that the journal can routinely supply files of sufficient quality to generate complete and accurate articles online without the need for human action to correct errors or omissions in the data." <a class="xref" id="d144960e59" href="javascript:showcite('cite-PMC03','d144960e59')">[PMC03]</a></p> <p id="d144960e61">For the evaluation, a journal supplies a sample set of articles (at least 50). These articles are put through a series of automated and human checks to ensure that the XML is valid and that it accurately represents the article content. There is a set of "Minimum Data Requirements" that must be met before the evaluation proceeds to the more human-intense content accuracy checking <a class="xref" id="d144960e63" href="javascript:showcite('cite-PMC04','d144960e63')">[PMC04]</a>. These minimum criteria are listed briefly below: <div class="orderedlist" id="d144960e66"> <ol style="list-style-type: decimal;"> <li id="d144960e67"> <p id="d144960e68">Each sample package must be complete: all required data files (XML/SGML, PDF if available, image files, supplementary data files) for every article in the package must be present and named correctly. </p> </li> <li id="d144960e70"> <p id="d144960e71">All XML files must conform to an acceptable journal article DTD.</p> </li> <li id="d144960e73"> <p id="d144960e74">All XML/SGML files must parse according to their DTD.</p> </li> <li id="d144960e76"> <p id="d144960e77">Regardless of the XML/SGML DTD used, the following metadata information must be present and tagged with correct values in every sample file: <div class="itemizedlist" id="d144960e79"> <ul> <li id="d144960e80"> <p id="d144960e81">Journal ISSN or other unique Journal ID</p> </li> <li id="d144960e83"> <p id="d144960e84">Journal Publisher</p> </li> <li id="d144960e86"> <p id="d144960e87">Copyright statement (if applicable)</p> </li> <li id="d144960e89"> <p id="d144960e90">License statement (if applicable)</p> </li> <li id="d144960e92"> <p id="d144960e93">Volume number</p> </li> <li id="d144960e95"> <p id="d144960e96">Issue number (if applicable)</p> </li> <li id="d144960e98"> <p id="d144960e99">Pagination/article sequence number</p> </li> <li id="d144960e101"> <p id="d144960e102">Issue-based or Article-based publication dates. Articles submitted to PMC must contain publication dates that accurately reflect the journal’s publication model. </p> </li> </ul> </div> </p> </li> <li id="d144960e104"> <p id="d144960e105">All image files for figures must be legible, and submitted in high-resolution TIFF or EPS format, according to the PMC Image File Requirements. </p> </li> </ol> </div> </p> <p id="d144960e108">These seem like simple and obvious things - xml files must be valid - but the minimum data requirements have greatly reduced the amount of rework that the PMC Data Evaluation group has to do. Certainly it helps to be explicit about even the most obvious of things. </p> </div> <div class="section" id="d144960e110"> <h2 class="title" style="clear: both">PMC Processing Model</h2> <p id="d144960e113">The PMC processing model is diagrammed in <a class="xref" href="#F1" id="d144960e115">Fig. 1</a>. For each article, we receive a set of files that includes the text in SGML or XML, the highest resolution figures available, a PDF file if one has been created for the article, and any supplementary material or supporting data. The text is converted to the current version of the NLM Archiving and Interchange DTD <a class="xref" id="d144960e117" href="javascript:showcite('cite-JATS01','d144960e117')">[JATS01]</a>, and the images are converted to a web-friendly format. The source SGML or XML, original images, supplementary data files, PDFs, and NLM XML files are stored in the archive. Articles are rendered online using the NLM XML, PDFs, supplementary data files, and the web-friendly images. <figure id="F1"> <p class="title">Fig. 1: PMC Processing Model</p> <div class="figure-contents"> <div class="mediaobject" id="d144960e123"><img class="figure-image" alt="" src="../../../vol6/graphics/Beck01/Beck01-001.png"></div> </div> </figure> </p> <p id="d144960e126">This processing model seems obvious now, but this is not how the content was always handled. The early PMC processing model is shown in <a class="xref" href="#F2" id="d144960e128">Fig. 2</a>. <figure id="F2"> <p class="title">Fig. 2: Original PMC Processing Model</p> <div class="figure-contents"> <div class="mediaobject" id="d144960e133"><img class="figure-image" alt="" src="../../../vol6/graphics/Beck01/Beck01-002.png"></div> </div> </figure> The images, PDFs, and supplementary material were handled in much the same way, but they are not interesting for this paper so I will just be concentrating on the text processing from now on. The SGML or XML was loaded into a database in its native format. When the article was requested by a user, the original text was pulled from the database and run through a piece of proprietary software to render it in HTML on the web. It is easy to see that this is not a scalable solution - especially if we were planning for any kind of success. </p> <p id="d144960e137">As we started getting more and more submitters, it became obvious that we needed to take the processing hit of conversion to a single text format up front and allow the database and rendering system concentrate on only one type of XML (<a class="xref" href="#F3" id="d144960e139">Fig. 3</a>). We created the pmc-1.dtd <a class="xref" id="d144960e141" href="javascript:showcite('cite-PMC05','d144960e141')">[PMC05]</a>, which was based on the first two submission DTDs that we had to PMC: keton.dtd, an SGML DTD somehow descended from ISO12083, and the BioMed Central article.dtd, an XML DTD that was very similar. <figure id="F3"> <p class="title">Fig. 3: Updated PMC Processing Model</p> <div class="figure-contents"> <div class="mediaobject" id="d144960e147"><img class="figure-image" alt="" src="../../../vol6/graphics/Beck01/Beck01-003.png"></div> </div> </figure> </p> <p id="d144960e151">The pmc-1.dtd was written to simplify access to full-text articles online. It was a small and simple DTD that soon showed its limitations as we started to convert more submission formats into it. It grew quickly, and quickly grew unwieldy. At this point, work began on a new DTD that became the NLM Archiving and Interchange Tag Suite <a class="xref" id="d144960e153" href="javascript:showcite('cite-Beck01','d144960e153')">[Beck01]</a>. </p> </div> <div class="section" id="d144960e156"> <h2 class="title" style="clear: both">XML Philosophy</h2> <p id="d144960e159">There are a number of things in our XML Philosophy, which may at first seem contradictory, that have lead to the success of PMC and the manageability of the article ingest work. In general, we have found a balance between strictness and flexibility that allows us to keep a certain amount of control but not be too restrictive on our submitters. </p> <div class="section" id="d144960e161"> <h3 class="title" style="clear: both">Some Strict Things</h3> <p id="d144960e164">The first thing we are strict about is that we do a complete review of any new DTD in which content is being submitted, as described above. We do not take articles in HTML. We also do a complete review of sample articles for each new journal to be sure that the content provider is able to provide content that is structurally and semantically correct. </p> <p id="d144960e166">Another thing we are strict about is that all content must be valid according to the DTD in which it was submitted - not just during data evaluation but in the ongoing production process as well. This seems like an obvious one, but there was a surprising amount of controversy about this in the early days of PMC, and we still get invalid files. Problems usually arise now because the submitter has made a DTD change (as simple as adding a new character entity to the DTD) without telling us or sending an updated DTD. </p> <p id="d144960e168">Also, we do not fix text; all content changes must be made by the submitter, and the content must be resubmitted. </p> </div> <div class="section" id="d144960e170"> <h3 class="title" style="clear: both">Some Flexible Things</h3> <p id="d144960e173">Some things we are not so strict about, which reduces some of the burden on our submitters. First, we don't require all content to be in our format or to follow our tagging rules. We don't force updates of content to latest DTD version, and we generally follow journal style where it does not interfere with our systems. </p> </div> <div class="section" id="d144960e175"> <h3 class="title" style="clear: both">The DTD</h3> <p id="d144960e178">We use the NLM Archiving and Interchange DTD as the format for all articles loaded to the PMC database. This model was created specifically for archiving article content. It was designed to be an "easy target to hit" when transforming content from the over 40 different input models that we receive content in. Currently we are writing content into version 3.0. </p> <p id="d144960e180">We do not migrate all content to each new version of the NLM DTD when it comes out. The system is robust enough to handle content from version 1.0 of the DTD through version 3.0, so we are not constantly churning the data. </p> <p id="d144960e182">We manage all of the versions of the DTD with an XML Catalog, which we also use to manage all of the input DTDs (SGML and XML). We maintain all mappings of PUBLIC and SYSTEM IDs for any DTD that we use in the XML catalog on our Linux machines and then create other catalogs from it each time it is updated. We create an SGML Catalog for the SGML tools that we use; a single "Oxygen" catalog that everyone on the team can use over the network with the XML editor; and a copy of the catalog that refers to http-based copies of the DTDs for PMC International sites. The XML Catalog is an essential piece of the PMC system. </p> </div> <div class="section" id="d144960e184"> <h3 class="title" style="clear: both">PMC Tagging Style</h3> <p id="d144960e187">Next, we've defined a set of rules for objects within articles that is more restrictive than the DTD. This allows us to have normalized structures (figures, tables, contributors) in articles for ease of processing and rendering. We call these rules the PMC Tagging Style, and all articles must "pass style" before being loaded to the database. They are documented in the PMC Tagging Guidelines <a class="xref" id="d144960e189" href="javascript:showcite('cite-PMC06','d144960e189')">[PMC06]</a>. </p> </div> <div class="section" id="d144960e192"> <h3 class="title" style="clear: both">(Re)Usability of XML</h3> <p id="d144960e195">Finally, our XML must be useable by others. The NLM XML that we create from whatever was submitted to us is always available to the submitting publisher (the content owner), and a subset of the articles that are Open Access are available to anyone for download through the PMC Open Archives Service <a class="xref" id="d144960e197" href="javascript:showcite('cite-PMC07','d144960e197')">[PMC07]</a>. This keeps us honest. We can't allow ourselves to take shortcuts with the data. All articles must be valid according to the public NLM DTD version that they reference, and we only use Processing Instructions for instructions about processing. </p> </div> <div class="section" id="d144960e200"> <h3 class="title" style="clear: both">PMC Tools</h3> <p id="d144960e203">Another thing that has been helpful is that we share tools we've built with our submitters. The more help we can give to people sending us content, the cleaner the content is, and the easier it is for us to process. Reducing or eliminating correction cycles greatly reduces cost and stress on the PMC team. <div class="itemizedlist" id="d144960e205"> <ul> <li id="LI1"> <p id="d144960e207">PMC Tagging Guidelines <a class="xref" id="d144960e209" href="javascript:showcite('cite-PMC06','d144960e209')">[PMC06]</a> - This is a document that describes the PMC Tagging Style mentioned above. We first created the guidelines as an internal document that we would use to keep track of any tagging rules we set up to keep our XML as normal as possible. As we got more and more questions from providers about how structures should be tagged, we decided to share our internal document. </p> <p id="d144960e212">The DTD allows many ways to tag certain structures, but we do have a preference for many of them, and sharing them has been helpful both for us and for PMC submitters. While we don't require content that is submitted to PMC be "to style", we certainly aren't going to turn it away. </p> </li> <li id="d144960e214"> <p id="d144960e215">PMC StyleChecker <a class="xref" id="d144960e217" href="javascript:showcite('cite-PMC08','d144960e217')">[PMC08]</a> - This is a tool that applies the rules defined in the Tagging Guidelines. It is an XSL transform that reviews each article and reports what it finds. This is the same transform that we have inline in our production process after validation against the DTD to confirm that the structures withing the articles we are loading into the database meet our standards for tagging. </p> <p id="d144960e220">It is available as an online tool that users can upload one article at a time or as a set of stylesheets that data providers can build into their workflow <a class="xref" id="d144960e222" href="javascript:showcite('cite-PMC09','d144960e222')">[PMC09]</a>. (). </p> </li> <li id="d144960e225"> <p id="d144960e226">Online SGML Validator <a class="xref" id="d144960e228" href="javascript:showcite('cite-PMC10','d144960e228')">[PMC10]</a> - This is a tool that validates SGML against the SGML DTDs that we have in the PMC system as long as the PUBLIC or SYSTEM ID is recognized in our SGML Catalog file. That is, as long as we have set up the particular SGML DTD for ingest in our system. </p> </li> <li id="d144960e231"> <p id="d144960e232">Online XML Validator <a class="xref" id="d144960e234" href="javascript:showcite('cite-PMC11','d144960e234')">[PMC11]</a> - This is a tool that validates any XML file whose SYSTEM ID is resolvable on the system or whose PUBLIC or SYSTEM ID is mapped in our XML Catalog file. </p> </li> <li id="d144960e237"> <p id="d144960e238">PMC Article Previewer <a class="xref" id="d144960e240" href="javascript:showcite('cite-PMC12','d144960e240')">[PMC12]</a> - This is a tool that runs an article through a PMC ingest workflow. First the SGML or XML is validated against the DTD per the rules given above for the SGML and XML validators. Then, if we recognize the DTD and have a conversion built for it, the article runs through the XSL transform to normalized PMC XML. This output is validated against the output DTD and is checked with the StyleChecker. If successfull at all of these steps, the article is displayed on a page in PMC display format so that the publisher can preview the article. Also, he has a good idea that his article will be ingested into PMC with no problems. </p> <p id="d144960e243">The Article Previewer requires users to login with a "My NCBI" account <a class="xref" id="d144960e245" href="javascript:showcite('cite-NCBI01','d144960e245')">[NCBI01]</a> because the content stays on the database until the user removes it. </p> </li> </ul> </div> </p> </div> </div> <div class="section" id="d144960e249"> <h2 class="title" style="clear: both">Our People</h2> <p id="d144960e252">Finally, there has to be some acknowledgment of the people who work on the project. We have a fantastic set of programmers that builds us some very nice software, and we have a good group of Content Managers who marshall the content through the workflow and deal with the exceptions and communicate with the publishers. But, we have a group in the middle that writes and maintains the XSL transforms. </p> <p id="d144960e254">It is not easy to find the right people for this group. Our document conversion writers need to have the strong attention to detail, unending curiosity, and a desire to always find a better way to do things of a good programmer. But, they also need to live in a world where mixed-content does not frightent them. Because we are writing transforms to maintain the meaning and intend of the origingal article, we slip out of the black-and-white prgrammer world into a world of grays. We need to represent the article that was submitted to the archive - and not necessarily the file that was submitted. </p> <p id="d144960e256">A successful PMC document conversion writer lives with a foot in both camps: the world of the wants and desires of the content owners and the rule-driven world of people who build and run large systems. This is not something that is unique to PubMed Central by any means, but it does surprise some people that our group is made up of people who studied English, Art, and Library Sciences rather than Systems Design, COBOL or The DOM. </p> <p id="d144960e258">Because we work exclusively with documents and document XML, I have found that it is much easier to start with a (technically oriented) person with a publishing or printing background and teach them how to write a transform than to take a brilliant programmer and teach them how to think about documents. </p> </div> <div class="section" id="d144960e260"> <h2 class="title" style="clear: both">Some Challenges: When Print Goes Away</h2> <p id="d144960e263">There are still a few things that give us problems in PMC. First, because of the rapid changes in article publishing since the invention of the Internet, journal publishing models have started to change. A business that had a pretty stable model of articles in issues that printed and mailed on a periodic schedule has been shifting to publishing on a continuous basis - with articles made available online as soon as they are ready and then collected into print issues after some time (or not collected and printed at all). </p> <p id="d144960e265">Early PMC was created based on the issue model, and we have had to be flexible to handle these changes. </p> <p id="d144960e267">One thing that we have done to remain flexible here to allow us to deal with this continuous publication model is to be very strict about publication dates in articles. Depending on the publication model of a journal, an article may have one publication date (for traditional print-based journals) or an article-level publication date and a collection-level publication date (for articles that are published online and then collected into a print or online issue. volume, or collection. See the essay on <pub-date> in the Tagging Guidelines <a class="xref" id="d144960e269" href="javascript:showcite('cite-PMC06','d144960e269')">[PMC06]</a>. </p> <p id="d144960e272">The rise of the internet has also brought about another "Continuous publication" idea, and that is continuous publication of the same document - or updates to an article. We have not seen too much of this in PMC yet, but we have been preparing ourselves. Each article in the PMC database is assigned an ArticleID and an ArticleInstanceID. Any new version of an article creates a new ArticleInstance, and all ArticleInstances for a given article have the same ArticleID. This allows us to store multiple versions of articles, retrieve the latest (by ArticleID), and to retrieve any version (by ArticleInstanceID). Fortunately, how the Journal Publishers will handle will need to be decided by the Journal Publishers. </p> </div> <div class="section" id="d144960e275"> <h2 class="title" style="clear: both">Conclusion</h2> <p id="d144960e278">The success we have had at PMC has really been due to a combination of factors including our strictness to upholding the XML models that we use, our flexibility (to a point) that we have with our content providers, the tools that we've put together to make our jobs and the jobs of our content providers easier, and teh fine people we have working on the team. To be fair, it is also nice to have the resources of the National Center for Biotechnology Information and the National Library of Medicine behind us as well as the support of the NIH in general, who have declared that copies of all peer-reviewed articles that report on NIH-funded research must be deposited to PubMed Central and made available within 12 months of the publication date <a class="xref" id="d144960e280" href="javascript:showcite('cite-Beck02','d144960e280')">[Beck02]</a>. I have to include that just to be fair. </p> </div> <div class="section" id="d144960e283"> <h2 class="title" style="clear: both">Acknowledgments</h2> <p id="d144960e286">This work was supported by the Intramural Research Program of the NIH, National Library of Medicine, National Center for Biotechnology Information. </p> </div> <div class="bibliography" id="d144960e288"> <h2 class="title">References</h2> <p class="bibliomixed" id="PMC01"><a href="#d144960e34">[PMC01] </a>PubMed Central, <a href="http://www.ncbi.nlm.nih.gov/pmc/" class="link">http://www.ncbi.nlm.nih.gov/pmc/</a>. </p> <p class="bibliomixed" id="PMC02"><a href="#d144960e39">[PMC02] </a>PubMed Central National Avisory Committee. (2009) Minutes of the PubMed Central National Avisory Committee Meeting, June 15, 2009. National Institutues of Health, Bethesda, MD. </p> <p class="bibliomixed" id="PMC03"><a href="#d144960e44">[PMC03] </a>How to Join PMC, <a href="http://www.ncbi.nlm.nih.gov/pmc/about/pubinfo.html" class="link">http://www.ncbi.nlm.nih.gov/pmc/about/pubinfo.html</a>. </p> <p class="bibliomixed" id="NLM01"><a href="#d144960e54">[NLM01] </a>NLM Collection Development and Acquisitions, <a href="http://www.nlm.nih.gov/tsd/acquisions/mainpage.html" class="link">http://www.nlm.nih.gov/tsd/acquisions/mainpage.html</a>. </p> <p class="bibliomixed" id="PMC04"><a href="#d144960e63">[PMC04] </a>Minimum Criteria for PMC Data Evaluation Submissions, <a href="http://www.ncbi.nlm.nih.gov/pmc/pmcdoc/mindatareq.pdf" class="link">http://www.ncbi.nlm.nih.gov/pmc/pmcdoc/mindatareq.pdf</a>. </p> <p class="bibliomixed" id="JATS01"><a href="#d144960e117">[JATS01] </a>NLM Archving and Interchange DTD, <a href="http://dtd.nlm.nih.gov/archiving/" class="link">http://dtd.nlm.nih.gov/archiving/</a>. </p> <p class="bibliomixed" id="PMC05"><a href="#d144960e141">[PMC05] </a>pmc-1.dtd, <a href="http://www.ncbi.nlm.nih.gov/pmc/pmcdoc/dtd/pmc-1.dtd" class="link">http://www.ncbi.nlm.nih.gov/pmc/pmcdoc/dtd/pmc-1.dtd</a>. </p> <p class="bibliomixed" id="Beck01"><a href="#d144960e153">[Beck01] </a>Beck and Lapeyre (2003) New Public Domain Journal Archiving and Interchange DTDs. XML 2003. <a href="http://www.idealliance.org/papers/dx_xml03/papers/04-01-02/04-01-02.html" class="link">http://www.idealliance.org/papers/dx_xml03/papers/04-01-02/04-01-02.html</a>. </p> <p class="bibliomixed" id="PMC06"><a href="#d144960e189">[PMC06] </a>PMC Tagging Guidelines, <a href="http://www.ncbi.nlm.nih.gov/pmc/pmcdoc/tagging-guidelines/article/style.html" class="link">http://www.ncbi.nlm.nih.gov/pmc/pmcdoc/tagging-guidelines/article/style.html</a>. </p> <p class="bibliomixed" id="PMC07"><a href="#d144960e197">[PMC07] </a>PMC Open Archive Interface, <a href="http://www.ncbi.nlm.nih.gov/pmc/about/oai.html" class="link">http://www.ncbi.nlm.nih.gov/pmc/about/oai.html</a>. </p> <p class="bibliomixed" id="PMC08"><a href="#d144960e217">[PMC08] </a>PMC Online StyleChecker, <a href="http://www.pubmedcentral.nih.gov/utils/style_checker/stylechecker.cgi" class="link">http://www.pubmedcentral.nih.gov/utils/style_checker/stylechecker.cgi</a>. </p> <p class="bibliomixed" id="PMC09"><a href="#d144960e222">[PMC09] </a>PMC Downloadable StyleChecker, <a href="http://www.ncbi.nlm.nih.gov/pmc/pmcdoc/tagging-guidelines/stylechecker/stylecheck-README.html" class="link">http://www.ncbi.nlm.nih.gov/pmc/pmcdoc/tagging-guidelines/stylechecker/stylecheck-README.html</a>. </p> <p class="bibliomixed" id="PMC10"><a href="#d144960e228">[PMC10] </a>PMC SGML Validator, <a href="http://www.pubmedcentral.nih.gov/utils/validate/sgmlcheck.cgi" class="link">http://www.pubmedcentral.nih.gov/utils/validate/sgmlcheck.cgi</a>. </p> <p class="bibliomixed" id="PMC11"><a href="#d144960e234">[PMC11] </a>PMC XML Validator, <a href="http://www.pubmedcentral.nih.gov/utils/validate/xmlcheck.cgi" class="link">http://www.pubmedcentral.nih.gov/utils/validate/xmlcheck.cgi</a>. </p> <p class="bibliomixed" id="PMC12"><a href="#d144960e240">[PMC12] </a>PMC Article Previewer, <a href="http://www.pubmedcentral.nih.gov/utils/pv/" class="link">http://www.pubmedcentral.nih.gov/utils/pv/</a>. </p> <p class="bibliomixed" id="NCBI01"><a href="#d144960e245">[NCBI01] </a>My NCBI, <a href="http://www.ncbi.nlm.nih.gov/sites/myncbi/" class="link">http://www.ncbi.nlm.nih.gov/sites/myncbi/</a>. </p> <p class="bibliomixed" id="Beck02"><a href="#d144960e280">[Beck02] </a>Beck, Jeff. “How XML made the NIH "Policy on Enhancing Public Access to Archived Publications Resulting from NIH-Funded Research" possible.” In Proceedings of Extreme Markup Languages 2005. <a href="http://conferences.idealliance.org/extreme/html/2005/Beck01/EML2005Beck01.html" class="link">http://conferences.idealliance.org/extreme/html/2005/Beck01/EML2005Beck01.html</a></p> </div> <div class="inline-citation" id="cite-PMC01"><a class="quiet" href="javascript:hidecite('cite-PMC01')" aria-label="Close Citation Box">×</a><p>PubMed Central, <a href="http://www.ncbi.nlm.nih.gov/pmc/" class="link">http://www.ncbi.nlm.nih.gov/pmc/</a>. </p> </div> <div class="inline-citation" id="cite-PMC02"><a class="quiet" href="javascript:hidecite('cite-PMC02')" aria-label="Close Citation Box">×</a><p>PubMed Central National Avisory Committee. (2009) Minutes of the PubMed Central National Avisory Committee Meeting, June 15, 2009. National Institutues of Health, Bethesda, MD. </p> </div> <div class="inline-citation" id="cite-PMC03"><a class="quiet" href="javascript:hidecite('cite-PMC03')" aria-label="Close Citation Box">×</a><p>How to Join PMC, <a href="http://www.ncbi.nlm.nih.gov/pmc/about/pubinfo.html" class="link">http://www.ncbi.nlm.nih.gov/pmc/about/pubinfo.html</a>. </p> </div> <div class="inline-citation" id="cite-NLM01"><a class="quiet" href="javascript:hidecite('cite-NLM01')" aria-label="Close Citation Box">×</a><p>NLM Collection Development and Acquisitions, <a href="http://www.nlm.nih.gov/tsd/acquisions/mainpage.html" class="link">http://www.nlm.nih.gov/tsd/acquisions/mainpage.html</a>. </p> </div> <div class="inline-citation" id="cite-PMC04"><a class="quiet" href="javascript:hidecite('cite-PMC04')" aria-label="Close Citation Box">×</a><p>Minimum Criteria for PMC Data Evaluation Submissions, <a href="http://www.ncbi.nlm.nih.gov/pmc/pmcdoc/mindatareq.pdf" class="link">http://www.ncbi.nlm.nih.gov/pmc/pmcdoc/mindatareq.pdf</a>. </p> </div> <div class="inline-citation" id="cite-JATS01"><a class="quiet" href="javascript:hidecite('cite-JATS01')" aria-label="Close Citation Box">×</a><p>NLM Archving and Interchange DTD, <a href="http://dtd.nlm.nih.gov/archiving/" class="link">http://dtd.nlm.nih.gov/archiving/</a>. </p> </div> <div class="inline-citation" id="cite-PMC05"><a class="quiet" href="javascript:hidecite('cite-PMC05')" aria-label="Close Citation Box">×</a><p>pmc-1.dtd, <a href="http://www.ncbi.nlm.nih.gov/pmc/pmcdoc/dtd/pmc-1.dtd" class="link">http://www.ncbi.nlm.nih.gov/pmc/pmcdoc/dtd/pmc-1.dtd</a>. </p> </div> <div class="inline-citation" id="cite-Beck01"><a class="quiet" href="javascript:hidecite('cite-Beck01')" aria-label="Close Citation Box">×</a><p>Beck and Lapeyre (2003) New Public Domain Journal Archiving and Interchange DTDs. XML 2003. <a href="http://www.idealliance.org/papers/dx_xml03/papers/04-01-02/04-01-02.html" class="link">http://www.idealliance.org/papers/dx_xml03/papers/04-01-02/04-01-02.html</a>. </p> </div> <div class="inline-citation" id="cite-PMC06"><a class="quiet" href="javascript:hidecite('cite-PMC06')" aria-label="Close Citation Box">×</a><p>PMC Tagging Guidelines, <a href="http://www.ncbi.nlm.nih.gov/pmc/pmcdoc/tagging-guidelines/article/style.html" class="link">http://www.ncbi.nlm.nih.gov/pmc/pmcdoc/tagging-guidelines/article/style.html</a>. </p> </div> <div class="inline-citation" id="cite-PMC07"><a class="quiet" href="javascript:hidecite('cite-PMC07')" aria-label="Close Citation Box">×</a><p>PMC Open Archive Interface, <a href="http://www.ncbi.nlm.nih.gov/pmc/about/oai.html" class="link">http://www.ncbi.nlm.nih.gov/pmc/about/oai.html</a>. </p> </div> <div class="inline-citation" id="cite-PMC08"><a class="quiet" href="javascript:hidecite('cite-PMC08')" aria-label="Close Citation Box">×</a><p>PMC Online StyleChecker, <a href="http://www.pubmedcentral.nih.gov/utils/style_checker/stylechecker.cgi" class="link">http://www.pubmedcentral.nih.gov/utils/style_checker/stylechecker.cgi</a>. </p> </div> <div class="inline-citation" id="cite-PMC09"><a class="quiet" href="javascript:hidecite('cite-PMC09')" aria-label="Close Citation Box">×</a><p>PMC Downloadable StyleChecker, <a href="http://www.ncbi.nlm.nih.gov/pmc/pmcdoc/tagging-guidelines/stylechecker/stylecheck-README.html" class="link">http://www.ncbi.nlm.nih.gov/pmc/pmcdoc/tagging-guidelines/stylechecker/stylecheck-README.html</a>. </p> </div> <div class="inline-citation" id="cite-PMC10"><a class="quiet" href="javascript:hidecite('cite-PMC10')" aria-label="Close Citation Box">×</a><p>PMC SGML Validator, <a href="http://www.pubmedcentral.nih.gov/utils/validate/sgmlcheck.cgi" class="link">http://www.pubmedcentral.nih.gov/utils/validate/sgmlcheck.cgi</a>. </p> </div> <div class="inline-citation" id="cite-PMC11"><a class="quiet" href="javascript:hidecite('cite-PMC11')" aria-label="Close Citation Box">×</a><p>PMC XML Validator, <a href="http://www.pubmedcentral.nih.gov/utils/validate/xmlcheck.cgi" class="link">http://www.pubmedcentral.nih.gov/utils/validate/xmlcheck.cgi</a>. </p> </div> <div class="inline-citation" id="cite-PMC12"><a class="quiet" href="javascript:hidecite('cite-PMC12')" aria-label="Close Citation Box">×</a><p>PMC Article Previewer, <a href="http://www.pubmedcentral.nih.gov/utils/pv/" class="link">http://www.pubmedcentral.nih.gov/utils/pv/</a>. </p> </div> <div class="inline-citation" id="cite-NCBI01"><a class="quiet" href="javascript:hidecite('cite-NCBI01')" aria-label="Close Citation Box">×</a><p>My NCBI, <a href="http://www.ncbi.nlm.nih.gov/sites/myncbi/" class="link">http://www.ncbi.nlm.nih.gov/sites/myncbi/</a>. </p> </div> <div class="inline-citation" id="cite-Beck02"><a class="quiet" href="javascript:hidecite('cite-Beck02')" aria-label="Close Citation Box">×</a><p>Beck, Jeff. “How XML made the NIH "Policy on Enhancing Public Access to Archived Publications Resulting from NIH-Funded Research" possible.” In Proceedings of Extreme Markup Languages 2005. <a href="http://conferences.idealliance.org/extreme/html/2005/Beck01/EML2005Beck01.html" class="link">http://conferences.idealliance.org/extreme/html/2005/Beck01/EML2005Beck01.html</a></p> </div> </div> <div id="balisage-footer"> <h3>Balisage Series on Markup Technologies</h3> </div> </main> </body> </html>