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
[email protected]


  ----- Original Message ----- 
  From: [email protected] 
  To: [email protected] ; [email protected] 
  Cc: [email protected] 
  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 <[email protected]> 
        17.12.2009 17:06 
       An [email protected]  
              Kopie [email protected]  
              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

  [email protected] 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 <[email protected]> 
        04.12.2009 10:28 
       
              An Bob Stayton <[email protected]>  
              Kopie <[email protected]>  
              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
  > [email protected]
  > 
  > 
  > ----- Original Message ----- From: "Johannes Katelaan" 
<[email protected]>
  > To: "Bob Stayton" <[email protected]>
  > Cc: <[email protected]>
  > 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
  >> [email protected]
  >> 
  >> 
  >> ----- Original Message ----- From: "Johannes Katelaan" 
<[email protected]>
  >> To: <[email protected]>
  >> 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: [email protected]
  >>> For additional commands, e-mail: [email protected]
  >>> 
  >>> 
  >> 
  >> 
  >> ---------------------------------------------------------------------
  >> To unsubscribe, e-mail: [email protected]
  >> For additional commands, e-mail: [email protected]
  >> 
  > 
  > 
  > 
  > 
  > ---------------------------------------------------------------------
  > To unsubscribe, e-mail: [email protected]
  > For additional commands, e-mail: [email protected]
  > 


  ---------------------------------------------------------------------
  To unsubscribe, e-mail: [email protected]
  For additional commands, e-mail: [email protected]



  --------------------------------------------------------------------- To 
unsubscribe, e-mail: [email protected] For 
additional commands, e-mail: [email protected] 

Reply via email to