blob: 00096bee0995fc0782a457c5302f1cb6089df6dd [file] [log] [blame]
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
xmlns:db = "http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
exclude-result-prefixes="exsl db"
version="1.0">
<!--
# ======================================================================
# This file is part of DocBook V5.0CR5
#
# Copyright 2005 Norman Walsh, Sun Microsystems, Inc., and the
# Organization for the Advancement of Structured Information
# Standards (OASIS).
#
# Release: $Id: db4-upgrade.xsl 7660 2008-02-06 13:48:36Z nwalsh $
#
# Permission to use, copy, modify and distribute this stylesheet
# and its accompanying documentation for any purpose and without fee
# is hereby granted in perpetuity, provided that the above copyright
# notice and this paragraph appear in all copies. The copyright
# holders make no representation about the suitability of the schema
# for any purpose. It is provided "as is" without expressed or implied
# warranty.
#
# Please direct all questions, bug reports, or suggestions for changes
# to the docbook@lists.oasis-open.org mailing list. For more
# information, see http://www.oasis-open.org/docbook/.
#
# ======================================================================
-->
<xsl:variable name="version" select="'1.0'"/>
<xsl:output method="xml" encoding="utf-8" indent="no" omit-xml-declaration="yes"/>
<xsl:preserve-space elements="*"/>
<xsl:param name="rootid">
<xsl:choose>
<xsl:when test="/*/@id">
<xsl:value-of select="/*/@id"/>
</xsl:when>
<xsl:otherwise>
<xsl:text>UNKNOWN</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:param>
<xsl:param name="defaultDate" select="''"/>
<xsl:template match="/">
<xsl:variable name="converted">
<xsl:apply-templates/>
</xsl:variable>
<xsl:comment>
<xsl:text> Converted by db4-upgrade version </xsl:text>
<xsl:value-of select="$version"/>
<xsl:text> </xsl:text>
</xsl:comment>
<xsl:text>&#10;</xsl:text>
<xsl:apply-templates select="exsl:node-set($converted)/*" mode="addNS"/>
</xsl:template>
<xsl:template match="bookinfo|chapterinfo|articleinfo|artheader|appendixinfo
|blockinfo
|bibliographyinfo|glossaryinfo|indexinfo|setinfo
|setindexinfo
|sect1info|sect2info|sect3info|sect4info|sect5info
|sectioninfo
|refsect1info|refsect2info|refsect3info|refsectioninfo
|referenceinfo|partinfo"
priority="200">
<info>
<xsl:call-template name="copy.attributes"/>
<!-- titles can be inside or outside or both. fix that -->
<xsl:choose>
<xsl:when test="title and following-sibling::title">
<xsl:if test="title != following-sibling::title">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Check </xsl:text>
<xsl:value-of select="name(..)"/>
<xsl:text> title.</xsl:text>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<xsl:apply-templates select="title" mode="copy"/>
</xsl:when>
<xsl:when test="title">
<xsl:apply-templates select="title" mode="copy"/>
</xsl:when>
<xsl:when test="following-sibling::title">
<xsl:apply-templates select="following-sibling::title" mode="copy"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Check </xsl:text>
<xsl:value-of select="name(..)"/>
<xsl:text>: no title.</xsl:text>
</xsl:with-param>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="titleabbrev and following-sibling::titleabbrev">
<xsl:if test="titleabbrev != following-sibling::titleabbrev">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Check </xsl:text>
<xsl:value-of select="name(..)"/>
<xsl:text> titleabbrev.</xsl:text>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<xsl:apply-templates select="titleabbrev" mode="copy"/>
</xsl:when>
<xsl:when test="titleabbrev">
<xsl:apply-templates select="titleabbrev" mode="copy"/>
</xsl:when>
<xsl:when test="following-sibling::titleabbrev">
<xsl:apply-templates select="following-sibling::titleabbrev" mode="copy"/>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="subtitle and following-sibling::subtitle">
<xsl:if test="subtitle != following-sibling::subtitle">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Check </xsl:text>
<xsl:value-of select="name(..)"/>
<xsl:text> subtitle.</xsl:text>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<xsl:apply-templates select="subtitle" mode="copy"/>
</xsl:when>
<xsl:when test="subtitle">
<xsl:apply-templates select="subtitle" mode="copy"/>
</xsl:when>
<xsl:when test="following-sibling::subtitle">
<xsl:apply-templates select="following-sibling::subtitle" mode="copy"/>
</xsl:when>
</xsl:choose>
<xsl:apply-templates/>
</info>
</xsl:template>
<xsl:template match="objectinfo|prefaceinfo|refsynopsisdivinfo
|screeninfo|sidebarinfo"
priority="200">
<info>
<xsl:call-template name="copy.attributes"/>
<!-- titles can be inside or outside or both. fix that -->
<xsl:choose>
<xsl:when test="title and following-sibling::title">
<xsl:if test="title != following-sibling::title">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Check </xsl:text>
<xsl:value-of select="name(..)"/>
<xsl:text> title.</xsl:text>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<xsl:apply-templates select="title" mode="copy"/>
</xsl:when>
<xsl:when test="title">
<xsl:apply-templates select="title" mode="copy"/>
</xsl:when>
<xsl:when test="following-sibling::title">
<xsl:apply-templates select="following-sibling::title" mode="copy"/>
</xsl:when>
<xsl:otherwise>
<!-- it's ok if there's no title on these -->
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="titleabbrev and following-sibling::titleabbrev">
<xsl:if test="titleabbrev != following-sibling::titleabbrev">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Check </xsl:text>
<xsl:value-of select="name(..)"/>
<xsl:text> titleabbrev.</xsl:text>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<xsl:apply-templates select="titleabbrev" mode="copy"/>
</xsl:when>
<xsl:when test="titleabbrev">
<xsl:apply-templates select="titleabbrev" mode="copy"/>
</xsl:when>
<xsl:when test="following-sibling::titleabbrev">
<xsl:apply-templates select="following-sibling::titleabbrev" mode="copy"/>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="subtitle and following-sibling::subtitle">
<xsl:if test="subtitle != following-sibling::subtitle">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Check </xsl:text>
<xsl:value-of select="name(..)"/>
<xsl:text> subtitle.</xsl:text>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<xsl:apply-templates select="subtitle" mode="copy"/>
</xsl:when>
<xsl:when test="subtitle">
<xsl:apply-templates select="subtitle" mode="copy"/>
</xsl:when>
<xsl:when test="following-sibling::subtitle">
<xsl:apply-templates select="following-sibling::subtitle" mode="copy"/>
</xsl:when>
</xsl:choose>
<xsl:apply-templates/>
</info>
</xsl:template>
<xsl:template match="refentryinfo"
priority="200">
<info>
<xsl:call-template name="copy.attributes"/>
<!-- titles can be inside or outside or both. fix that -->
<xsl:if test="title">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Discarding title from refentryinfo!</xsl:text>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<xsl:if test="titleabbrev">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Discarding titleabbrev from refentryinfo!</xsl:text>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<xsl:if test="subtitle">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Discarding subtitle from refentryinfo!</xsl:text>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<xsl:apply-templates/>
</info>
</xsl:template>
<xsl:template match="refmiscinfo"
priority="200">
<refmiscinfo>
<xsl:call-template name="copy.attributes">
<xsl:with-param name="suppress" select="'class'"/>
</xsl:call-template>
<xsl:if test="@class">
<xsl:choose>
<xsl:when test="@class = 'source'
or @class = 'version'
or @class = 'manual'
or @class = 'sectdesc'
or @class = 'software'">
<xsl:attribute name="class">
<xsl:value-of select="@class"/>
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="class">
<xsl:value-of select="'other'"/>
</xsl:attribute>
<xsl:attribute name="otherclass">
<xsl:value-of select="@class"/>
</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:apply-templates/>
</refmiscinfo>
</xsl:template>
<xsl:template match="corpauthor" priority="200">
<author>
<xsl:call-template name="copy.attributes"/>
<orgname>
<xsl:apply-templates/>
</orgname>
</author>
</xsl:template>
<xsl:template match="corpname" priority="200">
<orgname>
<xsl:call-template name="copy.attributes"/>
<xsl:apply-templates/>
</orgname>
</xsl:template>
<xsl:template match="author[not(personname)]|editor[not(personname)]|othercredit[not(personname)]" priority="200">
<xsl:copy>
<xsl:call-template name="copy.attributes"/>
<personname>
<xsl:apply-templates select="honorific|firstname|surname|othername|lineage"/>
</personname>
<xsl:apply-templates select="*[not(self::honorific|self::firstname|self::surname
|self::othername|self::lineage)]"/>
</xsl:copy>
</xsl:template>
<xsl:template match="address|programlisting|screen|funcsynopsisinfo
|classsynopsisinfo|literallayout" priority="200">
<xsl:copy>
<xsl:call-template name="copy.attributes">
<xsl:with-param name="suppress" select="'format'"/>
</xsl:call-template>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="productname[@class]" priority="200">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Dropping class attribute from productname</xsl:text>
</xsl:with-param>
</xsl:call-template>
<xsl:copy>
<xsl:call-template name="copy.attributes">
<xsl:with-param name="suppress" select="'class'"/>
</xsl:call-template>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="dedication|preface|chapter|appendix|part|partintro
|article|bibliography|glossary|glossdiv|index
|reference[not(referenceinfo)]
|book" priority="200">
<xsl:choose>
<xsl:when test="not(dedicationinfo|prefaceinfo|chapterinfo
|appendixinfo|partinfo
|articleinfo|artheader|bibliographyinfo
|glossaryinfo|indexinfo
|bookinfo)">
<xsl:copy>
<xsl:call-template name="copy.attributes"/>
<xsl:if test="title|subtitle|titleabbrev">
<info>
<xsl:apply-templates select="title" mode="copy"/>
<xsl:apply-templates select="titleabbrev" mode="copy"/>
<xsl:apply-templates select="subtitle" mode="copy"/>
<xsl:apply-templates select="abstract" mode="copy"/>
</info>
</xsl:if>
<xsl:apply-templates/>
</xsl:copy>
</xsl:when>
<xsl:otherwise>
<xsl:copy>
<xsl:call-template name="copy.attributes"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="formalpara|figure|table[tgroup]|example|blockquote
|caution|important|note|warning|tip
|bibliodiv|glossarydiv|indexdiv
|orderedlist|itemizedlist|variablelist|procedure
|task|tasksummary|taskprerequisites|taskrelated
|sidebar"
priority="200">
<xsl:choose>
<xsl:when test="blockinfo">
<xsl:copy>
<xsl:call-template name="copy.attributes"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:when>
<xsl:otherwise>
<xsl:copy>
<xsl:call-template name="copy.attributes"/>
<xsl:if test="title|titleabbrev|subtitle">
<info>
<xsl:apply-templates select="title" mode="copy"/>
<xsl:apply-templates select="titleabbrev" mode="copy"/>
<xsl:apply-templates select="subtitle" mode="copy"/>
</info>
</xsl:if>
<xsl:apply-templates/>
</xsl:copy>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="equation" priority="200">
<xsl:choose>
<xsl:when test="not(title)">
<xsl:call-template name="emit-message">
<xsl:with-param
name="message"
>Convert equation without title to informal equation.</xsl:with-param>
</xsl:call-template>
<informalequation>
<xsl:call-template name="copy.attributes"/>
<xsl:apply-templates/>
</informalequation>
</xsl:when>
<xsl:when test="blockinfo">
<xsl:copy>
<xsl:call-template name="copy.attributes"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:when>
<xsl:otherwise>
<xsl:copy>
<xsl:call-template name="copy.attributes"/>
<info>
<xsl:apply-templates select="title" mode="copy"/>
<xsl:apply-templates select="titleabbrev" mode="copy"/>
<xsl:apply-templates select="subtitle" mode="copy"/>
</info>
<xsl:apply-templates/>
</xsl:copy>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="sect1|sect2|sect3|sect4|sect5|section"
priority="200">
<section>
<xsl:call-template name="copy.attributes"/>
<xsl:if test="not(sect1info|sect2info|sect3info|sect4info|sect5info|sectioninfo)">
<info>
<xsl:apply-templates select="title" mode="copy"/>
<xsl:apply-templates select="titleabbrev" mode="copy"/>
<xsl:apply-templates select="subtitle" mode="copy"/>
<xsl:apply-templates select="abstract" mode="copy"/>
</info>
</xsl:if>
<xsl:apply-templates/>
</section>
</xsl:template>
<xsl:template match="simplesect"
priority="200">
<simplesect>
<xsl:call-template name="copy.attributes"/>
<info>
<xsl:apply-templates select="title" mode="copy"/>
<xsl:apply-templates select="titleabbrev" mode="copy"/>
<xsl:apply-templates select="subtitle" mode="copy"/>
<xsl:apply-templates select="abstract" mode="copy"/>
</info>
<xsl:apply-templates/>
</simplesect>
</xsl:template>
<xsl:template match="refsect1|refsect2|refsect3|refsection" priority="200">
<refsection>
<xsl:call-template name="copy.attributes"/>
<xsl:if test="not(refsect1info|refsect2info|refsect3info|refsectioninfo)">
<info>
<xsl:apply-templates select="title" mode="copy"/>
<xsl:apply-templates select="titleabbrev" mode="copy"/>
<xsl:apply-templates select="subtitle" mode="copy"/>
<xsl:apply-templates select="abstract" mode="copy"/>
</info>
</xsl:if>
<xsl:apply-templates/>
</refsection>
</xsl:template>
<xsl:template match="imagedata|videodata|audiodata|textdata" priority="200">
<xsl:copy>
<xsl:call-template name="copy.attributes">
<xsl:with-param name="suppress" select="'srccredit'"/>
</xsl:call-template>
<xsl:if test="@srccredit">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Check conversion of srccredit </xsl:text>
<xsl:text>(othercredit="srccredit").</xsl:text>
</xsl:with-param>
</xsl:call-template>
<info>
<othercredit class="other" otherclass="srccredit">
<orgname>???</orgname>
<contrib>
<xsl:value-of select="@srccredit"/>
</contrib>
</othercredit>
</info>
</xsl:if>
</xsl:copy>
</xsl:template>
<xsl:template match="sgmltag" priority="200">
<tag>
<xsl:call-template name="copy.attributes"/>
<xsl:if test="@class = 'sgmlcomment'">
<xsl:attribute name="class">comment</xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
</tag>
</xsl:template>
<xsl:template match="inlinegraphic[@format='linespecific']" priority="210">
<textobject>
<textdata>
<xsl:call-template name="copy.attributes"/>
</textdata>
</textobject>
</xsl:template>
<xsl:template match="inlinegraphic" priority="200">
<inlinemediaobject>
<imageobject>
<imagedata>
<xsl:call-template name="copy.attributes"/>
</imagedata>
</imageobject>
</inlinemediaobject>
</xsl:template>
<xsl:template match="graphic[@format='linespecific']" priority="210">
<mediaobject>
<textobject>
<textdata>
<xsl:call-template name="copy.attributes"/>
</textdata>
</textobject>
</mediaobject>
</xsl:template>
<xsl:template match="graphic" priority="200">
<mediaobject>
<imageobject>
<imagedata>
<xsl:call-template name="copy.attributes"/>
</imagedata>
</imageobject>
</mediaobject>
</xsl:template>
<xsl:template match="pubsnumber" priority="200">
<biblioid class="pubsnumber">
<xsl:call-template name="copy.attributes"/>
<xsl:apply-templates/>
</biblioid>
</xsl:template>
<xsl:template match="invpartnumber" priority="200">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Converting invpartnumber to biblioid otherclass="invpartnumber".</xsl:text>
</xsl:with-param>
</xsl:call-template>
<biblioid class="other" otherclass="invpartnumber">
<xsl:call-template name="copy.attributes"/>
<xsl:apply-templates/>
</biblioid>
</xsl:template>
<xsl:template match="contractsponsor" priority="200">
<xsl:variable name="contractnum"
select="preceding-sibling::contractnum|following-sibling::contractnum"/>
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Converting contractsponsor to othercredit="contractsponsor".</xsl:text>
</xsl:with-param>
</xsl:call-template>
<othercredit class="other" otherclass="contractsponsor">
<orgname>
<xsl:call-template name="copy.attributes"/>
<xsl:apply-templates/>
</orgname>
<xsl:for-each select="$contractnum">
<contrib role="contractnum">
<xsl:apply-templates select="node()"/>
</contrib>
</xsl:for-each>
</othercredit>
</xsl:template>
<xsl:template match="contractnum" priority="200">
<xsl:if test="not(preceding-sibling::contractsponsor
|following-sibling::contractsponsor)
and not(preceding-sibling::contractnum)">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Converting contractnum to othercredit="contractnum".</xsl:text>
</xsl:with-param>
</xsl:call-template>
<othercredit class="other" otherclass="contractnum">
<orgname>???</orgname>
<xsl:for-each select="self::contractnum
|preceding-sibling::contractnum
|following-sibling::contractnum">
<contrib>
<xsl:apply-templates select="node()"/>
</contrib>
</xsl:for-each>
</othercredit>
</xsl:if>
</xsl:template>
<xsl:template match="isbn|issn" priority="200">
<biblioid class="{local-name(.)}">
<xsl:call-template name="copy.attributes"/>
<xsl:apply-templates/>
</biblioid>
</xsl:template>
<xsl:template match="biblioid[count(*) = 1
and ulink
and normalize-space(text()) = '']" priority="200">
<biblioid xlink:href="{ulink/@url}">
<xsl:call-template name="copy.attributes"/>
<xsl:apply-templates select="ulink/node()"/>
</biblioid>
</xsl:template>
<xsl:template match="authorblurb" priority="200">
<personblurb>
<xsl:call-template name="copy.attributes"/>
<xsl:apply-templates/>
</personblurb>
</xsl:template>
<xsl:template match="collabname" priority="200">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Check conversion of collabname </xsl:text>
<xsl:text>(orgname role="collabname").</xsl:text>
</xsl:with-param>
</xsl:call-template>
<orgname role="collabname">
<xsl:call-template name="copy.attributes"/>
<xsl:apply-templates/>
</orgname>
</xsl:template>
<xsl:template match="modespec" priority="200">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Discarding modespec (</xsl:text>
<xsl:value-of select="."/>
<xsl:text>).</xsl:text>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template match="mediaobjectco" priority="200">
<mediaobject>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</mediaobject>
</xsl:template>
<xsl:template match="remark" priority="200">
<!-- get rid of any embedded markup -->
<remark>
<xsl:copy-of select="@*"/>
<xsl:value-of select="."/>
</remark>
</xsl:template>
<xsl:template match="biblioentry/title
|bibliomset/title
|biblioset/title
|bibliomixed/title" priority="400">
<citetitle>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</citetitle>
</xsl:template>
<xsl:template match="biblioentry/titleabbrev|biblioentry/subtitle
|bibliomset/titleabbrev|bibliomset/subtitle
|biblioset/titleabbrev|biblioset/subtitle
|bibliomixed/titleabbrev|bibliomixed/subtitle"
priority="400">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="biblioentry/contrib
|bibliomset/contrib
|bibliomixed/contrib" priority="200">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Check conversion of contrib </xsl:text>
<xsl:text>(othercontrib="contrib").</xsl:text>
</xsl:with-param>
</xsl:call-template>
<othercredit class="other" otherclass="contrib">
<orgname>???</orgname>
<contrib>
<xsl:call-template name="copy.attributes"/>
<xsl:apply-templates/>
</contrib>
</othercredit>
</xsl:template>
<xsl:template match="link" priority="200">
<xsl:copy>
<xsl:call-template name="copy.attributes"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="ulink" priority="200">
<xsl:choose>
<xsl:when test="node()">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Converting ulink to link.</xsl:text>
</xsl:with-param>
</xsl:call-template>
<link xlink:href="{@url}">
<xsl:call-template name="copy.attributes">
<xsl:with-param name="suppress" select="'url'"/>
</xsl:call-template>
<xsl:apply-templates/>
</link>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Converting ulink to uri.</xsl:text>
</xsl:with-param>
</xsl:call-template>
<uri xlink:href="{@url}">
<xsl:call-template name="copy.attributes">
<xsl:with-param name="suppress" select="'url'"/>
</xsl:call-template>
<xsl:value-of select="@url"/>
</uri>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="olink" priority="200">
<xsl:if test="@linkmode">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Discarding linkmode on olink.</xsl:text>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<xsl:choose>
<xsl:when test="@targetdocent">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Converting olink targetdocent to targetdoc.</xsl:text>
</xsl:with-param>
</xsl:call-template>
<olink targetdoc="{unparsed-entity-uri(@targetdocent)}">
<xsl:for-each select="@*">
<xsl:if test="name(.) != 'targetdocent'
and name(.) != 'linkmode'">
<xsl:copy/>
</xsl:if>
</xsl:for-each>
<xsl:apply-templates/>
</olink>
</xsl:when>
<xsl:otherwise>
<olink>
<xsl:for-each select="@*">
<xsl:if test="name(.) != 'linkmode'">
<xsl:copy/>
</xsl:if>
</xsl:for-each>
<xsl:apply-templates/>
</olink>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="biblioentry/firstname
|biblioentry/surname
|biblioentry/othername
|biblioentry/lineage
|biblioentry/honorific
|bibliomset/firstname
|bibliomset/surname
|bibliomset/othername
|bibliomset/lineage
|bibliomset/honorific" priority="200">
<xsl:choose>
<xsl:when test="preceding-sibling::firstname
|preceding-sibling::surname
|preceding-sibling::othername
|preceding-sibling::lineage
|preceding-sibling::honorific">
<!-- nop -->
</xsl:when>
<xsl:otherwise>
<personname>
<xsl:apply-templates select="../firstname
|../surname
|../othername
|../lineage
|../honorific" mode="copy"/>
</personname>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="areaset" priority="200">
<xsl:copy>
<xsl:call-template name="copy.attributes">
<xsl:with-param name="suppress" select="'coords'"/>
</xsl:call-template>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="date|pubdate" priority="200">
<xsl:variable name="rp1" select="substring-before(normalize-space(.), ' ')"/>
<xsl:variable name="rp2"
select="substring-before(substring-after(normalize-space(.), ' '),
' ')"/>
<xsl:variable name="rp3"
select="substring-after(substring-after(normalize-space(.), ' '), ' ')"/>
<xsl:variable name="p1">
<xsl:choose>
<xsl:when test="contains($rp1, ',')">
<xsl:value-of select="substring-before($rp1, ',')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$rp1"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="p2">
<xsl:choose>
<xsl:when test="contains($rp2, ',')">
<xsl:value-of select="substring-before($rp2, ',')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$rp2"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="p3">
<xsl:choose>
<xsl:when test="contains($rp3, ',')">
<xsl:value-of select="substring-before($rp3, ',')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$rp3"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="date">
<xsl:choose>
<xsl:when test="string($p1+1) != 'NaN' and string($p3+1) != 'NaN'">
<xsl:choose>
<xsl:when test="$p2 = 'Jan' or $p2 = 'January'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-01-</xsl:text>
<xsl:number value="$p1" format="01"/>
</xsl:when>
<xsl:when test="$p2 = 'Feb' or $p2 = 'February'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-02-</xsl:text>
<xsl:number value="$p1" format="01"/>
</xsl:when>
<xsl:when test="$p2 = 'Mar' or $p2 = 'March'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-03-</xsl:text>
<xsl:number value="$p1" format="01"/>
</xsl:when>
<xsl:when test="$p2 = 'Apr' or $p2 = 'April'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-04-</xsl:text>
<xsl:number value="$p1" format="01"/>
</xsl:when>
<xsl:when test="$p2 = 'May'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-05-</xsl:text>
<xsl:number value="$p1" format="01"/>
</xsl:when>
<xsl:when test="$p2 = 'Jun' or $p2 = 'June'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-06-</xsl:text>
<xsl:number value="$p1" format="01"/>
</xsl:when>
<xsl:when test="$p2 = 'Jul' or $p2 = 'July'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-07-</xsl:text>
<xsl:number value="$p1" format="01"/>
</xsl:when>
<xsl:when test="$p2 = 'Aug' or $p2 = 'August'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-08-</xsl:text>
<xsl:number value="$p1" format="01"/>
</xsl:when>
<xsl:when test="$p2 = 'Sep' or $p2 = 'September'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-09-</xsl:text>
<xsl:number value="$p1" format="01"/>
</xsl:when>
<xsl:when test="$p2 = 'Oct' or $p2 = 'October'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-10-</xsl:text>
<xsl:number value="$p1" format="01"/>
</xsl:when>
<xsl:when test="$p2 = 'Nov' or $p2 = 'November'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-11-</xsl:text>
<xsl:number value="$p1" format="01"/>
</xsl:when>
<xsl:when test="$p2 = 'Dec' or $p2 = 'December'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-12-</xsl:text>
<xsl:number value="$p1" format="01"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="string($p2+1) != 'NaN' and string($p3+1) != 'NaN'">
<xsl:choose>
<xsl:when test="$p1 = 'Jan' or $p1 = 'January'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-01-</xsl:text>
<xsl:number value="$p2" format="01"/>
</xsl:when>
<xsl:when test="$p1 = 'Feb' or $p1 = 'February'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-02-</xsl:text>
<xsl:number value="$p2" format="01"/>
</xsl:when>
<xsl:when test="$p1 = 'Mar' or $p1 = 'March'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-03-</xsl:text>
<xsl:number value="$p2" format="01"/>
</xsl:when>
<xsl:when test="$p1 = 'Apr' or $p1 = 'April'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-04-</xsl:text>
<xsl:number value="$p2" format="01"/>
</xsl:when>
<xsl:when test="$p1 = 'May'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-05-</xsl:text>
<xsl:number value="$p2" format="01"/>
</xsl:when>
<xsl:when test="$p1 = 'Jun' or $p1 = 'June'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-06-</xsl:text>
<xsl:number value="$p2" format="01"/>
</xsl:when>
<xsl:when test="$p1 = 'Jul' or $p1 = 'July'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-07-</xsl:text>
<xsl:number value="$p2" format="01"/>
</xsl:when>
<xsl:when test="$p1 = 'Aug' or $p1 = 'August'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-08-</xsl:text>
<xsl:number value="$p2" format="01"/>
</xsl:when>
<xsl:when test="$p1 = 'Sep' or $p1 = 'September'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-09-</xsl:text>
<xsl:number value="$p2" format="01"/>
</xsl:when>
<xsl:when test="$p1 = 'Oct' or $p1 = 'October'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-10-</xsl:text>
<xsl:number value="$p2" format="01"/>
</xsl:when>
<xsl:when test="$p1 = 'Nov' or $p1 = 'November'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-11-</xsl:text>
<xsl:number value="$p2" format="01"/>
</xsl:when>
<xsl:when test="$p1 = 'Dec' or $p1 = 'December'">
<xsl:number value="$p3" format="0001"/>
<xsl:text>-12-</xsl:text>
<xsl:number value="$p2" format="01"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="normalize-space($date) != normalize-space(.)">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Converted </xsl:text>
<xsl:value-of select="normalize-space(.)"/>
<xsl:text> into </xsl:text>
<xsl:value-of select="$date"/>
<xsl:text> for </xsl:text>
<xsl:value-of select="name(.)"/>
</xsl:with-param>
</xsl:call-template>
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:value-of select="$date"/>
</xsl:copy>
</xsl:when>
<xsl:when test="$defaultDate != ''">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Unparseable date: </xsl:text>
<xsl:value-of select="normalize-space(.)"/>
<xsl:text> in </xsl:text>
<xsl:value-of select="name(.)"/>
<xsl:text> (Using default: </xsl:text>
<xsl:value-of select="$defaultDate"/>
<xsl:text>)</xsl:text>
</xsl:with-param>
</xsl:call-template>
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:copy-of select="$defaultDate"/>
<xsl:comment>
<xsl:value-of select="."/>
</xsl:comment>
</xsl:copy>
</xsl:when>
<xsl:otherwise>
<!-- these don't really matter anymore
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Unparseable date: </xsl:text>
<xsl:value-of select="normalize-space(.)"/>
<xsl:text> in </xsl:text>
<xsl:value-of select="name(.)"/>
</xsl:with-param>
</xsl:call-template>
-->
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="title|subtitle|titleabbrev" priority="300">
<!-- nop -->
</xsl:template>
<xsl:template match="abstract" priority="300">
<xsl:if test="not(contains(name(parent::*),'info'))">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Check abstract; moved into info correctly?</xsl:text>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template match="indexterm">
<!-- don't copy the defaulted significance='normal' attribute -->
<indexterm>
<xsl:call-template name="copy.attributes">
<xsl:with-param name="suppress">
<xsl:if test="@significance = 'normal'">significance</xsl:if>
</xsl:with-param>
</xsl:call-template>
<xsl:apply-templates/>
</indexterm>
</xsl:template>
<xsl:template match="ackno" priority="200">
<acknowledgements>
<xsl:copy-of select="@*"/>
<para>
<xsl:apply-templates/>
</para>
</acknowledgements>
</xsl:template>
<xsl:template match="lot|lotentry|tocback|tocchap|tocfront|toclevel1|
toclevel2|toclevel3|toclevel4|toclevel5|tocpart" priority="200">
<tocdiv>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</tocdiv>
</xsl:template>
<xsl:template match="action" priority="200">
<phrase remap="action">
<xsl:call-template name="copy.attributes"/>
<xsl:apply-templates/>
</phrase>
</xsl:template>
<xsl:template match="beginpage" priority="200">
<xsl:comment> beginpage pagenum=<xsl:value-of select="@pagenum"/> </xsl:comment>
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Replacing beginpage with comment</xsl:text>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template match="structname|structfield" priority="200">
<varname remap="{local-name(.)}">
<xsl:call-template name="copy.attributes"/>
<xsl:apply-templates/>
</varname>
</xsl:template>
<!-- ====================================================================== -->
<!-- 6 Feb 2008, ndw changed mode=copy so that it only copies the first level,
then it switches back to "normal" mode so that other rewriting templates
catch embedded fixes -->
<!--
<xsl:template match="ulink" priority="200" mode="copy">
<xsl:choose>
<xsl:when test="node()">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Converting ulink to phrase.</xsl:text>
</xsl:with-param>
</xsl:call-template>
<phrase xlink:href="{@url}">
<xsl:call-template name="copy.attributes">
<xsl:with-param name="suppress" select="'url'"/>
</xsl:call-template>
<xsl:apply-templates/>
</phrase>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Converting ulink to uri.</xsl:text>
</xsl:with-param>
</xsl:call-template>
<uri xlink:href="{@url}">
<xsl:call-template name="copy.attributes">
<xsl:with-param name="suppress" select="'url'"/>
</xsl:call-template>
<xsl:value-of select="@url"/>
</uri>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="sgmltag" priority="200" mode="copy">
<tag>
<xsl:call-template name="copy.attributes"/>
<xsl:apply-templates/>
</tag>
</xsl:template>
-->
<xsl:template match="*" mode="copy">
<xsl:copy>
<xsl:call-template name="copy.attributes"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<!--
<xsl:template match="comment()|processing-instruction()|text()" mode="copy">
<xsl:copy/>
</xsl:template>
-->
<!-- ====================================================================== -->
<xsl:template match="*">
<xsl:copy>
<xsl:call-template name="copy.attributes"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="comment()|processing-instruction()|text()">
<xsl:copy/>
</xsl:template>
<!-- ====================================================================== -->
<xsl:template name="copy.attributes">
<xsl:param name="src" select="."/>
<xsl:param name="suppress" select="''"/>
<xsl:for-each select="$src/@*">
<xsl:choose>
<xsl:when test="local-name(.) = 'moreinfo'">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Discarding moreinfo on </xsl:text>
<xsl:value-of select="local-name($src)"/>
</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:when test="local-name(.) = 'lang'">
<xsl:attribute name="xml:lang">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:when>
<xsl:when test="local-name(.) = 'id'">
<xsl:attribute name="xml:id">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:when>
<xsl:when test="$suppress = local-name(.)"/>
<xsl:when test="local-name(.) = 'float'">
<xsl:choose>
<xsl:when test=". = '1'">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Discarding float on </xsl:text>
<xsl:value-of select="local-name($src)"/>
</xsl:with-param>
</xsl:call-template>
<xsl:if test="not($src/@floatstyle)">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Adding floatstyle='normal' on </xsl:text>
<xsl:value-of select="local-name($src)"/>
</xsl:with-param>
</xsl:call-template>
<xsl:attribute name="floatstyle">
<xsl:text>normal</xsl:text>
</xsl:attribute>
</xsl:if>
</xsl:when>
<xsl:when test=". = '0'">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Discarding float on </xsl:text>
<xsl:value-of select="local-name($src)"/>
</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Discarding float on </xsl:text>
<xsl:value-of select="local-name($src)"/>
</xsl:with-param>
</xsl:call-template>
<xsl:if test="not($src/@floatstyle)">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Adding floatstyle='</xsl:text>
<xsl:value-of select="."/>
<xsl:text>' on </xsl:text>
<xsl:value-of select="local-name($src)"/>
</xsl:with-param>
</xsl:call-template>
<xsl:attribute name="floatstyle">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="local-name(.) = 'entityref'">
<xsl:attribute name="fileref">
<xsl:value-of select="unparsed-entity-uri(@entityref)"/>
</xsl:attribute>
</xsl:when>
<xsl:when test="local-name($src) = 'simplemsgentry'
and local-name(.) = 'audience'">
<xsl:attribute name="msgaud">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:when>
<xsl:when test="local-name($src) = 'simplemsgentry'
and local-name(.) = 'origin'">
<xsl:attribute name="msgorig">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:when>
<xsl:when test="local-name($src) = 'simplemsgentry'
and local-name(.) = 'level'">
<xsl:attribute name="msglevel">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:when>
<!-- * for upgrading XSL litprog params documentation -->
<xsl:when test="local-name($src) = 'refmiscinfo'
and local-name(.) = 'role'
and . = 'type'
">
<xsl:call-template name="emit-message">
<xsl:with-param name="message">
<xsl:text>Converting refmiscinfo@role=type to </xsl:text>
<xsl:text>@class=other,otherclass=type</xsl:text>
</xsl:with-param>
</xsl:call-template>
<xsl:attribute name="class">other</xsl:attribute>
<xsl:attribute name="otherclass">type</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:copy/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
<!-- ====================================================================== -->
<xsl:template match="*" mode="addNS">
<xsl:choose>
<xsl:when test="namespace-uri(.) = ''">
<xsl:element name="{local-name(.)}"
namespace="http://docbook.org/ns/docbook">
<xsl:if test="not(parent::*)">
<xsl:attribute name="version">5.0</xsl:attribute>
</xsl:if>
<xsl:copy-of select="@*"/>
<xsl:apply-templates mode="addNS"/>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:copy>
<xsl:if test="not(parent::*)">
<xsl:attribute name="version">5.0</xsl:attribute>
</xsl:if>
<xsl:copy-of select="@*"/>
<xsl:apply-templates mode="addNS"/>
</xsl:copy>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="comment()|processing-instruction()|text()" mode="addNS">
<xsl:copy/>
</xsl:template>
<!-- ====================================================================== -->
<xsl:template name="emit-message">
<xsl:param name="message"/>
<xsl:message>
<xsl:value-of select="$message"/>
<xsl:text> (</xsl:text>
<xsl:value-of select="$rootid"/>
<xsl:text>)</xsl:text>
</xsl:message>
</xsl:template>
</xsl:stylesheet>