select="($target/ancestor-or-self::*[@lang]
|$target/ancestor-or-self::*[@xml:lang])[last()]"/>
<xsl:variable name="lang-attr"
- select="$lang-scope/@lang | $lang-scope/@xml:lang"/>
+ select="($lang-scope/@lang | $lang-scope/@xml:lang)[1]"/>
<xsl:choose>
<xsl:when test="string($lang-attr) = ''">
<xsl:value-of select="$l10n.gentext.default.language"/>
select="(ancestor-or-self::*[@lang]
|ancestor-or-self::*[@xml:lang])[last()]"/>
<xsl:variable name="lang-attr"
- select="$lang-scope/@lang | $lang-scope/@xml:lang"/>
+ select="($lang-scope/@lang | $lang-scope/@xml:lang)[1]"/>
<xsl:choose>
<xsl:when test="string($lang-attr) = ''">
</xsl:choose>
</xsl:template>
+<xsl:template name="language.attribute">
+ <xsl:param name="node" select="."/>
+
+ <xsl:variable name="language">
+ <xsl:choose>
+ <xsl:when test="$l10n.gentext.language != ''">
+ <xsl:value-of select="$l10n.gentext.language"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- can't do this one step: attributes are unordered! -->
+ <xsl:variable name="lang-scope"
+ select="($node/ancestor-or-self::*[@lang]
+ |$node/ancestor-or-self::*[@xml:lang])[last()]"/>
+ <xsl:variable name="lang-attr"
+ select="($lang-scope/@lang | $lang-scope/@xml:lang)[1]"/>
+
+ <xsl:choose>
+ <xsl:when test="string($lang-attr) = ''">
+ <xsl:value-of select="$l10n.gentext.default.language"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$lang-attr"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="$language != ''">
+ <xsl:attribute name="lang">
+ <xsl:value-of select="$language"/>
+ </xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
<xsl:template name="gentext">
<xsl:param name="key" select="local-name(.)"/>
<xsl:param name="lang">
<!-- ==================================================================== -->
<xsl:template match="blockquote">
- <xsl:call-template name="anchor"/>
- <xsl:choose>
- <xsl:when test="attribution">
- <table border="0" width="100%"
- cellspacing="0" cellpadding="0" class="blockquote"
- summary="Block quote">
- <tr>
- <td width="10%" valign="top"> </td>
- <td width="80%" valign="top">
- <xsl:apply-templates
- select="child::*[local-name(.)!='attribution']"/>
- </td>
- <td width="10%" valign="top"> </td>
- </tr>
- <tr>
- <td colspan="2" align="right" valign="top">
- <xsl:text>--</xsl:text>
- <xsl:apply-templates select="attribution"/>
- </td>
- <td width="10%" valign="top"> </td>
- </tr>
- </table>
- </xsl:when>
- <xsl:otherwise>
- <blockquote class="blockquote">
- <xsl:apply-templates/>
- </blockquote>
- </xsl:otherwise>
- </xsl:choose>
+ <div class="{local-name(.)}">
+ <xsl:if test="@lang or @xml:lang">
+ <xsl:call-template name="language.attribute"/>
+ </xsl:if>
+ <xsl:call-template name="anchor"/>
+
+ <xsl:choose>
+ <xsl:when test="attribution">
+ <table border="0" width="100%"
+ cellspacing="0" cellpadding="0" class="blockquote"
+ summary="Block quote">
+ <tr>
+ <td width="10%" valign="top"> </td>
+ <td width="80%" valign="top">
+ <xsl:apply-templates select="child::*[local-name(.)!='attribution']"/>
+ </td>
+ <td width="10%" valign="top"> </td>
+ </tr>
+ <tr>
+ <td colspan="2" align="right" valign="top">
+ <xsl:text>--</xsl:text>
+ <xsl:apply-templates select="attribution"/>
+ </td>
+ <td width="10%" valign="top"> </td>
+ </tr>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <blockquote class="{local-name(.)}">
+ <xsl:apply-templates/>
+ </blockquote>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
</xsl:template>
<xsl:template match="blockquote/title">
<xsl:template match="dedication" mode="dedication">
<div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
<xsl:call-template name="dedication.titlepage"/>
<xsl:apply-templates/>
<xsl:call-template name="process.footnotes"/>
<xsl:template match="colophon">
<div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
<xsl:if test="$generate.id.attributes != 0">
<xsl:attribute name="id">
<xsl:call-template name="object.id"/>
<xsl:template match="preface">
<div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
<xsl:if test="$generate.id.attributes != 0">
<xsl:attribute name="id">
<xsl:call-template name="object.id"/>
<xsl:template match="chapter">
<div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
<xsl:if test="$generate.id.attributes != 0">
<xsl:attribute name="id">
<xsl:call-template name="object.id"/>
</xsl:variable>
<div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
<xsl:if test="$generate.id.attributes != 0">
<xsl:attribute name="id">
<xsl:call-template name="object.id"/>
<xsl:template match="article">
<div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
<xsl:if test="$generate.id.attributes != 0">
<xsl:attribute name="id">
<xsl:call-template name="object.id"/>
<xsl:template match="set">
<div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
<xsl:if test="$generate.id.attributes != 0">
<xsl:attribute name="id">
<xsl:call-template name="object.id"/>
<xsl:template match="book">
<div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
<xsl:if test="$generate.id.attributes != 0">
<xsl:attribute name="id">
<xsl:call-template name="object.id"/>
<xsl:template match="part">
<div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
<xsl:if test="$generate.id.attributes != 0">
<xsl:attribute name="id">
<xsl:call-template name="object.id"/>
<xsl:template match="partintro">
<div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
<xsl:if test="$generate.id.attributes != 0">
<xsl:attribute name="id">
<xsl:call-template name="object.id"/>
<xsl:template match="reference">
<div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
<xsl:call-template name="anchor">
<xsl:with-param name="conditional" select="0"/>
</xsl:call-template>
<xsl:template match="refentry">
<div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
<xsl:if test="$refentry.separator != 0 and preceding-sibling::refentry">
<div class="refentry.separator">
<hr/>
</xsl:template>
<xsl:template match="refsection|refsect1|refsect2|refsect3">
- <xsl:call-template name="block.object"/>
+ <div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </div>
</xsl:template>
<xsl:template match="refsection/title|refsect1/title">
<xsl:variable name="depth" select="count(ancestor::section)+1"/>
<div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
<xsl:call-template name="section.titlepage"/>
<xsl:variable name="toc.params">
<xsl:template match="sect1">
<div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
<xsl:call-template name="sect1.titlepage"/>
<xsl:variable name="toc.params">
<xsl:template match="sect2">
<div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
<xsl:call-template name="sect2.titlepage"/>
<xsl:variable name="toc.params">
<xsl:template match="sect3">
<div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
<xsl:call-template name="sect3.titlepage"/>
<xsl:variable name="toc.params">
<xsl:template match="sect4">
<div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
<xsl:call-template name="sect4.titlepage"/>
<xsl:variable name="toc.params">
<xsl:template match="sect5">
<div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
<xsl:call-template name="sect5.titlepage"/>
<xsl:variable name="toc.params">
<xsl:template match="simplesect">
<div class="{name(.)}">
+ <xsl:call-template name="language.attribute"/>
<xsl:call-template name="simplesect.titlepage"/>
<xsl:apply-templates/>
</div>