<?xml version=“1.0”?> <!– Originally created by Aptara, Technology Group –> <!– Revised by CrossRef to accomodate NISO JATS 1.0 –>
<xsl:stylesheet version=“2.0”
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.crossref.org/schema/4.3.1" xmlns:xsldoc="http://www.bacman.net/XSLdoc" xmlns:xlink="http://www.w3.org/1999/xlink" exclude-result-prefixes="xsldoc">
<xsl:output method=“xml”
indent="yes" encoding="UTF-8"/>
<xsl:variable name=“date” select=“adjust-date-to-timezone(current-date(), ())”/> <xsl:variable name=“time” select=“adjust-time-to-timezone(current-time(), ())”/> <xsl:variable name=“tempdatetime” select=“concat($date,”,$time)”/> <xsl:variable name=“datetime” select=“translate($tempdatetime,‘:-.’,”)”/>
<!– ========================================================================== –> <!– Root Element –> <!– ========================================================================== –> <xsl:template match=“/”>
<xsl:choose> <xsl:when test="article"> <doi_batch version="4.3.1"> <xsl:attribute name="xsi:schemaLocation">http://www.crossref.org/schema/4.3.1 http://www.crossref.org/schema/deposit/crossref4.3.1.xsd</xsl:attribute> <head> <xsl:apply-templates select="//front"/> </head> <body> <journal> <xsl:apply-templates select="//journal-meta"/> <xsl:if test="//pub-date|//article-meta/volume|//article-meta/issue"> <journal_issue> <xsl:apply-templates select="//pub-date"/> <xsl:apply-templates select="//article-meta/volume"/> <xsl:apply-templates select="//article-meta/issue"/> </journal_issue> </xsl:if> <xsl:apply-templates select="//article-meta/title-group"/> </journal> </body> </doi_batch> </xsl:when> <xsl:otherwise> <xsl:message terminate="yes"/> </xsl:otherwise> </xsl:choose>
</xsl:template>
<!– ========================================================================== –> <!– Front Matter Element –> <!– ========================================================================== –> <xsl:template match=“front”>
<doi_batch_id> <xsl:choose> <xsl:when test="article-meta/article-id[@pub-id-type='art-access-id']"> <xsl:apply-templates select="article-meta/article-id[@pub-id-type='art-access-id']"/> </xsl:when> <xsl:when test="article-meta/article-id[@pub-id-type='publisher-id']"> <xsl:apply-templates select="article-meta/article-id[@pub-id-type='publisher-id']"/> </xsl:when> <xsl:when test="article-meta/article-id[@pub-id-type='doi']"> <xsl:apply-templates select="article-meta/article-id[@pub-id-type='doi']"/> </xsl:when> <xsl:when test="article-meta/article-id[@pub-id-type='medline']"> <xsl:apply-templates select="article-meta/article-id[@pub-id-type='medline']"/> </xsl:when> <xsl:when test="article-meta/article-id[@pub-id-type='pii']"> <xsl:apply-templates select="article-meta/article-id[@pub-id-type='pii']"/> </xsl:when> <xsl:when test="article-meta/article-id[@pub-id-type='sici']"> <xsl:apply-templates select="article-meta/article-id[@pub-id-type='sici']"/> </xsl:when> <xsl:when test="article-meta/article-id[@pub-id-type='pmid']"> <xsl:apply-templates select="article-meta/article-id[@pub-id-type='pmid']"/> </xsl:when> <xsl:when test="article-meta/article-id[@pub-id-type='other']"> <xsl:apply-templates select="article-meta/article-id[@pub-id-type='other']"/> </xsl:when> <xsl:otherwise> <xsl:comment>No article-id has been entered by user</xsl:comment> </xsl:otherwise> </xsl:choose> </doi_batch_id> <timestamp> <xsl:value-of select="$datetime"/> </timestamp> <depositor> <name> <xsl:choose> <xsl:when test="//journal-meta/publisher"> <xsl:apply-templates select="//journal-meta/publisher/publisher-name"/> </xsl:when> <xsl:otherwise> <xsl:comment>Publisher's Name not found in the input file</xsl:comment> </xsl:otherwise> </xsl:choose> </name> <!--there is no appropriate place in NLM/JATS XML for a CrossRef deposit email, this will be added during processing (method TBD)--> <email_address>TBD</email_address> </depositor> <registrant> <xsl:choose> <xsl:when test="//journal-meta/publisher"> <xsl:apply-templates select="//journal-meta/publisher/publisher-name"/> </xsl:when> <xsl:otherwise> <xsl:comment>Publisher's name not found in the input file</xsl:comment> </xsl:otherwise> </xsl:choose> </registrant>
</xsl:template>
<!– ========================================================================== –> <!– Journal Metadata Element –> <!– ========================================================================== –> <xsl:template match=“journal-meta”>
<journal_metadata language="en"> <xsl:choose> <xsl:when test="journal-title-group/journal-title"> <full_title> <xsl:value-of select="journal-title-group/journal-title"/> </full_title> </xsl:when> <xsl:when test="journal-title"> <full_title> <xsl:value-of select="journal-title"/> </full_title> </xsl:when> <xsl:otherwise> <full_title> <xsl:message terminate="yes">Journal full title is not available in the Input file</xsl:message> </full_title> </xsl:otherwise> </xsl:choose> <xsl:choose> <xsl:when test="abbrev-journal-title"> <abbrev_title> <xsl:value-of select="abbrev-journal-title"/> </abbrev_title> </xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="issn"> <xsl:apply-templates select="issn"/> </xsl:when> <xsl:otherwise> <xsl:message terminate="yes">ISSN is not available in the Input file</xsl:message> </xsl:otherwise> </xsl:choose> <xsl:if test="../article-meta/article-id[@pub-id-type='coden']"> <coden> <xsl:value-of select="../article-meta/article-id[@pub-id-type='coden']"/> </coden> </xsl:if> </journal_metadata>
</xsl:template>
<!– ========================================================================== –> <!– ISSN –> <!– ========================================================================== –> <xsl:template match=“issn”>
<xsl:if test="@pub-type='ppub'"> <issn media_type="print"> <xsl:apply-templates/> </issn> </xsl:if> <xsl:if test="@pub-type='epub' or @pub-type='epub-ppub'"> <issn media_type="electronic"> <xsl:apply-templates/> </issn> </xsl:if> <xsl:if test="not(@pub-type)"> <issn media_type="print"> <xsl:apply-templates/> </issn> </xsl:if>
</xsl:template>
<!– ========================================================================== –> <!– Publication Date –> <!– ========================================================================== –> <xsl:template match=“pub-date”>
<xsl:if test="@pub-type='ppub'"> <publication_date media_type="print"> <xsl:if test="month"> <month> <xsl:apply-templates select="month"/> </month> </xsl:if> <xsl:if test="day"> <day> <xsl:apply-templates select="day"/> </day> </xsl:if> <year> <xsl:apply-templates select="year"/> </year> </publication_date> </xsl:if> <xsl:if test="@pub-type='epub' or @pub-type='epub-ppub'"> <publication_date media_type="online"> <xsl:if test="month"> <month> <xsl:apply-templates select="month"/> </month> </xsl:if> <xsl:if test="day"> <day> <xsl:apply-templates select="day"/> </day> </xsl:if> <year> <xsl:apply-templates select="year"/> </year> </publication_date> </xsl:if> <xsl:if test="not(@pub-type)"> <publication_date media_type="print"> <xsl:if test="month"> <month> <xsl:apply-templates select="month"/> </month> </xsl:if> <xsl:if test="day"> <day> <xsl:apply-templates select="day"/> </day> </xsl:if> <year> <xsl:apply-templates select="year"/> </year> </publication_date> </xsl:if>
</xsl:template>
<!– ========================================================================== –> <!– Volume/Issue –> <!– ========================================================================== –> <xsl:template match=“//article-meta/volume”>
<journal_volume> <volume> <xsl:apply-templates/> </volume> </journal_volume>
</xsl:template>
<xsl:template match=“//article-meta/issue”>
<issue> <xsl:apply-templates/> </issue>
</xsl:template>
<!– ========================================================================== –> <!– Title Group –> <!– ========================================================================== –> <xsl:template match=“//article-meta/title-group”>
<journal_article publication_type="full_text"> <titles> <title> <xsl:apply-templates select="article-title"/> </title> </titles> <xsl:if test="//article-meta/contrib-group"> <xsl:apply-templates select="../contrib-group"/> </xsl:if> <xsl:apply-templates select="//pub-date"/> <xsl:if test="//article-meta/fpage|//article-meta/lpage"> <xsl:apply-templates select="//article-meta/fpage|//article-meta/lpage"/> </xsl:if> <xsl:if test="//article-id[@pub-id-type='doi']|//article-id[@pub-id-type='pii']|//article-id[@pub-id-type='sici']"> <xsl:call-template name="publisher-item"/> </xsl:if> <doi_data> <doi> <xsl:choose> <xsl:when test="//article-meta/article-id[@pub-id-type='doi']"> <xsl:apply-templates select="//article-meta/article-id[@pub-id-type='doi']"/> </xsl:when> <xsl:otherwise> <xsl:message terminate="yes">DOI entry is not available in the Input/Meta file(s)</xsl:message> </xsl:otherwise> </xsl:choose> </doi> <timestamp> <xsl:value-of select="$datetime"/> </timestamp> <resource> <xsl:choose> <xsl:when test="//article-meta/self-uri/@xlink:href"> <xsl:apply-templates select="//article-meta/self-uri/@xlink:href"/> </xsl:when> <xsl:otherwise> <xsl:comment>No Resource entry has been entered by the user</xsl:comment> </xsl:otherwise> </xsl:choose> </resource> </doi_data> <xsl:apply-templates select="//back/ref-list"/> </journal_article>
</xsl:template>
<!– ========================================================================== –> <!– Article Contributors –> <!– ========================================================================== –> <xsl:template match=“//article-meta/contrib-group”>
<contributors> <xsl:apply-templates select="contrib"/> </contributors>
</xsl:template>
<xsl:template match=“contrib”>
<xsl:if test="position()=1"> <person_name sequence="first" contributor_role="author"> <xsl:apply-templates select="name"/> <xsl:if test="xref[@ref-type='aff' and @rid]"> <xsl:call-template name="multi-ref"> <xsl:with-param name="tokens" select="xref[@ref-type='aff']/@rid"/> </xsl:call-template> </xsl:if> </person_name> </xsl:if> <xsl:if test="position()>1"> <person_name sequence="additional" contributor_role="author"> <xsl:apply-templates select="name"/> <xsl:if test="xref[@ref-type='aff' and @rid]"> <xsl:call-template name="multi-ref"> <xsl:with-param name="tokens" select="xref[@ref-type='aff']/@rid"/> </xsl:call-template> </xsl:if> </person_name> </xsl:if>
</xsl:template>
<xsl:template match=“contrib-group/contrib/name”>
<xsl:if test="given-names"> <given_name> <xsl:apply-templates select="given-names"/> </given_name> </xsl:if> <surname> <xsl:apply-templates select="surname"/> </surname> <xsl:if test="suffix"> <suffix> <xsl:apply-templates select="suffix"/> </suffix> </xsl:if>
</xsl:template>
<xsl:template name=“multi-ref”>
<xsl:param name="tokens"/> <xsl:if test="$tokens"> <xsl:choose> <xsl:when test="contains($tokens,' ')"> <xsl:call-template name="one-ref"> <xsl:with-param name="token" select="substring-before($tokens,' ')"/> </xsl:call-template> <xsl:call-template name="multi-ref"> <xsl:with-param name="tokens" select="substring-after($tokens,' ')"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:call-template name="one-ref"> <xsl:with-param name="token" select="$tokens"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:if>
</xsl:template>
<xsl:template name=“one-ref”>
<xsl:param name="token"/> <affiliation> <xsl:value-of select="//aff[@id=$token]"/> </affiliation>
</xsl:template>
<xsl:template match=“aff”> </xsl:template>
<xsl:template match=“aff/label”> </xsl:template>
<!– ========================================================================== –> <!– Article Page Information –> <!– ========================================================================== –> <xsl:template match=“article-meta/fpage”>
<pages> <first_page> <xsl:apply-templates/> </first_page> <xsl:if test="../lpage"> <last_page> <xsl:value-of select="../lpage"/> </last_page> </xsl:if> </pages>
</xsl:template>
<xsl:template match=“lpage”> </xsl:template>
<!– ========================================================================== –> <!– Publication Identifier –> <!– ========================================================================== –> <xsl:template name=“publisher-item”>
<publisher_item> <xsl:if test="//article-id[@pub-id-type='doi']"> <identifier id_type="doi"> <xsl:value-of select="//article-id[@pub-id-type='doi']"/> </identifier> </xsl:if> <xsl:if test="//article-id[@pub-id-type='pii']"> <identifier id_type="pii"> <xsl:value-of select="//article-id[@pub-id-type='pii']"/> </identifier> </xsl:if> <xsl:if test="//article-id[@pub-id-type='sici']"> <identifier id_type="sici"> <xsl:value-of select="//article-id[@pub-id-type='sici']"/> </identifier> </xsl:if> </publisher_item>
</xsl:template>
<!– ========================================================================== –> <!– Citations –> <!– ========================================================================== –> <xsl:template match=“ref-list”>
<citation_list> <xsl:apply-templates select="ref"/> </citation_list>
</xsl:template>
<xsl:template match=“ref”>
<xsl:variable name="key" select="concat($datetime,'_',@id)"/> <citation> <xsl:attribute name="key">key<xsl:value-of select="$key"/></xsl:attribute> <xsl:apply-templates select="element-citation"/> <xsl:apply-templates select="citation"/> </citation>
</xsl:template>
<xsl:template match=“element-citation | citation”>
<xsl:choose> <xsl:when test="@publication-type='journal' or @citation-type='journal'"> <xsl:if test="issn"> <issn> <xsl:apply-templates select="issn"/> </issn> </xsl:if> <xsl:if test="source"> <journal_title> <xsl:apply-templates select="source"/> </journal_title> </xsl:if> <xsl:if test="collab"> <xsl:apply-templates select="collab"/> </xsl:if> <xsl:if test="person-group"> <xsl:apply-templates select="person-group/name|person-group/collab"/> </xsl:if> <xsl:if test="volume"> <volume> <xsl:apply-templates select="volume"/> </volume> </xsl:if> <xsl:if test="issue"> <issue> <xsl:apply-templates select="issue"/> </issue> </xsl:if> <xsl:if test="fpage"> <first_page> <xsl:apply-templates select="fpage"/> </first_page> </xsl:if> <xsl:if test="year"> <cYear> <xsl:value-of select="replace(year, '[a-zA-Z]', '')" /> </cYear> </xsl:if> <xsl:if test="article-title"> <article_title> <xsl:apply-templates select="article-title"/> </article_title> </xsl:if> </xsl:when> <xsl:when test="@citation-type='book' or @citation-type='conf-proceedings' or @citation-type='confproc' or @citation-type='other' or @publication-type='book' or @publication-type='conf-proceedings' or @publication-type='confproc' or @publication-type='other'"> <xsl:if test="source"> <volume_title> <xsl:apply-templates select="source"/> </volume_title> </xsl:if> <xsl:if test="collab"> <xsl:apply-templates select="collab"/> </xsl:if> <xsl:if test="person-group"> <xsl:apply-templates select="person-group/name|person-group/collab"/> </xsl:if> <xsl:if test="edition"> <edition_number> <xsl:apply-templates select="edition"/> </edition_number> </xsl:if> <xsl:if test="fpage"> <first_page> <xsl:apply-templates select="fpage"/> </first_page> </xsl:if> <xsl:if test="year"> <cYear> <xsl:value-of select="replace(year, '[a-zA-Z]', '')" /> </cYear> </xsl:if> <xsl:if test="article-title"> <article_title> <xsl:apply-templates select="article-title"/> </article_title> </xsl:if> </xsl:when> <xsl:otherwise> <unstructured_citation> <xsl:value-of select="."/> </unstructured_citation> </xsl:otherwise> </xsl:choose> </xsl:template>
<xsl:template match=“back//name”>
<xsl:if test="position()=1"> <author> <xsl:apply-templates select="surname"/> </author> </xsl:if>
</xsl:template>
<xsl:template match=“back//collab”>
<xsl:if test="position()=1"> <author> <xsl:apply-templates/> </author> </xsl:if>
</xsl:template>
</xsl:stylesheet>