%PDF- %PDF-
Direktori : /usr/share/yelp-xsl/xslt/docbook/html/ |
Current File : //usr/share/yelp-xsl/xslt/docbook/html/db2html-bibliography.xsl |
<?xml version='1.0' encoding='UTF-8'?><!-- -*- indent-tabs-mode: nil -*- --> <!-- This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; see the file COPYING.LGPL. If not, see <http://www.gnu.org/licenses/>. --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:db="http://docbook.org/ns/docbook" xmlns:msg="http://projects.gnome.org/yelp/gettext/" xmlns:set="http://exslt.org/sets" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="db msg set" version="1.0"> <!--!!========================================================================== DocBook to HTML - Bibliographies @revision[version=3.4 date=2011-11-14 status=final] This module provides templates to process DocBook bibliograpies. --> <!--**========================================================================== db2html.biblioentry.data Output structured data for a bibliography entry. @revision[version=3.4 date=2011-11-14 status=final] [xsl:params] $node: The `biblioentry` or `biblioset` element to output data for. This template outputs a bibliography entry, or part of a bibliography entry, based on structured data found in a `biblioentry` or `biblioset` element. --> <xsl:template name="db2html.biblioentry.data"> <xsl:param name="node" select="."/> <xsl:variable name="authors" select="$node/author | $node/authorgroup/author | $node/db:author | $node/db:authorgroup/db:author"/> <xsl:if test="$authors"> <xsl:call-template name="db.personname.list"> <xsl:with-param name="nodes" select="$authors"/> </xsl:call-template> <xsl:text>. </xsl:text> </xsl:if> <xsl:variable name="titles" select="$node/title | $node/citetitle | $node/db:title | $node/db:citetitle"/> <xsl:if test="$titles"> <xsl:apply-templates mode="db2html.biblioentry.mode" select="$titles[1]"/> <xsl:if test="$node/volumenum or $node/db:volumenum"> <xsl:text>, </xsl:text> <xsl:apply-templates mode="db2html.biblioentry.mode" select="($node/volumenum | $node/db:volumenum)[1]"/> </xsl:if> <xsl:if test="$node/issuenum or $node/db:issuenum"> <xsl:text>, </xsl:text> <xsl:apply-templates mode="db2html.biblioentry.mode" select="($node/issuenum | $node/db:issuenum)[1]"/> </xsl:if> <xsl:if test="$node/pagenums or $node/db:pagenums"> <xsl:text>, </xsl:text> <xsl:apply-templates mode="db2html.biblioentry.mode" select="($node/pagenums | $node/db:pagenums)[1]"/> </xsl:if> <xsl:if test="$node/artpagenums or $node/db:artpagenums"> <xsl:text>, </xsl:text> <xsl:apply-templates mode="db2html.biblioentry.mode" select="($node/artpagenums | $node/db:artpagenums)[1]"/> </xsl:if> <xsl:text>. </xsl:text> </xsl:if> <xsl:variable name="publisher" select="$node/publisher | $node/publishername | $node/db:publisher | $node/db:publishername"/> <xsl:if test="$publisher"> <xsl:apply-templates mode="db2html.biblioentry.mode" select="$publisher[1]"/> <xsl:text>. </xsl:text> </xsl:if> <xsl:if test="$node/copyright or $node/db:copyright"> <xsl:for-each select="$node/copyright | $node/db:copyright"> <xsl:apply-templates mode="db2html.biblioentry.mode" select="."/> <xsl:if test="position() != 1"> <xsl:call-template name="l10n.gettext"> <xsl:with-param name="msgid" select="', '"/> </xsl:call-template> </xsl:if> </xsl:for-each> <xsl:text>. </xsl:text> </xsl:if> <xsl:for-each select="$node/isbn | $node/issn | $node/pubsnumber | $node/biblioid | $node/db:biblioid"> <xsl:apply-templates mode="db2html.biblioentry.mode" select="."/> <xsl:text>. </xsl:text> </xsl:for-each> <xsl:for-each select="$node/date | $node/pubdate | $node/db:date | $node/db:pubdate"> <xsl:apply-templates mode="db2html.biblioentry.mode" select="."/> <xsl:text>. </xsl:text> </xsl:for-each> <xsl:for-each select="$node/biblioset | $node/db:biblioset"> <xsl:call-template name="db2html.biblioentry.data"/> </xsl:for-each> </xsl:template> <!--**========================================================================== db2html.biblioentry.label Output the label for a bibliography entry. @revision[version=3.4 date=2011-11-14 status=final] [xsl:params] $node: The `biblioentry` or `bibliomixed` element to generate a label for. This template outputs a label to be placed inline at the beginning of a bibliography entry. Labels are created for both `biblioentry` and `bibliomixed` elements. The label is typically an abbreviation of the authors' names and the year of publication. In DocBook, it is usually provided with a leading `abbrev` element. Without a leading `abbrev` element, this template will instead use the `xreflabel` or `id` attribute. --> <xsl:template name="db2html.biblioentry.label"> <xsl:param name="node" select="."/> <xsl:if test="$node/*[1]/self::abbrev or $node/@xreflabel or $node/@id or $node/*[1]/self::db:abbrev or $node/@xml:id"> <span class="bibliolabel"> <xsl:call-template name="l10n.gettext"> <xsl:with-param name="msgid" select="'biblioentry.label'"/> <xsl:with-param name="node" select="."/> <xsl:with-param name="format" select="true()"/> </xsl:call-template> </span> <xsl:text> </xsl:text> </xsl:if> </xsl:template> <!--#% l10n.format.mode % msg:biblioentry.label --> <xsl:template mode="l10n.format.mode" match="msg:biblioentry.label"> <xsl:param name="node"/> <xsl:choose> <xsl:when test="$node/*[1]/self::abbrev"> <xsl:apply-templates select="$node/abbrev[1]"/> </xsl:when> <xsl:when test="$node/*[1]/self::db:abbrev"> <xsl:apply-templates select="$node/db:abbrev[1]"/> </xsl:when> <xsl:when test="$node/@xreflabel"> <xsl:value-of select="$node/@xreflabel"/> </xsl:when> <xsl:when test="$node/@id"> <xsl:value-of select="$node/@id"/> </xsl:when> <xsl:when test="$node/@xml:id"> <xsl:value-of select="$node/@xml:id"/> </xsl:when> </xsl:choose> </xsl:template> <!--%%========================================================================== db2html.biblioentry.mode Format elements inside a `biblioentry` or `bibliomixed` element. @revision[version=3.4 date=2011-11-14 status=final] This mode is used when processing the child elements of a `biblioentry` or a `bibliomixed` element. Some elements are treated differently when they appear inside a bibliography entry. --> <xsl:template mode="db2html.biblioentry.mode" match="*"> <span> <xsl:call-template name="html.class.attr"> <xsl:with-param name="class" select="local-name(.)"/> </xsl:call-template> <xsl:call-template name="html.lang.attrs"/> <xsl:call-template name="db2html.anchor"/> <xsl:apply-templates mode="db2html.biblioentry.mode"/> </span> </xsl:template> <!-- = abstract % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="abstract | db:abstract"/> <!-- = affiliation % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="affiliation | db:affiliation"/> <!-- = author % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="author | db:author"> <xsl:call-template name="db.personname"/> </xsl:template> <!-- = authorblurb % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="authorblurb"/> <!-- = authorgroup % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="authorgroup | db:authorgroup"> <xsl:call-template name="db.personname.list"> <xsl:with-param name="nodes" select="*"/> </xsl:call-template> </xsl:template> <!-- = biblioset % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="biblioset | db:biblioset"> <xsl:call-template name="db2html.biblioentry.data"/> </xsl:template> <!-- = citerefentry % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="citerefentry | db:citerefentry"> <xsl:apply-templates select="."/> </xsl:template> <!-- = collab % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="collab | db:collab"> <xsl:apply-templates select="."/> </xsl:template> <!-- = copyright % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="copyright | db:copyright"> <xsl:call-template name="db.copyright"/> </xsl:template> <!-- = cover % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="db:cover"/> <!-- = editor % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="editor | db:editor"> <xsl:call-template name="db.personname"/> </xsl:template> <!-- = footnote % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="footnote | footnoteref | db:footnote | db:footnoteref"> <xsl:apply-templates select="."/> </xsl:template> <!-- = glossterm % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="glossterm | db:glossterm"> <xsl:apply-templates select="."/> </xsl:template> <!-- = indexterm % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="indexterm | db:indexterm"/> <!-- = legalnotice % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="legalnotice | db:legalnotice"/> <!-- = mediaobject % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="mediaobject | db:mediaobject"> <xsl:apply-templates select="."/> </xsl:template> <!-- = org % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="db:org"> <xsl:call-template name="db.personname"/> </xsl:template> <!-- = othercredit % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="othercredit | db:othercredit"> <xsl:call-template name="db.personname"/> </xsl:template> <!-- = person % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="db:person"> <xsl:call-template name="db.personname"/> </xsl:template> <!-- = personname % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="personname | db:personname"> <xsl:call-template name="db.personname"/> </xsl:template> <!-- = personblurb % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="personblurb | db:personblurb"/> <!-- = publisher % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="publisher | db:publisher"> <xsl:apply-templates mode="db2html.biblioentry.mode" select="publishername | db:publishername"/> </xsl:template> <!-- = printhistory % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="printhistory | db:printhistory"/> <!-- = subscript % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="subscript | db:subscript"> <xsl:apply-templates select="."/> </xsl:template> <!-- = superscript % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="superscript | db:superscript"> <xsl:apply-templates select="."/> </xsl:template> <!-- = revhistory % db2html.biblioentry.mode = --> <xsl:template mode="db2html.biblioentry.mode" match="revhistory | db:revhistory"/> <!-- == Matched Templates == --> <!-- = bibliography = --> <xsl:template match="bibliography | db:bibliography"> <xsl:param name="depth_in_chunk"> <xsl:call-template name="db.chunk.depth-in-chunk"/> </xsl:param> <xsl:param name="depth_of_chunk"> <xsl:call-template name="db.chunk.depth-of-chunk"/> </xsl:param> <xsl:call-template name="db2html.division.div"> <xsl:with-param name="info" select="bibliographyinfo | db:info"/> <xsl:with-param name="divisions" select="bibliodiv | db:bibliodiv"/> <xsl:with-param name="depth_in_chunk" select="$depth_in_chunk"/> <xsl:with-param name="depth_of_chunk" select="$depth_of_chunk"/> </xsl:call-template> </xsl:template> <!-- = bibliodiv = --> <xsl:template match="bibliodiv | db:bibliodiv"> <xsl:param name="depth_in_chunk"> <xsl:call-template name="db.chunk.depth-in-chunk"/> </xsl:param> <xsl:param name="depth_of_chunk"> <xsl:call-template name="db.chunk.depth-of-chunk"/> </xsl:param> <xsl:call-template name="db2html.division.div"> <xsl:with-param name="info" select="db:info"/> <xsl:with-param name="depth_in_chunk" select="$depth_in_chunk"/> <xsl:with-param name="depth_of_chunk" select="$depth_of_chunk"/> </xsl:call-template> </xsl:template> <!-- = biblioentry = --> <xsl:template match="biblioentry | db:biblioentry"> <xsl:variable name="if"><xsl:call-template name="db.profile.test"/></xsl:variable> <xsl:if test="$if != ''"> <div> <xsl:call-template name="html.class.attr"> <xsl:with-param name="class" select="'biblioentry'"/> </xsl:call-template> <xsl:call-template name="html.lang.attrs"/> <xsl:call-template name="db2html.anchor"/> <xsl:call-template name="db2html.biblioentry.label"/> <xsl:call-template name="db2html.biblioentry.data"/> </div> </xsl:if> </xsl:template> <!-- = bibliomixed = --> <xsl:template match="bibliomixed | db:bibliomixed"> <xsl:variable name="node" select="."/> <xsl:variable name="if"><xsl:call-template name="db.profile.test"/></xsl:variable> <xsl:if test="$if != ''"> <div> <xsl:call-template name="html.class.attr"> <xsl:with-param name="class" select="'biblimixed'"/> </xsl:call-template> <xsl:call-template name="html.lang.attrs"/> <xsl:call-template name="db2html.anchor"/> <xsl:call-template name="db2html.biblioentry.label"/> <xsl:apply-templates mode="db2html.biblioentry.mode" select="node()[not(set:has-same-node(., $node/*[1]/self::abbrev | $node/*[1]/self::db:abbrev))]"/> </div> </xsl:if> </xsl:template> <!-- = bibliolist = --> <xsl:template match="bibliolist | db:bibliolist"> <xsl:call-template name="db2html.block.formal"> <xsl:with-param name="class" select="'list'"/> </xsl:call-template> </xsl:template> </xsl:stylesheet>