diff options
| author | William Harrington <kb0iic@berzerkula.org> | 2014-11-27 16:29:31 -0600 | 
|---|---|---|
| committer | William Harrington <kb0iic@berzerkula.org> | 2014-11-27 16:29:31 -0600 | 
| commit | 7df987a652b93d55dd8eca363706d3bacc469b55 (patch) | |
| tree | 17f84ce0fee76a3a0476b714eae09486ab2470e6 /stylesheets/lfs-xsl/docbook-xsl-snapshot/xhtml/.svn/text-base/biblio-iso690.xsl.svn-base | |
Diffstat (limited to 'stylesheets/lfs-xsl/docbook-xsl-snapshot/xhtml/.svn/text-base/biblio-iso690.xsl.svn-base')
| -rw-r--r-- | stylesheets/lfs-xsl/docbook-xsl-snapshot/xhtml/.svn/text-base/biblio-iso690.xsl.svn-base | 1300 | 
1 files changed, 1300 insertions, 0 deletions
diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/xhtml/.svn/text-base/biblio-iso690.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/xhtml/.svn/text-base/biblio-iso690.xsl.svn-base new file mode 100644 index 0000000..d5d54ec --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/xhtml/.svn/text-base/biblio-iso690.xsl.svn-base @@ -0,0 +1,1300 @@ +<?xml version="1.0" encoding="ASCII"?> +<!--This file was created automatically by html2xhtml--> +<!--from the HTML stylesheets.--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0"> + + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     The original code for processing bibliography in ISO690 style +     was provided by Jana Dvorakova <jana4u@seznam.cz> + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<!-- if biblioentry.alt.primary.seps is set to nonzero value then use alternative separators for primary responsibility - $alt.person.two.sep, $alt.person.last.sep, $alt.person.more.sep  --> +<xsl:param name="biblioentry.alt.primary.seps" select="0"/> + +<!-- how many authors will be printed if there is more than three authors - set to number 1 (default value), 2 or 3 --> +<xsl:param name="biblioentry.primary.count" select="1"/> + +<!-- ==================================================================== --> + +<xsl:template name="iso690.makecitation"> +<!-- Types of resources --> +  <xsl:choose> + +    <!-- SYSTEMS OF ELECTRONIC COMMUNICATION : ENTIRE MESSAGE SYSTEM --> +    <!-- same as Monographs --> +    <xsl:when test="./@role='messagesystem'"> +      <xsl:call-template name="iso690.monogr"/> +    </xsl:when> + +    <!-- SYSTEMS OF ELECTRONIC COMMUNICATION : ELECTRONIC MESSAGES --> +    <!-- same as Contributions to Monographs --> +    <xsl:when test="./@role='message'"> +      <xsl:call-template name="iso690.paper.mon"/> +    </xsl:when> + +    <!-- SERIALS --> +    <xsl:when test="./@role='serial' or ./biblioid/@class='issn' or ./issn"> +      <xsl:call-template name="iso690.serial"/> +    </xsl:when> + +    <!-- PARTS OF MONOGRAPHS --> +    <xsl:when test="./@role='part' or (./bibliomisc[@role='secnum']|./bibliomisc[@role='sectitle'])"> +      <xsl:call-template name="iso690.monogr.part"/> +    </xsl:when> + +    <!-- CONTRIBUTIONS TO MONOGRAPHS --> +    <xsl:when test="./@role='contribution' or (./biblioset/@relation='part' and ./biblioset/@relation='book')"> +      <xsl:call-template name="iso690.paper.mon"/> +    </xsl:when> + +    <!-- ARTICLES, ETC., IN SERIALS --> +    <xsl:when test="./@role='article' or (./biblioset/@relation='journal' and ./biblioset/@relation='article')"> +      <xsl:call-template name="iso690.article"/> +    </xsl:when> + +    <!-- PATENT DOCUMENTS --> +    <xsl:when test="./@role='patent' or (./bibliomisc[@role='patenttype'] and ./bibliomisc[@role='patentnum'])"> +      <xsl:call-template name="iso690.patent"/> +    </xsl:when> + +    <!-- MONOGRAPHS --> +    <xsl:otherwise> +      <xsl:call-template name="iso690.monogr"/> +    </xsl:otherwise> + +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- MONOGRAPHS --> +<xsl:template name="iso690.monogr"> +  <!-- Primary responsibility --> +  <xsl:call-template name="iso690.primary"/> +  <!-- Title and Type of medium --> +  <xsl:call-template name="iso690.title"/> +  <!-- Subordinate responsibility --> +  <xsl:call-template name="iso690.secondary"/> +  <!-- Edition --> +  <xsl:call-template name="iso690.edition"/> +  <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation --> +  <xsl:call-template name="iso690.pub"/> +  <!-- Extent --> +  <xsl:call-template name="iso690.extent"/> +  <!-- Series --> +  <xsl:call-template name="iso690.serie"/> +  <!-- Notes --> +  <xsl:call-template name="iso690.notice"/> +  <!-- Avaibility and access --> +  <xsl:call-template name="iso690.access"/> +  <!-- Standard number --> +  <xsl:call-template name="iso690.isbn"/> +</xsl:template> + +<!-- SERIALS --> +<xsl:template name="iso690.serial"> +  <!-- Title and Type of medium --> +  <xsl:call-template name="iso690.title"/> +  <!-- Responsibility [nonEL] --> +  <xsl:if test="not(./bibliomisc[@role='medium'])"> +    <xsl:call-template name="iso690.secondary"/> +  </xsl:if> +  <!-- Edition --> +  <xsl:call-template name="iso690.edition"> +    <xsl:with-param name="after" select="./bibliomisc[@role='issuing']"/> +  </xsl:call-template> +  <!-- Issue designation (date and/or num) [nonEL] --> +  <xsl:if test="not(./bibliomisc[@role='medium'])"> +    <xsl:call-template name="iso690.issuing"/> +  </xsl:if> +  <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation --> +  <xsl:call-template name="iso690.pub"/> +  <!-- Series --> +  <xsl:call-template name="iso690.serie"/> +  <!-- Notes --> +  <xsl:call-template name="iso690.notice"/> +  <!-- Avaibility and access --> +  <xsl:call-template name="iso690.access"/> +  <!-- Standard number --> +  <xsl:call-template name="iso690.issn"/> +</xsl:template> + +<!-- PARTS OF MONOGRAPHS --> +<xsl:template name="iso690.monogr.part"> +  <!-- Primary responsibility of host document --> +  <xsl:call-template name="iso690.primary"/> +  <!-- Title and Type of medium of host document --> +  <xsl:call-template name="iso690.title"/> +  <!-- Subordinate responsibility of host document [EL] --> +  <xsl:if test="./bibliomisc[@role='medium']"> +    <xsl:call-template name="iso690.secondary"/> +  </xsl:if> +  <!-- Edition --> +  <xsl:call-template name="iso690.edition"> +    <xsl:with-param name="after" select="./volumenum"/> +  </xsl:call-template> +  <!-- Numeration of the part [nonEL]--> +  <xsl:if test="not(./bibliomisc[@role='medium'])"> +    <xsl:call-template name="iso690.partnr"/> +  <!-- Subordinate responsibility [nonEL] --> +    <xsl:call-template name="iso690.secondary"/> +  </xsl:if> +  <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation --> +  <xsl:call-template name="iso690.pub"/> +  <!-- Location within host --> +  <xsl:call-template name="iso690.part.location"/> +  <xsl:if test="./bibliomisc[@role='medium']"> +  <!-- Numeration within host document [EL] --> +  <!-- Notes [EL] --> +    <xsl:call-template name="iso690.notice"/> +  <!-- Avaibility and access [EL] --> +    <xsl:call-template name="iso690.access"/> +  <!-- Standard number [EL] --> +    <xsl:call-template name="iso690.isbn"/> +  </xsl:if> +</xsl:template> + +<!-- CONTRIBUTIONS TO MONOGRAPHS --> +<xsl:template name="iso690.paper.mon"> +<!-- Contribution --> +  <xsl:apply-templates mode="iso690.paper.part" select="./biblioset[@relation='part']"/> +<!-- In --> +  <xsl:text>In </xsl:text> +<!-- Host --> +  <xsl:apply-templates mode="iso690.paper.book" select="./biblioset[@relation='book']"/> +</xsl:template> + +<xsl:template match="biblioset" mode="iso690.paper.part"> +<!-- Contribution --> +  <!-- Primary responsibility --> +  <xsl:call-template name="iso690.primary"/> +  <!-- Title --> +  <xsl:call-template name="iso690.title"> +    <xsl:with-param name="italic" select="0"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="biblioset" mode="iso690.paper.book"> +<!-- Host --> +  <!-- Primary responsibility --> +  <xsl:call-template name="iso690.primary"/> +  <!-- Title and Type of medium --> +  <xsl:call-template name="iso690.title"/> +  <!-- Subordinate responsibility [EL] --> +  <xsl:if test="./bibliomisc[@role='medium']"> +    <xsl:call-template name="iso690.secondary"/> +  </xsl:if> +  <!-- Edition --> +  <xsl:call-template name="iso690.edition"/> +  <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation --> +  <xsl:call-template name="iso690.paper.pub"/> +  <!-- Numeration within host document [EL] --> +  <!-- Location within host --> +  <xsl:call-template name="iso690.location"/> +  <xsl:if test="./bibliomisc[@role='medium']"> +  <!-- Notes [EL] --> +    <xsl:call-template name="iso690.notice"/> +  <!-- Avaibility and access [EL] --> +    <xsl:call-template name="iso690.access"/> +  <!-- Standard number [EL] --> +    <xsl:call-template name="iso690.isbn"/> +  </xsl:if> +</xsl:template> + +<!-- ARTICLES, ETC., IN SERIALS --> +<xsl:template name="iso690.article"> +<!-- Article --> +  <xsl:apply-templates mode="iso690.article.art" select="./biblioset[@relation='article']"/> +<!-- Serial --> +  <xsl:apply-templates mode="iso690.article.jour" select="./biblioset[@relation='journal']"/> +</xsl:template> + +<xsl:template match="biblioset" mode="iso690.article.art"> +<!-- Article --> +  <!-- Primary responsibility --> +  <xsl:call-template name="iso690.primary"/> +  <!-- Title --> +  <xsl:call-template name="iso690.title"> +    <xsl:with-param name="italic" select="0"/> +  </xsl:call-template> +  <!-- Subordinate responsibility [nonEL] --> +  <xsl:if test="not(../*/bibliomisc[@role='medium'])"> +    <xsl:call-template name="iso690.secondary"/> +  </xsl:if> +</xsl:template> + +<xsl:template match="biblioset" mode="iso690.article.jour"> +<!-- Serial --> +  <!-- Title and Type of medium --> +  <xsl:call-template name="iso690.title"/> +  <!-- Edition --> +  <xsl:call-template name="iso690.edition"> +    <xsl:with-param name="after" select="./pubdate[not(@role='issuing')]|./volumenum|./issuenum|./pagenums"/> +  </xsl:call-template> +  <!-- Number designation [EL] --> +  <!-- Location within host --> +  <xsl:call-template name="iso690.article.location"/> +  <xsl:if test="./bibliomisc[@role='medium']"> +  <!-- Notes [EL] --> +    <xsl:call-template name="iso690.notice"/> +  <!-- Avaibility and access [EL] --> +    <xsl:call-template name="iso690.access"/> +  <!-- Standard number [EL] --> +    <xsl:call-template name="iso690.issn"/> +  </xsl:if> +</xsl:template> + +<!-- PATENT DOCUMENTS --> +<xsl:template name="iso690.patent"> +  <!-- Primary responsibility (applicant) --> +  <xsl:call-template name="iso690.primary"/> +  <!-- Title of the invention --> +  <xsl:call-template name="iso690.title"/> +  <!-- Subordinate responsibility --> +  <xsl:call-template name="iso690.secondary"/> +  <!-- Notes --> +  <xsl:call-template name="iso690.notice"/> +  <!-- Identification --> +  <xsl:call-template name="iso690.pat.ident"/> +</xsl:template> + +<!-- ==================================================================== --> +<!-- Elements --> + +<!-- Primary responsibility --> +<xsl:template name="iso690.primary"> +  <xsl:param name="primary.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="./authorgroup/author|./author"> +      <xsl:call-template name="iso690.author.list"> +        <xsl:with-param name="person.list" select=".//authorgroup/author|.//author"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="./authorgroup/editor|./editor"> +      <xsl:call-template name="iso690.author.list"> +        <xsl:with-param name="person.list" select=".//authorgroup/editor|.//editor"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="./authorgroup/corpauthor|./corpauthor"> +      <xsl:call-template name="iso690.author.list"> +        <xsl:with-param name="person.list" select=".//authorgroup/corpauthor|.//corpauthor"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:if test="(./firstname)and(./surname)"> +        <xsl:call-template name="iso690.author"/> +        <xsl:call-template name="iso690.endsep"> +          <xsl:with-param name="text" select="string(./firstname[1])"/> +          <xsl:with-param name="sep" select="$primary.sep"/> +        </xsl:call-template> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.author.list"> +  <xsl:param name="person.list" select="author|corpauthor|editor"/> +  <xsl:param name="person.count" select="count($person.list)"/> +  <xsl:param name="count" select="1"/> +  <xsl:param name="group" select="./authorgroup[@role='many']"/> +  <xsl:param name="many" select="0"/> + +  <xsl:param name="primary.many"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.many'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="primary.editor"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.editor'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="primary.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.sep'"/></xsl:call-template> +  </xsl:param> + +  <xsl:choose> +    <xsl:when test="$count > $person.count"/> +    <xsl:otherwise> +      <xsl:choose> +        <xsl:when test="$person.count < 4 and not($group)"> +          <xsl:call-template name="iso690.author"> +            <xsl:with-param name="node" select="$person.list[position()=$count]"/> +          </xsl:call-template> +          <xsl:choose> +            <xsl:when test="$person.count = 2 and $count = 1 and $biblioentry.alt.primary.seps != 0"> +              <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'alt.person.two.sep'"/></xsl:call-template> +            </xsl:when> +            <xsl:when test="$person.count = 2 and $count = 1"> +              <xsl:call-template name="gentext.template"> +                <xsl:with-param name="context" select="'authorgroup'"/> +                <xsl:with-param name="name" select="'sep2'"/> +              </xsl:call-template> +            </xsl:when> +            <xsl:when test="$person.count > 2 and $count+1 = $person.count and $biblioentry.alt.primary.seps != 0"> +              <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'alt.person.last.sep'"/></xsl:call-template> +            </xsl:when> +            <xsl:when test="$person.count > 2 and $count+1 = $person.count"> +              <xsl:call-template name="gentext.template"> +                <xsl:with-param name="context" select="'authorgroup'"/> +                <xsl:with-param name="name" select="'seplast'"/> +              </xsl:call-template> +            </xsl:when> +            <xsl:when test="$count < $person.count and $biblioentry.alt.primary.seps != 0"> +              <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'alt.person.more.sep'"/></xsl:call-template> +            </xsl:when> +            <xsl:when test="$count < $person.count"> +              <xsl:call-template name="gentext.template"> +                <xsl:with-param name="context" select="'authorgroup'"/> +                <xsl:with-param name="name" select="'sep'"/> +              </xsl:call-template> +            </xsl:when> +            <xsl:when test="($count = $person.count)"> +              <xsl:choose> +                <xsl:when test="$many!=0"> +                  <xsl:if test="name($person.list[position()=$count])='editor'"> +                    <xsl:value-of select="$primary.editor"/> +                  </xsl:if> +                  <xsl:value-of select="$primary.many"/> +                  <xsl:call-template name="iso690.endsep"> +                    <xsl:with-param name="text" select="$primary.many"/> +                    <xsl:with-param name="sep" select="$primary.sep"/> +                  </xsl:call-template> +                </xsl:when> +                <xsl:when test="name($person.list[position()=$count])='editor'"> +                  <xsl:value-of select="$primary.editor"/> +                  <xsl:value-of select="$primary.sep"/> +                </xsl:when> +                <xsl:when test="name($person.list[position()=$count])='corpauthor'"> +                  <xsl:call-template name="iso690.endsep"> +                    <xsl:with-param name="text" select="string($person.list[position()=$count])"/> +                    <xsl:with-param name="sep" select="$primary.sep"/> +                  </xsl:call-template> +                </xsl:when> +                <xsl:otherwise> +                  <xsl:call-template name="iso690.endsep"> +                    <xsl:with-param name="text" select="string($person.list[position()=$count]//firstname[1])"/> +                    <xsl:with-param name="sep" select="$primary.sep"/> +                  </xsl:call-template> +                </xsl:otherwise> +              </xsl:choose> +            </xsl:when> +          </xsl:choose> + +          <xsl:call-template name="iso690.author.list"> +            <xsl:with-param name="person.list" select="$person.list"/> +            <xsl:with-param name="person.count" select="$person.count"/> +            <xsl:with-param name="count" select="$count+1"/> +            <xsl:with-param name="many" select="$many"/> +            <xsl:with-param name="group"/> +          </xsl:call-template> +        </xsl:when> + +        <xsl:otherwise> +          <xsl:choose> +            <xsl:when test="($biblioentry.primary.count>=3) and ($person.count>=3)"> +              <xsl:call-template name="iso690.author.list"> +                <xsl:with-param name="person.list" select="$person.list[1]|$person.list[2]|$person.list[3]"/> +                <xsl:with-param name="person.count" select="3"/> +                <xsl:with-param name="count" select="1"/> +                <xsl:with-param name="many" select="1"/> +                <xsl:with-param name="group"/> +              </xsl:call-template> +            </xsl:when> +            <xsl:when test="($biblioentry.primary.count>1) and  ($person.count>1)"> +              <xsl:call-template name="iso690.author.list"> +                <xsl:with-param name="person.list" select="$person.list[1]|$person.list[2]"/> +                <xsl:with-param name="person.count" select="2"/> +                <xsl:with-param name="count" select="1"/> +                <xsl:with-param name="many" select="1"/> +                <xsl:with-param name="group"/> +              </xsl:call-template> +            </xsl:when> +            <xsl:otherwise> +              <xsl:call-template name="iso690.author.list"> +                <xsl:with-param name="person.list" select="$person.list[1]"/> +                <xsl:with-param name="person.count" select="1"/> +                <xsl:with-param name="count" select="1"/> +                <xsl:with-param name="many" select="1"/> +                <xsl:with-param name="group"/> +              </xsl:call-template> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.author"> +  <xsl:param name="node" select="."/> +  <xsl:param name="lastfirst.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'lastfirst.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="name($node)!='corpauthor'"> +      <span style="text-transform:uppercase"> +        <xsl:apply-templates mode="iso690.mode" select="$node//surname[1]"/> +      </span> +      <xsl:if test="$node//surname and $node//firstname"> +        <xsl:value-of select="$lastfirst.sep"/> +      </xsl:if> +      <xsl:apply-templates mode="iso690.mode" select="$node//firstname[1]"/> +    </xsl:when> +    <xsl:otherwise> +      <span style="text-transform:uppercase"> +        <xsl:apply-templates mode="iso690.mode" select="$node"/> +      </span> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="corpauthor|firstname|surname" mode="iso690.mode"> +  <xsl:apply-templates mode="iso690.mode"/> +</xsl:template> + +<!-- Title and Type of medium --> +<xsl:template name="iso690.title"> +  <xsl:param name="medium" select="./bibliomisc[@role='medium']"/> +  <xsl:param name="italic" select="1"/> +  <xsl:param name="sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'title.sep'"/></xsl:call-template> +  </xsl:param> + +  <xsl:apply-templates mode="iso690.mode" select="./title"> +    <xsl:with-param name="medium" select="$medium"/> +    <xsl:with-param name="italic" select="$italic"/> +    <xsl:with-param name="sep" select="$sep"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="title" mode="iso690.mode"> +  <xsl:param name="medium"/> +  <xsl:param name="italic" select="1"/> +  <xsl:param name="sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'title.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="medium1"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'medium1'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="medium2"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'medium2'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="$italic=1"> +      <xsl:call-template name="iso690.italic.title"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="iso690.make.title"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:if test="$medium"> +    <xsl:value-of select="$medium1"/> +    <xsl:apply-templates mode="iso690.mode" select="$medium"/> +    <xsl:value-of select="$medium2"/> +  </xsl:if> +  <xsl:call-template name="iso690.endsep"> +    <xsl:with-param name="text" select="concat(string(.),string(../subtitle))"/> +    <xsl:with-param name="sep" select="$sep"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template name="iso690.italic.title"> +  <i> +    <xsl:call-template name="iso690.make.title"/> +  </i> +</xsl:template> + +<xsl:template name="iso690.make.title"> +  <xsl:param name="submaintitle.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'submaintitle.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:if test="../subtitle"> +    <xsl:value-of select="$submaintitle.sep"/> +    <xsl:apply-templates mode="iso690.mode" select="../subtitle"/> +  </xsl:if> +</xsl:template> + +<xsl:template match="subtitle" mode="iso690.mode"> +  <xsl:apply-templates mode="iso690.mode"/> +</xsl:template> + +<xsl:template match="bibliomisc[@role='medium']" mode="iso690.mode"> +  <xsl:apply-templates mode="iso690.mode"/> +</xsl:template> + +<!-- Subordinate responsibility --> +<xsl:template name="iso690.secondary"> +  <xsl:param name="secondary.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'secondary.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="secondary.person.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'secondary.person.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:for-each select="./bibliomisc[@role='secondary']"> +    <xsl:apply-templates mode="iso690.mode" select="."/> +    <xsl:choose> +      <xsl:when test="position()=count(../bibliomisc[@role='secondary'])"> +        <xsl:call-template name="iso690.endsep"> +          <xsl:with-param name="text" select="string(.)"/> +          <xsl:with-param name="sep" select="$secondary.sep"/> +        </xsl:call-template> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$secondary.person.sep"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:for-each> +</xsl:template> + +<xsl:template match="bibliomisc[@role='secondary']" mode="iso690.mode"> +  <xsl:apply-templates mode="iso690.mode"/> +</xsl:template> + +<!-- Edition --> +<xsl:template name="iso690.edition"> +  <xsl:param name="after"/> +  <xsl:param name="edition.serial.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'edition.serial.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="string($after)!=''"> +      <xsl:apply-templates mode="iso690.mode" select="./edition"> +        <xsl:with-param name="sep" select="$edition.serial.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates mode="iso690.mode" select="./edition"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="edition" mode="iso690.mode"> +  <xsl:param name="sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'edition.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.endsep"> +    <xsl:with-param name="text" select="string(.)"/> +    <xsl:with-param name="sep" select="$sep"/> +  </xsl:call-template> +</xsl:template> + +<!-- Issue designation (date and/or num) --> +<xsl:template name="iso690.issuing"> +  <xsl:param name="issuing.div"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.div'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="issuing.range"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.range'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="issuing.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="./pubdate[@role='issuing'] and ./volumenum[2] and ./issuenum[2]"> +      <xsl:call-template name="iso690.issuedate"/> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum[1]"> +        <xsl:with-param name="sep" select="$issuing.div"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./issuenum[1]"> +        <xsl:with-param name="sep" select="$issuing.range"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum[2]"> +        <xsl:with-param name="sep" select="$issuing.div"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./issuenum[2]"> +        <xsl:with-param name="sep" select="$issuing.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="./pubdate[@role='issuing'] and ./volumenum[2]"> +      <xsl:call-template name="iso690.issuedate"/> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum[1]"> +        <xsl:with-param name="sep" select="$issuing.range"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum[2]"> +        <xsl:with-param name="sep" select="$issuing.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="./pubdate[@role='issuing'] and ./volumenum and ./issuenum"> +      <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']"> +        <xsl:with-param name="sep" select="$issuing.div"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum"> +        <xsl:with-param name="sep" select="$issuing.div"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./issuenum"> +        <xsl:with-param name="sep" select="$issuing.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="./pubdate[@role='issuing']"> +      <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']"> +        <xsl:with-param name="sep" select="$issuing.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="./volumenum"> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum"> +        <xsl:with-param name="sep" select="$issuing.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="./issuenum"> +      <xsl:apply-templates mode="iso690.mode" select="./issuenum"> +        <xsl:with-param name="sep" select="$issuing.sep"/> +      </xsl:apply-templates> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.issuedate"> +  <xsl:param name="issuing.div"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.div'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="issuing.range"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.range'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="issuing.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="./pubdate[@role='issuing'][2]"> +      <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing'][1]"> +        <xsl:with-param name="sep" select="$issuing.range"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing'][2]"> +        <xsl:with-param name="sep" select="$issuing.div"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']"> +        <xsl:with-param name="sep" select="$issuing.div"/> +      </xsl:apply-templates> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="pubdate[@role='issuing']" mode="iso690.mode"> +  <xsl:param name="sep"/> +  <xsl:variable name="substr" select="substring(string(.),string-length(string(.)))"/> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.space"> +    <xsl:with-param name="text" select="$substr"/> +  </xsl:call-template> +  <xsl:choose> +    <xsl:when test="$substr='-'"> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="' '"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="string(.)"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- Numeration of the part --> +<xsl:template name="iso690.partnr"> +  <xsl:param name="partnr.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'partnr.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode" select="./volumenum"> +    <xsl:with-param name="sep" select="$partnr.sep"/> +  </xsl:apply-templates> +</xsl:template> + +<!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation --> +<xsl:template name="iso690.pub"> +  <xsl:param name="onlydate" select="0"/> +  <xsl:param name="placesep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'placepubl.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="pubsep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'publyear.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="endsep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'pubinfo.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="(./publisher/publishername|./publishername|./publisher/address/city)and($onlydate=0)and(./pubdate[not(@role='issuing')]|./copyright/year|./date[@role='upd']|./date[@role='upd'])"> +      <xsl:apply-templates mode="iso690.mode" select="./publisher/address/city"> +        <xsl:with-param name="sep" select="$placesep"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./publisher/publishername|./publishername"> +        <xsl:with-param name="sep" select="$pubsep"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]|./copyright/year"> +        <xsl:with-param name="sep" select="$endsep"/> +      </xsl:apply-templates> +      <xsl:if test="not(./pubdate[not(@role='issuing')]|./copyright/year)"> +        <xsl:call-template name="iso690.data"> +          <xsl:with-param name="sep" select="$endsep"/> +        </xsl:call-template> +      </xsl:if> +    </xsl:when> +    <xsl:when test="(./publisher/publishername|./publishername)and(./publisher/address/city)and($onlydate=0)"> +      <xsl:apply-templates mode="iso690.mode" select="./publisher/address/city"> +        <xsl:with-param name="sep" select="$placesep"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./publisher/publishername|./publishername"> +        <xsl:with-param name="sep" select="$endsep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="($onlydate=1)or(./pubdate[not(@role='issuing')]|./copyright/year)"> +      <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]|./copyright/year"> +        <xsl:with-param name="sep" select="$endsep"/> +      </xsl:apply-templates> +      <xsl:if test="$onlydate=1"> +        <xsl:call-template name="iso690.location"> +          <xsl:with-param name="onlypages" select="1"/> +        </xsl:call-template> +      </xsl:if> +    </xsl:when> +    <xsl:when test="not(./pubdate[not(@role='issuing')]|./copyright/year)"> +      <xsl:call-template name="iso690.data"> +        <xsl:with-param name="sep" select="$endsep"/> +      </xsl:call-template> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.paper.pub"> +  <xsl:param name="spec.pubinfo.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'spec.pubinfo.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="./volumnum|./issuenum|./pagenums"> +      <xsl:call-template name="iso690.pub"> +        <xsl:with-param name="endsep" select="$spec.pubinfo.sep"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="iso690.pub"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.data"> +  <xsl:param name="sep"/> +  <xsl:param name="datecit2"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode" select="./date[@role='upd']"> +    <xsl:with-param name="sep"/> +  </xsl:apply-templates> +  <xsl:apply-templates mode="iso690.mode" select="./date[@role='cit']"/> +  <xsl:choose> +    <xsl:when test="./date[@role='cit']"> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="$datecit2"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="./date[@role='upd']"> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="string(./date[@role='upd'])"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template match="publisher/address/city|publishername" mode="iso690.mode"> +  <xsl:param name="sep"/> +  <xsl:param name="upd" select="0"/> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.endsep"> +    <xsl:with-param name="text" select="string(.)"/> +    <xsl:with-param name="sep" select="$sep"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="pubdate|copyright/year" mode="iso690.mode"> +  <xsl:param name="sep"/> +  <xsl:param name="upd" select="1"/> +  <xsl:param name="datecit2"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template> +  </xsl:param> +  <xsl:variable name="substr" select="substring(string(.),string-length(string(.)))"/> +  <xsl:if test="name(.)!='pubdate'"> +    <xsl:value-of select="'©'"/><!-- copyright --> +  </xsl:if> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.space"> +    <xsl:with-param name="text" select="$substr"/> +  </xsl:call-template> +  <xsl:if test="$upd!=0"> +    <xsl:choose> +      <xsl:when test="name(.)='pubdate'"> +        <xsl:apply-templates mode="iso690.mode" select="../date[@role='upd']"/> +        <xsl:apply-templates mode="iso690.mode" select="../date[@role='cit']"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates mode="iso690.mode" select="../../date[@role='upd']"/> +        <xsl:apply-templates mode="iso690.mode" select="../../date[@role='cit']"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:if> +  <xsl:choose> +    <xsl:when test="../date[@role='cit']|../../date[@role='cit'] and $upd!=0"> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="$datecit2"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="../date[@role='upd']|../../date[@role='upd'] and $upd!=0"> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="string(../date[@role='upd'])"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$substr='-'"> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="' '"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="string(.)"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.space"> +  <xsl:param name="text" select="substring(string(.),string-length(string(.)))"/> +  <xsl:if test="$text='-'"> +    <xsl:value-of select="' '"/> +  </xsl:if> +</xsl:template> + +<!-- Date of update/revision --> +<xsl:template match="date[@role='upd']" mode="iso690.mode"> +  <xsl:param name="sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'upd.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:value-of select="$sep"/> +  <xsl:apply-templates mode="iso690.mode"/> +</xsl:template> + +<!-- Date of citation --> +<xsl:template match="date[@role='cit']" mode="iso690.mode"> +  <xsl:param name="datecit1"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit1'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="datecit2"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template> +  </xsl:param> +  <xsl:value-of select="$datecit1"/> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:value-of select="$datecit2"/> +</xsl:template> + +<!-- Extent --> +<xsl:template name="iso690.extent"> +  <xsl:param name="extent.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'extent.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode" select="./pagenums"> +    <xsl:with-param name="sep" select="$extent.sep"/> +  </xsl:apply-templates> +</xsl:template> + +<!-- Location within host --> +<xsl:template name="iso690.part.location"> +  <xsl:param name="location.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="./pagenums"> +      <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"/> +      <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='sectitle']"/> +      <xsl:apply-templates mode="iso690.mode" select="./pagenums"/> +    </xsl:when> +    <xsl:when test="./bibliomisc[@role='sectitle']"> +      <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"/> +      <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='sectitle']"> +        <xsl:with-param name="sep" select="$location.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"> +        <xsl:with-param name="sep" select="$location.sep"/> +      </xsl:apply-templates> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.article.location"> +  <xsl:param name="location.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="locs.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="not(./date[@role='upd']|./date[@role='cit'])"> +      <xsl:choose> +        <xsl:when test="./volumenum|./issuenum|./pagenums"> +          <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]"> +            <xsl:with-param name="upd" select="0"/> +            <xsl:with-param name="sep" select="$locs.sep"/> +          </xsl:apply-templates> +          <xsl:call-template name="iso690.location"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]"> +            <xsl:with-param name="sep" select="$location.sep"/> +          </xsl:apply-templates> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:choose> +        <xsl:when test="./volumenum|./issuenum|./pagenums"> +          <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]"> +            <xsl:with-param name="upd" select="0"/> +            <xsl:with-param name="sep" select="$locs.sep"/> +          </xsl:apply-templates> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]"> +            <xsl:with-param name="upd" select="0"/> +            <xsl:with-param name="sep" select="$location.sep"/> +          </xsl:apply-templates> +        </xsl:otherwise> +      </xsl:choose> +      <xsl:choose> +        <xsl:when test="./issuenum"> +          <xsl:apply-templates mode="iso690.mode" select="./volumenum"/> +          <xsl:apply-templates mode="iso690.mode" select="./issuenum"> +            <xsl:with-param name="sep"/> +          </xsl:apply-templates> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates mode="iso690.mode" select="./volumenum"> +            <xsl:with-param name="sep"/> +          </xsl:apply-templates> +        </xsl:otherwise> +      </xsl:choose> +      <xsl:choose> +        <xsl:when test="./pagenums"> +          <xsl:call-template name="iso690.data"> +            <xsl:with-param name="sep" select="$locs.sep"/> +          </xsl:call-template> +          <xsl:apply-templates mode="iso690.mode" select="./pagenums"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="iso690.data"> +            <xsl:with-param name="sep" select="$location.sep"/> +          </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.location"> +  <xsl:param name="location.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="./volumenum and not(./issuenum) and not(./pagenums)"> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum"> +        <xsl:with-param name="sep" select="$location.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="./issuenum and not(./pagenums)"> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum"/> +      <xsl:apply-templates mode="iso690.mode" select="./issuenum"> +        <xsl:with-param name="sep" select="$location.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="./pagenums"> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum"/> +      <xsl:apply-templates mode="iso690.mode" select="./issuenum"/> +      <xsl:apply-templates mode="iso690.mode" select="./pagenums"/> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template match="bibliomisc[@role='secnum']|bibliomisc[@role='sectitle']" mode="iso690.mode"> +  <xsl:param name="sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.endsep"> +    <xsl:with-param name="text" select="string(.)"/> +    <xsl:with-param name="sep" select="$sep"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="volumenum|issuenum" mode="iso690.mode"> +  <xsl:param name="sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.endsep"> +    <xsl:with-param name="text" select="string(.)"/> +    <xsl:with-param name="sep" select="$sep"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="pagenums" mode="iso690.mode"> +  <xsl:param name="sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.endsep"> +    <xsl:with-param name="text" select="string(.)"/> +    <xsl:with-param name="sep" select="$sep"/> +  </xsl:call-template> +</xsl:template> + +<!-- Series --> +<xsl:template name="iso690.serie"> +  <xsl:apply-templates mode="iso690.mode" select=".//bibliomisc[@role='serie']"/> +</xsl:template> + +<!-- Notes --> +<xsl:template name="iso690.notice"> +  <xsl:apply-templates mode="iso690.mode" select=".//bibliomisc[not(@role)]"/> +</xsl:template> + +<xsl:template match="bibliomisc[not(@role)]|bibliomisc[@role='serie']" mode="iso690.mode"> +  <xsl:param name="notice.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'notice.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.endsep"> +    <xsl:with-param name="text" select="string(.)"/> +    <xsl:with-param name="sep" select="$notice.sep"/> +  </xsl:call-template> +</xsl:template> + +<!-- Avaibility and access --> +<xsl:template name="iso690.access"> +  <xsl:for-each select="./biblioid[@class='uri']|./bibliomisc[@role='access']"> +    <xsl:choose> +      <xsl:when test="position()=1"> +        <xsl:apply-templates mode="iso690.mode" select="."/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates mode="iso690.mode" select="."> +          <xsl:with-param name="firstacc" select="0"/> +        </xsl:apply-templates> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:for-each> +</xsl:template> + +<xsl:template match="biblioid[@class='uri']/ulink|bibliomisc[@role='access']/ulink" mode="iso690.mode"> +  <xsl:param name="link1"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'link1'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="link2"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'link2'"/></xsl:call-template> +  </xsl:param> +  <xsl:value-of select="$link1"/> +  <xsl:call-template name="ulink"/> +  <xsl:value-of select="$link2"/> +</xsl:template> + +<xsl:template match="biblioid[@class='uri']|bibliomisc[@role='access']" mode="iso690.mode"> +  <xsl:param name="firstacc" select="1"/> +  <xsl:param name="access"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="acctoo"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'acctoo'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="onwww"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'onwww'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="oninet"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'oninet'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="access.end"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access.end'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="access.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="$firstacc=1"> +      <xsl:value-of select="$access"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$acctoo"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:choose> +    <xsl:when test="(./ulink)and(string(./ulink)=string(.))"> +      <xsl:choose> +        <xsl:when test="(starts-with(./ulink/@url,'http://')or(starts-with(./ulink/@url,'https://')))"> +          <xsl:value-of select="$onwww"/> +          <xsl:value-of select="$access.end"/> +          <xsl:apply-templates mode="iso690.mode" select="./ulink"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:value-of select="$oninet"/> +          <xsl:value-of select="$access.end"/> +          <xsl:apply-templates mode="iso690.mode" select="./ulink"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:when test="(./ulink)and(string(./ulink)!=string(.))"> +      <xsl:value-of select="text()[1]"/> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="text()[1]"/> +        <xsl:with-param name="sep" select="$access.end"/> +      </xsl:call-template> +      <xsl:apply-templates mode="iso690.mode" select="./ulink"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates mode="iso690.mode"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:value-of select="$access.sep"/> +</xsl:template> + +<!-- Standard number - ISBN --> +<xsl:template name="iso690.isbn"> +  <xsl:choose> +    <xsl:when test="./biblioid/@class='isbn'"> +      <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='isbn']"/> +    </xsl:when> +    <xsl:when test="./isbn"> +      <xsl:apply-templates mode="iso690.mode" select="./isbn"/> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template match="isbn|biblioid[@class='isbn']" mode="iso690.mode"> +  <xsl:param name="isbn"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'isbn'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="stdnum.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'stdnum.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:value-of select="$isbn"/> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:value-of select="$stdnum.sep"/> +</xsl:template> + +<!-- Standard number - ISSN --> +<xsl:template name="iso690.issn"> +  <xsl:choose> +    <xsl:when test="./biblioid/@class='issn'"> +      <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='issn']"/> +    </xsl:when> +    <xsl:when test="./issn"> +      <xsl:apply-templates mode="iso690.mode" select="./issn"/> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template match="issn|biblioid[@class='issn']" mode="iso690.mode"> +  <xsl:param name="issn"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issn'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="stdnum.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'stdnum.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:value-of select="$issn"/> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:value-of select="$stdnum.sep"/> +</xsl:template> + +<!-- Identification of patent document --> +<xsl:template name="iso690.pat.ident"> +  <xsl:param name="patdate.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patdate.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode" select="./address/country"/> +  <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='patenttype']"/> +  <xsl:choose> +    <xsl:when test="./biblioid[@class='other' and @otherclass='patentnum']"> +      <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='other' and @otherclass='patentnum']"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='patentnum']"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]"> +    <xsl:with-param name="sep" select="$patdate.sep"/> +  </xsl:apply-templates> +</xsl:template> + +<!-- Country or issuing office --> +<xsl:template match="address/country" mode="iso690.mode"> +  <xsl:param name="patcountry.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patcountry.sep'"/></xsl:call-template> +  </xsl:param> +  <i> +    <xsl:apply-templates mode="iso690.mode"/> +  </i> +  <xsl:value-of select="$patcountry.sep"/> +</xsl:template> + +<!-- Kind of patent document --> +<xsl:template match="bibliomisc[@role='patenttype']" mode="iso690.mode"> +  <xsl:param name="pattype.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'pattype.sep'"/></xsl:call-template> +  </xsl:param> +  <i> +    <xsl:apply-templates mode="iso690.mode"/> +  </i> +  <xsl:value-of select="$pattype.sep"/> +</xsl:template> + +<!-- Number --> +<xsl:template match="biblioid[@class='other' and @otherclass='patentnum']|bibliomisc[@role='patentnum']" mode="iso690.mode"> +  <xsl:param name="patnum.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patnum.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:value-of select="$patnum.sep"/> +</xsl:template> + +<!-- ==================================================================== --> +<!-- Supplementary templates --> + +<xsl:template name="iso690.endsep"> +  <xsl:param name="text"/> +  <xsl:param name="sep" select=". "/> +  <xsl:choose> +    <xsl:when test="substring($text,string-length($text))!=substring($sep,1,1)"> +      <xsl:value-of select="$sep"/> +    </xsl:when> +    <xsl:when test="substring($text,string-length($text))=' '"> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="' '"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="iso690.mode"> +  <xsl:apply-templates select="."/><!-- try the default mode --> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet>  | 
