Fix the formatting of the index in HTML output.

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@10357 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
This commit is contained in:
Matthew Burgess 2013-10-09 23:46:50 +00:00
parent 58675ce70d
commit 4d4915a7b5
2 changed files with 59 additions and 75 deletions

View File

@ -1,5 +1,5 @@
<!ENTITY version "SVN-20131009"> <!ENTITY version "SVN-20131010">
<!ENTITY releasedate "October 9, 2013"> <!ENTITY releasedate "October 10, 2013">
<!ENTITY copyrightdate "1999-2013"><!-- jhalfs needs a literal dash, not &ndash; --> <!ENTITY copyrightdate "1999-2013"><!-- jhalfs needs a literal dash, not &ndash; -->
<!ENTITY milestone "7.5"> <!ENTITY milestone "7.5">
<!ENTITY generic-version "development"> <!-- Use "development", "testing", or "x.y[-pre{x}]" --> <!ENTITY generic-version "development"> <!-- Use "development", "testing", or "x.y[-pre{x}]" -->

View File

@ -1,4 +1,4 @@
<?xml version='1.0' encoding='ISO-8859-1'?> <?xml version="1.0" encoding="ISO-8859-1"?>
<!-- <!--
$LastChangedBy$ $LastChangedBy$
@ -20,44 +20,29 @@ $Date$
xmlns="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml"
version="1.0"> version="1.0">
<!-- This stylesheet controls how the Index is generated. <!-- Change the file name of the index page from the default ix01.html.
Due how they are created, the original XHTML stylesheets don't make There is no upstream template with match="index", only a global
use of the entities from {docbook-xsl}/common/entities.ent. match="*", thus the following is enough to override the index
We add the relevant ones in the DOCTYPE to have more readable templates. filename. -->
Also, we remove support for @role and @type based Index due that it is
broken when used with @zone based cross-references. -->
<!-- The file name of the Index page.
There is no upstream template with match="index", only a global
match="*", thus the next template is enought to force the Index
filename. -->
<xsl:template match="index" mode="recursive-chunk-filename"> <xsl:template match="index" mode="recursive-chunk-filename">
<xsl:text>longindex.html</xsl:text> <xsl:text>longindex.html</xsl:text>
</xsl:template> </xsl:template>
<!-- The Index title in the longindex.html page: <!-- Divisions:
Removed a lot of code not useful for us. Override the default division titles, translating them from the default
Forced h1 title size. --> 'A', 'B', etc. to 'Packages', 'Programs', etc.
<!-- The original template is in {docbook-xsl}/xhtml/titlepage.templates.xsl --> Add gentext support to division titles.
<xsl:template name="index.titlepage"> Use h2 for division titles instead of the default h3.
<h1 class="index"> Change main listings from dl to ul format.
<xsl:call-template name="gentext"> The original template is in {docbook-xsl}/xhtml/autoidx.xsl -->
<xsl:with-param name="key" select="$index-title"/>
</xsl:call-template>
</h1>
</xsl:template>
<!--Divisions:
Translate alphabetical divisions titles to by-type titles.
Added gentext support to divisions titles.
Using h2 for divisions titles.
Changed output from dl format to ul format. -->
<!-- The original template is in {docbook-xsl}/xhtml/autoidx.xsl -->
<xsl:template match="indexterm" mode="index-div-basic"> <xsl:template match="indexterm" mode="index-div-basic">
<xsl:param name="scope" select="."/> <xsl:param name="scope" select="."/>
<xsl:variable name="key" select="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/> <xsl:variable name="key" select="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/>
<xsl:variable name="divtitle" select="translate($key, &lowercase;, &uppercase;)"/> <xsl:variable name="divtitle" select="translate($key, &lowercase;, &uppercase;)"/>
<!-- Make sure that we don't generate a div if there are no terms in scope --> <!-- Make sure that we don't generate a div if there are no terms in scope
-->
<xsl:if test="key('letter', $key)[&scope;] [count(.|key('primary', &primary;)[&scope;][1]) = 1]"> <xsl:if test="key('letter', $key)[&scope;] [count(.|key('primary', &primary;)[&scope;][1]) = 1]">
<xsl:if test="contains(concat(&lowercase;, &uppercase;), $key)"> <xsl:if test="contains(concat(&lowercase;, &uppercase;), $key)">
<h2> <h2>
@ -131,38 +116,24 @@ $Date$
</h2> </h2>
</xsl:if> </xsl:if>
<ul> <ul>
<xsl:apply-templates select="key('letter', $key)[&scope;] [count(.|key('primary', &primary;)[&scope;][1])=1]" <xsl:apply-templates select="key('letter', $key)[count(ancestor::node()|$scope) = count(ancestor::node())][count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node())][1])=1]" mode="index-primary">
mode="index-primary"> <xsl:with-param name="scope" select="$scope"/>
<xsl:with-param name="scope" select="$scope"/> <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
<xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> </xsl:apply-templates>
</xsl:apply-templates>
</ul> </ul>
</xsl:if> </xsl:if>
</xsl:template> </xsl:template>
<!-- Dropping $term.separator and $number.separator from here. <!-- Primary items:
We add our customized ones in the output flow. Place term and separator into strong tags.
As all our indexterm have @zone attributes, removed a lot of Place target links into a div.
unused code. --> Change main listings from dl to ul format.
<!-- The original template is in {docbook-xsl}/xhtml/autoidx.xsl --> Removed code for unused see and sealso children.
<xsl:template match="indexterm" mode="reference"> The original template is in {docbook-xsl}/xhtml/autoidx.xsl -->
<xsl:param name="scope" select="."/>
<xsl:call-template name="reference">
<xsl:with-param name="zones" select="normalize-space(@zone)"/>
<xsl:with-param name="scope" select="$scope"/>
</xsl:call-template>
</xsl:template>
<!-- Primary items:
Changed the output format from dl to ul.
Placed the term and separator into strong tags.
Placed the target links into a div.
Removed code for unused see and sealso childs. -->
<!-- The original template is in {docbook-xsl}/xhtml/autoidx.xsl -->
<xsl:template match="indexterm" mode="index-primary"> <xsl:template match="indexterm" mode="index-primary">
<xsl:param name="scope" select="."/> <xsl:param name="scope" select="."/>
<xsl:variable name="key" select="&primary;"/> <xsl:variable name="key" select="normalize-space(concat(primary/@sortas, &quot; &quot;, primary))"/>
<xsl:variable name="refs" select="key('primary', $key)[&scope;]"/> <xsl:variable name="refs" select="key('primary', $key)[count(ancestor::node()|$scope) = count(ancestor::node())]"/>
<li> <li>
<strong class="item"> <strong class="item">
<xsl:value-of select="primary"/> <xsl:value-of select="primary"/>
@ -170,6 +141,7 @@ $Date$
</strong> </strong>
<span class='indexref'> <span class='indexref'>
<xsl:for-each select="$refs[generate-id() = generate-id(key('primary-section',concat($key, &sep;, &section.id;))[&scope;][1])]"> <xsl:for-each select="$refs[generate-id() = generate-id(key('primary-section',concat($key, &sep;, &section.id;))[&scope;][1])]">
<!--<xsl:for-each select="$refs[not(see) and not(secondary)][count(ancestor::node()|$scope) = count(ancestor::node()) = 0]">-->
<xsl:apply-templates select="." mode="reference"> <xsl:apply-templates select="." mode="reference">
<xsl:with-param name="scope" select="$scope"/> <xsl:with-param name="scope" select="$scope"/>
</xsl:apply-templates> </xsl:apply-templates>
@ -177,8 +149,7 @@ $Date$
</span> </span>
<xsl:if test="$refs/secondary"> <xsl:if test="$refs/secondary">
<ul> <ul>
<xsl:apply-templates select="$refs[secondary and count(.|key('secondary', concat($key, &sep;, &secondary;))[&scope;][1]) = 1]" <xsl:apply-templates select="$refs[secondary and count(.|key('secondary', concat($key, &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary))))[count(ancestor::node()|$scope) = count(ancestor::node()) ][1]) = 1]" mode="index-secondary">
mode="index-secondary">
<xsl:with-param name="scope" select="$scope"/> <xsl:with-param name="scope" select="$scope"/>
<xsl:sort select="translate(&secondary;, &lowercase;, &uppercase;)"/> <xsl:sort select="translate(&secondary;, &lowercase;, &uppercase;)"/>
</xsl:apply-templates> </xsl:apply-templates>
@ -187,16 +158,16 @@ $Date$
</li> </li>
</xsl:template> </xsl:template>
<!-- Secondary items: <!-- Secondary items:
Changed the output format from dl to ul. Place term and separator into strong tags.
Placed the term and separator into strong tags. Place target links into a div.
Placed the target links into a div. Change main listings from dl to ul format.
Removed code for unused tertiary, see, and sealso childs. --> Removed code for unused tertiary, see and sealso children.
<!-- The original template is in {docbook-xsl}/xhtml/autoidx.xsl --> The original template is in {docbook-xsl}/xhtml/autoidx.xsl -->
<xsl:template match="indexterm" mode="index-secondary"> <xsl:template match="indexterm" mode="index-secondary">
<xsl:param name="scope" select="."/> <xsl:param name="scope" select="."/>
<xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;)"/> <xsl:variable name="key" select="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)))"/>
<xsl:variable name="refs" select="key('secondary', $key)[&scope;]"/> <xsl:variable name="refs" select="key('secondary', $key)[count(ancestor::node()|$scope) = count(ancestor::node())]"/>
<li> <li>
<strong class="secitem"> <strong class="secitem">
<xsl:value-of select="secondary"/> <xsl:value-of select="secondary"/>
@ -212,14 +183,27 @@ $Date$
</li> </li>
</xsl:template> </xsl:template>
<!-- The target links: <!-- Drop $term.separator and $number.separator from here as customized ones
Changed links separator. are added in the output flow.
On the second @zone link, we use a fixed string for the text As all the indexterms in the book have @zone attributes, removed a lot of
with gentext support. unused code.
Assume that there is no more than 2 @zone in a indexterm. The original template is in {docbook-xsl}/xhtml/autoidx.xsl -->
Use href.target.uri named template to resolve the links. It is faster <xsl:template match="indexterm" mode="reference">
than the default href.target named template. --> <xsl:param name="scope" select="."/>
<!-- The original template is in {docbook-xsl}/xhtml/autoidx.xsl --> <xsl:call-template name="reference">
<xsl:with-param name="zones" select="normalize-space(@zone)"/>
<xsl:with-param name="scope" select="$scope"/>
</xsl:call-template>
</xsl:template>
<!-- The target links:
Changed link separator
On the second @zone link, we use a fixed string for the text with gentext
support.
Assume that there are no more than 2 @zone in a indexterm.
Use href.target.uri named template to resolve the links. It is faster
than the default href.target named template.
The original template is in {docbook-xsl}/xhtml/autoidx.xsl -->
<xsl:template name="reference"> <xsl:template name="reference">
<xsl:param name="scope" select="."/> <xsl:param name="scope" select="."/>
<xsl:param name="zones"/> <xsl:param name="zones"/>