浏览代码

Skip dummy sect1 from navigational links.

git-svn-id: http://svn.linuxfromscratch.org/LFS/branches/new-xsl@8054 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
Manuel Canales Esparcia 18 年之前
父节点
当前提交
90b90bfdc0
共有 1 个文件被更改,包括 133 次插入50 次删除
  1. 133 50
      xhtml/lfs-navigational.xsl

+ 133 - 50
xhtml/lfs-navigational.xsl

@@ -89,8 +89,9 @@
              Added a title attribute to the link containing the target title
              Added a title attribute to the link containing the target title
                (it content is displayed when placing the mouse over the link)
                (it content is displayed when placing the mouse over the link)
              For "Prev" and "Next" links, added the target title under it.
              For "Prev" and "Next" links, added the target title under it.
-             When "Next" target is the Index, added gettext support for the
-               Index title. -->
+             When "Next" target is the Index, added gentext support for the
+               Index title.
+             Skip links to dummy sect1. -->
   <xsl:template name="navigational.links">
   <xsl:template name="navigational.links">
     <xsl:param name="prev"/>
     <xsl:param name="prev"/>
     <xsl:param name="next"/>
     <xsl:param name="next"/>
@@ -99,60 +100,142 @@
     <ul>
     <ul>
       <xsl:if test="count($prev)&gt;0 and $prev != $home">
       <xsl:if test="count($prev)&gt;0 and $prev != $home">
         <li class="prev">
         <li class="prev">
-          <a accesskey="p">
-            <xsl:attribute name="href">
-              <xsl:call-template name="href.target">
-                <xsl:with-param name="object" select="$prev"/>
-              </xsl:call-template>
-            </xsl:attribute>
-            <xsl:attribute name="title">
-              <xsl:value-of select="$prev/title"/>
-            </xsl:attribute>
-            <xsl:call-template name="navig.content">
-              <xsl:with-param name="direction" select="'prev'"/>
-            </xsl:call-template>
-          </a>
-          <p>
-            <xsl:value-of select="$prev/title"/>
-          </p>
+          <xsl:choose>
+            <xsl:when test="$prev[@role='dummy'] and
+                            count(preceding-sibling::sect1)=1">
+              <a accesskey="p">
+                <xsl:attribute name="href">
+                  <xsl:call-template name="href.target">
+                    <xsl:with-param name="object" select=".."/>
+                  </xsl:call-template>
+                </xsl:attribute>
+                <xsl:attribute name="title">
+                  <xsl:value-of select="../title"/>
+                </xsl:attribute>
+                <xsl:call-template name="navig.content">
+                  <xsl:with-param name="direction" select="'prev'"/>
+                </xsl:call-template>
+              </a>
+              <p>
+                <xsl:value-of select="../title"/>
+              </p>
+            </xsl:when>
+            <xsl:when test="$prev[@role='dummy'] and
+                            count(preceding-sibling::sect1)&gt;1">
+              <a accesskey="p">
+                <xsl:attribute name="href">
+                  <xsl:call-template name="href.target">
+                    <xsl:with-param name="object" select="preceding-sibling::sect1[position()=2]"/>
+                  </xsl:call-template>
+                </xsl:attribute>
+                <xsl:attribute name="title">
+                  <xsl:value-of select="preceding-sibling::sect1[position()=2]/title"/>
+                </xsl:attribute>
+                <xsl:call-template name="navig.content">
+                  <xsl:with-param name="direction" select="'prev'"/>
+                </xsl:call-template>
+              </a>
+              <p>
+                <xsl:value-of select="preceding-sibling::sect1[position()=2]/title"/>
+              </p>
+            </xsl:when>
+            <xsl:otherwise>
+              <a accesskey="p">
+                <xsl:attribute name="href">
+                  <xsl:call-template name="href.target">
+                    <xsl:with-param name="object" select="$prev"/>
+                  </xsl:call-template>
+                </xsl:attribute>
+                <xsl:attribute name="title">
+                  <xsl:value-of select="$prev/title"/>
+                </xsl:attribute>
+                <xsl:call-template name="navig.content">
+                  <xsl:with-param name="direction" select="'prev'"/>
+                </xsl:call-template>
+              </a>
+              <p>
+                <xsl:value-of select="$prev/title"/>
+              </p>
+            </xsl:otherwise>
+          </xsl:choose>
         </li>
         </li>
       </xsl:if>
       </xsl:if>
       <xsl:if test="count($next)&gt;0">
       <xsl:if test="count($next)&gt;0">
         <li class="next">
         <li class="next">
-          <a accesskey="n">
-            <xsl:attribute name="href">
-              <xsl:call-template name="href.target">
-                <xsl:with-param name="object" select="$next"/>
-              </xsl:call-template>
-            </xsl:attribute>
-            <xsl:attribute name="title">
-              <xsl:choose>
-                <xsl:when test="local-name($next)='index'">
-                  <xsl:call-template name="gentext">
-                    <xsl:with-param name="key">Index</xsl:with-param>
+          <xsl:choose>
+            <xsl:when test="$next[@role='dummy'] and local-name(.) = 'sect1'">
+              <a accesskey="n">
+                <xsl:attribute name="href">
+                  <xsl:call-template name="href.target">
+                    <xsl:with-param name="object" select="following-sibling::sect1[position()=2]"/>
+                  </xsl:call-template>
+                </xsl:attribute>
+                <xsl:attribute name="title">
+                  <xsl:value-of select="following-sibling::sect1[position()=2]/title"/>
+                </xsl:attribute>
+                <xsl:call-template name="navig.content">
+                  <xsl:with-param name="direction" select="'next'"/>
+                </xsl:call-template>
+              </a>
+              <p>
+                <xsl:value-of select="following-sibling::sect1[position()=2]/title"/>
+              </p>
+            </xsl:when>
+            <xsl:when test="$next[@role='dummy'] and local-name(.) = 'chapter'">
+              <a accesskey="n">
+                <xsl:attribute name="href">
+                  <xsl:call-template name="href.target">
+                    <xsl:with-param name="object" select="descendant::sect1[position()=2]"/>
+                  </xsl:call-template>
+                </xsl:attribute>
+                <xsl:attribute name="title">
+                  <xsl:value-of select="descendant::sect1[position()=2]/title"/>
+                </xsl:attribute>
+                <xsl:call-template name="navig.content">
+                  <xsl:with-param name="direction" select="'next'"/>
+                </xsl:call-template>
+              </a>
+              <p>
+                <xsl:value-of select="descendant::sect1[position()=2]/title"/>
+              </p>
+            </xsl:when>
+            <xsl:otherwise>
+              <a accesskey="n">
+                <xsl:attribute name="href">
+                  <xsl:call-template name="href.target">
+                    <xsl:with-param name="object" select="$next"/>
                   </xsl:call-template>
                   </xsl:call-template>
-                </xsl:when>
-                <xsl:otherwise>
-                  <xsl:value-of select="$next/title"/>
-                </xsl:otherwise>
-              </xsl:choose>
-            </xsl:attribute>
-            <xsl:call-template name="navig.content">
-              <xsl:with-param name="direction" select="'next'"/>
-            </xsl:call-template>
-          </a>
-          <p>
-            <xsl:choose>
-              <xsl:when test="local-name($next)='index'">
-                <xsl:call-template name="gentext">
-                  <xsl:with-param name="key">Index</xsl:with-param>
+                </xsl:attribute>
+                <xsl:attribute name="title">
+                  <xsl:choose>
+                    <xsl:when test="local-name($next)='index'">
+                      <xsl:call-template name="gentext">
+                        <xsl:with-param name="key">Index</xsl:with-param>
+                      </xsl:call-template>
+                    </xsl:when>
+                    <xsl:otherwise>
+                      <xsl:value-of select="$next/title"/>
+                    </xsl:otherwise>
+                  </xsl:choose>
+                </xsl:attribute>
+                <xsl:call-template name="navig.content">
+                  <xsl:with-param name="direction" select="'next'"/>
                 </xsl:call-template>
                 </xsl:call-template>
-              </xsl:when>
-              <xsl:otherwise>
-                <xsl:value-of select="$next/title"/>
-              </xsl:otherwise>
-            </xsl:choose>
-          </p>
+              </a>
+              <p>
+                <xsl:choose>
+                  <xsl:when test="local-name($next)='index'">
+                    <xsl:call-template name="gentext">
+                      <xsl:with-param name="key">Index</xsl:with-param>
+                    </xsl:call-template>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <xsl:value-of select="$next/title"/>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </p>
+            </xsl:otherwise>
+          </xsl:choose>
         </li>
         </li>
       </xsl:if>
       </xsl:if>
       <li class="up">
       <li class="up">