← Prev in month ← Prev in thread
Next in thread → Next in month →

Re: [docbook-apps] Antwort: Re: [docbook-apps] Antwort: Re: [docbook-apps] DocBook 5 - different color for hyperlinks in PDF output

From
"Cob Rtayton"
Date
2009-12-17T18:07:32+00:00
ID
029501ca7f43$b629ce90$0a00a8c0@pazu
Thread
Re: [docbook-apps] Antwort: Re: [docbook-apps] Antwort: Re: [docbook-apps] DocBook 5 - different color for hyperlinks in PDF output
It appears you are processing DocBook 5 documents 
with the original non-namespaced version of the stylesheets.  Because 
DocBook 5 elements are in the DocBook namespace, they must first be stripped of 
that namespace before that version of the stylesheets can match on the element 
names.  The internal stripping process basically converts a DocBook5 
document to a DocBook4 document.  That's where the ulink comes 
from.

 

If you are processing DocBook5 documents, you can 
avoid that problem of ulink conversion by switching to the namespaced version of 
the DocBook XSL stylesheets. With those stylesheets, no conversion is 
necessary and so there are no side effects from it.   In general, that 
is the recommended practice, as it avoids that conversion step.  In that 
case, your customization layer needs to add the namespace prefix to any 
element names, as for example the d:link element in this example:

 

  <xsl:when test="self::d:link and 
@linkend">yellow</xsl:when>

 

See this reference for more 
information:

 

http://www.sagehill.net/docbookxsl/CustomDb5Xsl.html

 

Bob Stayton
Sagehill Enterprises


 

 

  
----- Original Message ----- 

  
From: 
   

  
To:  ;  
  

  
Cc:  
  

  
Sent: Thursday, December 17, 2009 9:27 
  AM

  
Subject: [docbook-apps] Antwort: Re: 
  [docbook-apps] Antwort: Re: [docbook-apps] DocBook 5 - different color for 
  hyperlinks in PDF output

  

Hello Johannes, hello 
  Scott, 

many thanks for your quick 
  replies! 

It turned out that 
  somehow the linking-element 

<link xlink:href="someURL">hotlink</link> 
  

is internally converted to ulink, that's 
  what the debugging-code from Johannes told me. 

So I modified my customization layer like that: 
  

        <xsl:attribute-set 
  name="xref.properties">
        
         <xsl:attribute name="color">
                  
       <!--<xsl:message>
            
                    
   <xsl:value-of select="concat('*** ',local-name(.))"/>"
  
                      
   </xsl:message>
              
           <xsl:for-each select="@*">
  
                        
         <xsl:message>
        
                        
           <xsl:value-of select="concat('### 
  ',namespace-uri(.),' - ',local-name(.))"/>
        
                        
   </xsl:message>
              
           </xsl:for-each>-->
                  
       <xsl:choose>
        
                        
   <xsl:when test="self::link and 
  @linkend">yellow</xsl:when>
                  
               <xsl:when 
  test="self::ulink">green</xsl:when>
  
                        
         <xsl:when test="self::xref and @linkend">orange</xsl:when>
        
                        
   <xsl:when test="self::glossseealso and 
  @otherterm">grey</xsl:when>
                  
               <xsl:otherwise>blue</xsl:otherwise>
      
                   </xsl:choose>
    
             </xsl:attribute>
      
   </xsl:attribute-set>

and it worked! 
  

Now, of course I would love to know: 
  why? 

Anyway, many thanks for your 
  help, 

cheers, 

Benno 

  
    
    

      Johannes Katelaan 
        <> 
        
17.12.2009 17:06 

      
        
          
          

            
              
An

             
          

            
              
Kopie

             
          

            
              
Thema

            Re: [docbook-apps] Antwort: Re: 
              [docbook-apps] DocBook 5 - different color for hyperlinks in PDF 
              output

        
          
          

            
            

Benno,

that's hard to say.
What about adding debug code like 
  this to your xsl:attribute element:

          
   <xsl:message>
              
   <xsl:value-of select="concat('*** ',local-name(.))"/>   
               
      
       </xsl:message>
          
   <xsl:for-each select="@*">
          
       <xsl:message>
          
           <xsl:value-of select="concat('### 
  ',namespace-uri(.),' - ',local-name(.))"/>
        
         </xsl:message>
        
     </xsl:for-each>

This should give you sufficient 
  information to diagnose why it doesn't work as 
  expected.

Regards

Johannes

 schrieb: 
  

I am sorry, but I tried that in 
  every possible constellation and with every xpath-expression known to man (me 
  ;-) and it seems that every element and attribute can be resolved with the 
  exeption of exactly the xlink:href-attribute. 
Have a look at this: 
  

<!-- macht die externen links in 
  pdfs blau, xrefs grün, see also links in glossaries grau -->
  <xsl:attribute-set 
  name="xref.properties">
      
  <xsl:attribute name="color">
        
    <xsl:choose>
                  
  <xsl:when test="self::link and 
  @linkend">grey</xsl:when>
                  
  <xsl:when test="self::link and @xlink:href">blue</xsl:when>
      
              <xsl:when test="self::xref and @linkend">green</xsl:when>
        
            <xsl:when test="self::glossseealso and @otherterm">grey</xsl:when>
        
        <xsl:otherwise>black</xsl:otherwise>
  
          </xsl:choose>
      
  </xsl:attribute>
  </xsl:attribute-set> 

What am I missing? Is it a namespace-problem with 
  xlink: ? I put the namespace on top of my customization layer: 

<?xml version="1.0"?>
<xsl:stylesheet 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      version="1.0"   
  xmlns:dc="http://purl.org/dc/elements/1.1/"
      xmlns:fo="http://www.w3.org/1999/XSL/Format"
      xmlns:xlink="http://www.w3.org/1999/xlink"
      exclude-result-prefixes="#default"> 

What is wrong? 

Regards, 
Benno

  
    
    

      Johannes Katelaan 
        <> 
        
04.12.2009 10:28 
        

      

        
          
          

            
              
An

            Bob Stayton <> 
              
          

            
              
Kopie

            <> 
          

            
              
Thema

            Re: [docbook-apps] DocBook 5 - 
              different color for hyperlinks in PDF 
        output

        
          
          

            
            

Yes, correct. So the 
  DocBook-5-Version would be as follows:

  <xsl:attribute-set 
  name="xref.properties">
      <xsl:attribute 
  name="color">
          
  <xsl:choose>
              
  <xsl:when test="self::d:link and 
  @xlink:href">blue</xsl:when>
          
      <xsl:otherwise>inherit</xsl:otherwise>
  
          </xsl:choose>
      
  </xsl:attribute>
      <xsl:attribute 
  name="text-decoration">
          
  <xsl:choose>
              
  <xsl:when test="self::d:link and 
  @xlink:href">underline</xsl:when>
        
        
  <xsl:otherwise>inherit</xsl:otherwise>
      
      </xsl:choose>
      
  </xsl:attribute>
  </xsl:attribute-set>   
   

Thanks!

Johannes

Am 03.12.2009 um 18:02 schrieb 
  Bob Stayton:

> Yes, xref.properties usually affects all links. 
   However, an xsl:choose statement inside the attribute body can be more 
  selective, as the example in the referenced documentation shows.
> 
  
> Bob Stayton
> Sagehill Enterprises
> 
> 
  
> 
> ----- Original Message ----- From: "Johannes Katelaan" 
  <>
> To: "Bob Stayton" <>
> Cc: <>
> Sent: Thursday, December 03, 2009 8:58 AM
> Subject: Re: 
  [docbook-apps] DocBook 5 - different color for hyperlinks in PDF 
  output
> 
> 
> Hi Bob,
> 
> it's intended only 
  for external links. I'm creating internal links using olink. These must not be 
  affected by this customization. So I think I may not use xref.properties. Is 
  this correct?
> 
> Regards
> 
> Johannes
> 
  
> Am 03.12.2009 um 17:47 schrieb Bob Stayton:
> 
>> 
  Hi,
>> The attribute-set named 'xref.properties' is available to add 
  properties like color to links.  See this reference:
>> 
  
>> http://www.sagehill.net/docbookxsl/CustomXrefs.html#CustomXrefStyle
>> 
  
>> However, it isn't clear from your message if you indent this for 
  all links or only links to external documents.
>> 
>> Bob 
  Stayton
>> Sagehill Enterprises
>> 
  
>> 
>> 
>> ----- Original Message 
  ----- From: "Johannes Katelaan" <>
>> To: 
  <>
>> Sent: Thursday, December 
  03, 2009 5:47 AM
>> Subject: [docbook-apps] DocBook 5 - different 
  color for hyperlinks in PDF output
>> 
>> 
>>> 
  Hi,
>>> 
>>> how can I change the color of hyperlinks 
  created with
>>> <link xlink:href="some url">text I want in 
  different color</link>
>>> 
>>> 
  Johannes
>>> 
>>> 
>>> 
>>> 
  ---------------------------------------------------------------------
>>> 
  To unsubscribe, e-mail: 
  
>>> For additional 
  commands, e-mail: 
>>> 
  
>>> 
>> 
>> 
>> 
  ---------------------------------------------------------------------
>> 
  To unsubscribe, e-mail: 
  
>> For additional 
  commands, e-mail: 
>> 
> 
  
> 
> 
> 
> 
  ---------------------------------------------------------------------
> 
  To unsubscribe, e-mail: 
> 
  For additional commands, e-mail: 
  
> 
  

---------------------------------------------------------------------
To 
  unsubscribe, e-mail: 
For 
  additional commands, e-mail: 
  

--------------------------------------------------------------------- 
  To unsubscribe, e-mail:  For 
  additional commands, e-mail: 
← Prev in month ← Prev in thread
Next in thread → Next in month →