]> granicus.if.org Git - docbook-dsssl/commitdiff
Make active.olink.hrefs param work for chunked output too.
authorBob Stayton <bobs@sagehill.net>
Fri, 25 Jan 2013 18:13:36 +0000 (18:13 +0000)
committerBob Stayton <bobs@sagehill.net>
Fri, 25 Jan 2013 18:13:36 +0000 (18:13 +0000)
xsl/html/chunk-common.xsl

index b3bb710ca6a17789f9f70ccf1c5dbe9bd7ef47fa..3963505bbfe723764bfabd05fe9de4f5da4cdcd2 100644 (file)
               <xsl:variable name="currentdoc.key" >
                 <xsl:for-each select="$target.database" >
                   <xsl:value-of select="key('targetdoc-key',
-                                        $current.docid)/@targetdoc" />
+                                        $current.docid)[1]/@targetdoc" />
                 </xsl:for-each>
               </xsl:variable>
               <xsl:choose>
                   <xsl:for-each select="$target.database" >
                     <xsl:call-template name="targetpath" >
                       <xsl:with-param name="dirnode" 
-                          select="key('targetdoc-key', $current.docid)/parent::dir"/>
+                          select="key('targetdoc-key', $current.docid)[1]/parent::dir"/>
                       <xsl:with-param name="targetdoc" select="$targetdoc"/>
                     </xsl:call-template>
                   </xsl:for-each >
           <!-- In either case, add baseuri from its document entry-->
           <xsl:variable name="docbaseuri">
             <xsl:for-each select="$target.database" >
-              <xsl:value-of select="key('targetdoc-key', $targetdoc)/@baseuri" />
+              <xsl:value-of select="key('targetdoc-key', $targetdoc)[1]/@baseuri" />
             </xsl:for-each>
           </xsl:variable>
           <xsl:if test="$docbaseuri != ''" >
           <!-- Just use any baseuri from its document entry -->
           <xsl:variable name="docbaseuri">
             <xsl:for-each select="$target.database" >
-              <xsl:value-of select="key('targetdoc-key', $targetdoc)/@baseuri" />
+              <xsl:value-of select="key('targetdoc-key', $targetdoc)[1]/@baseuri" />
             </xsl:for-each>
           </xsl:variable>
           <xsl:if test="$docbaseuri != ''" >
       </xsl:choose>
     </xsl:variable>
   
-    <!-- Form the href information -->
-    <xsl:if test="not(contains($baseuri, ':'))">
-      <!-- if not an absolute uri, add upward path from olink chunk -->
-      <xsl:value-of select="$upward.from.path"/>
-    </xsl:if>
+    <!-- Is this olink to be active? -->
+    <xsl:variable name="active.olink">
+      <xsl:choose>
+        <xsl:when test="$activate.external.olinks = 0">
+          <xsl:choose>
+            <xsl:when test="$current.docid = ''">1</xsl:when>
+            <xsl:when test="$targetdoc = ''">1</xsl:when>
+            <xsl:when test="$targetdoc = $current.docid">1</xsl:when>
+            <xsl:otherwise>0</xsl:otherwise>
+          </xsl:choose>
+        </xsl:when>
+        <xsl:otherwise>1</xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
 
-    <xsl:if test="$baseuri != ''">
-      <xsl:value-of select="$baseuri"/>
-      <xsl:if test="substring($target.href,1,1) != '#'">
-        <!--xsl:text>/</xsl:text-->
+    <xsl:if test="$active.olink != 0">
+      <!-- Form the href information -->
+      <xsl:if test="not(contains($baseuri, ':'))">
+        <!-- if not an absolute uri, add upward path from olink chunk -->
+        <xsl:value-of select="$upward.from.path"/>
+      </xsl:if>
+  
+      <xsl:if test="$baseuri != ''">
+        <xsl:value-of select="$baseuri"/>
+        <xsl:if test="substring($target.href,1,1) != '#'">
+          <!--xsl:text>/</xsl:text-->
+        </xsl:if>
+      </xsl:if>
+      <!-- optionally turn off frag for PDF references -->
+      <xsl:if test="not($insert.olink.pdf.frag = 0 and
+            translate(substring($baseuri, string-length($baseuri) - 3),
+                      'PDF', 'pdf') = '.pdf'
+            and starts-with($target.href, '#') )">
+        <xsl:value-of select="$target.href"/>
       </xsl:if>
-    </xsl:if>
-    <!-- optionally turn off frag for PDF references -->
-    <xsl:if test="not($insert.olink.pdf.frag = 0 and
-          translate(substring($baseuri, string-length($baseuri) - 3),
-                    'PDF', 'pdf') = '.pdf'
-          and starts-with($target.href, '#') )">
-      <xsl:value-of select="$target.href"/>
     </xsl:if>
   </xsl:if>
 </xsl:template>