Re: [docbook-apps] Something like an attribute-set, but different

From
Bob Stayton <>
Date
2007-12-13T21:35:38+00:00
ID
941AF8200F354CF28F917C9BF7C3E405@sheeta
Thread
Re: [docbook-apps] Something like an attribute-set, but different
Hi,
Keep in mind that a top level parameter is processed once only, when the 
stylesheet is loaded.  As such, a parameter is good for global properties. 
For properties on elements with different attributes or content, you can use 
something similar in the value of an attribute inside an attribute-set.  For 
an example of that syntax, see:

http://www.sagehill.net/docbookxsl/PrintTableStyles.html#TableTitle

An attribute-set is evaluated each time it is used on an element, so the 
condition can resolve differently for different element instances.

Bob Stayton
Sagehill Enterprises



----- Original Message ----- 
From: "Geraint North" <>
To: "Thomas Schraitle" <>
Cc: <>
Sent: Thursday, December 13, 2007 12:29 AM
Subject: Re: [docbook-apps] Something like an attribute-set, but different


> That's great - I didn't realise that the parameters could be  dynamically 
> configured in that way (but of course they can be,  thinking about it) - 
> that will make life very easy indeed.
>
> Thanks,
>
> Geraint North
> Principal Engineer
> Transitive
>
>
> On 12 Dec 2007, at 19:29, Thomas Schraitle wrote:
>
>> Hi,
>>
>> On Mittwoch, 12. Dezember 2007, Geraint North wrote:
>>>
>>> I've got a few situations where I'd like to set some attributes based
>>> on some top-level properties of my DocBook Book.  For example:
>>> - If the <book>'s lang is "ja", use a set of Japanese fonts, rather
>>> than the defaults.
>>
>> That's pretty easy. You have to create a customization layer as  shown in
>> [1] and insert the following parameter:
>>
>>  <xsl:param name="body.font.family">
>>    <xsl:choose>
>>      <xsl:when test="/book/@lang='ja'">
>>       <xsl:text><!-- Insert your fonts here --></xsl:text>
>>      </xsl:when>
>>      <xsl:otherwise>serif</xsl:otherwise>
>>    </xsl:choose>
>>  </xsl:param>
>>
>> Probably you need to configure the other parameters like 
>> sans.font.family
>> as well (see [2]).
>>
>>
>>> - If the confidentiality level of the document (my own tag) is
>>> "Confidential", print the chapter titles in black rather than blue.
>>
>> For this check I need to know where your confidentiality element is
>> allowed.
>>
>> I am not 100% sure, maybe there are better methods, but you can  change 
>> the
>> attribute set chapter.titlepage.recto.style (untested):
>>
>>  <xsl:attribute-set name="chapter.titlepage.recto.style">
>>    <xsl:attribute name="color">
>>      <xsl:choose>
>>        <!-- Adapt the XPath in test to your needs -->
>>        <xsl:when test="/*/confidentiality = 'Confidental'">
>>          <xsl:text>black</xsl:text>
>>        </xsl:when>
>>        <xsl:otherwise>blue</xsl:otherwise>
>>      </xsl:choose>
>>    </xsl:attribute>
>>  </xsl:attribute-set>
>>
>> Insert it into your customization layer too. :)
>>
>>
>> Hope that helps,
>> Tom
>>
>> ---------
>> [1]
>> http://www.sagehill.net/docbookxsl/ CustomMethods.html#CustomizationLayer
>> [2] http://docbook.sourceforge.net/release/xsl/current/doc/fo/ fonts.html
>>
>>
>> -- 
>> Thomas Schraitle
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: 
>> For additional commands, e-mail: - open.org
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: 
> For additional commands, e-mail: 
>
>
>