Next in thread →
Next in month →
Re: [docbook-apps] passing attributes from an ARTICLE element to an HTML element
My mistake. The template <xsl:call-template name="l10n.language"/> is used to select
one of the DocBook XSL locale files under common. Since the English one is name
"en.xml", this template processes the @xml:lang value and returns "en". So replace
that call with:
<xsl:if test="@xml:lang">
<xsl:attribute name="lang">
<xsl:value-of select="@xml:lang"/>
</xsl:attribute>
</xsl:if>
That will pick up the actual value of the xml:lang attibute.
Bob Stayton
Sagehill Enterprises
----- Original Message -----
From: "Robert Pasternak" <>
To: "Bob Stayton" <>
Cc: <>
Sent: Friday, March 18, 2011 12:58 AM
Subject: Re: [docbook-apps] passing attributes from an ARTICLE element to an HTML
element
Hi Bob,
It works, thanks, but there is one small problem. In my source docbook
xml I have:
<article xml:lang="en-us" ...>
In my xhtml output there is:
<html lang="en" xml:lang="en" ...>
..
<body>
..
<div class="article" xml:lang="en-us" lang="en-us" ...>
Please note that while the div element corresponding to the article
element has correct language declaration, i.e. "en-us", the html
element has not, i.e. "en".
What am I missing here?
Thanks,
Robert
On Sat, Feb 26, 2011 at 11:04 PM, Bob Stayton <> wrote:
> Hi Robert,
> To insert an id attribute in the <html> element, you'll need to customize
> the template named 'chunk-element-content' in xhtml/chunk-common.xsl. That
> is where the <html> element is generated. You could add a template call
> after the opening <html> to insert any attributes. Since that template is
> used for all chunks, I would suggest using a mode to just change article:
>
> [in customized chunk-element-content]
> <html>
> <xsl:apply-templates select="." mode="html.root.attributes"/>
> ...
>
> where mode="html.root.attributes" is new for your purposes. You would
> create a general template that does nothing, and a special one for article:
>
> <!-- for all other elements do nothing -->
> <xsl:template match="*" mode="html.root.attributes"/>
>
> <!-- for article, add two attributes -->
> <xsl:template match="d:article" mode="html.root.attributes">
> <xsl:attribute name="id">
> <xsl:call-template name="object.id"/>
> </xsl:attribute>
> <xsl:attribute name="lang">
> <xsl:call-template name="l10n.language"/>
> </xsl:attribute>
> </xsl:template>
>
> To avoid the duplicate id on the div, you need to customize the template
> that matches on d:article in xhtml/component.xsl. After the opening <div>
> tag, it calls a template named 'common.html.attributes', and then generates
> the id attribute. Delete the id part and that should do it.
>
> When you customize the d:article template, be aware that you must follow the
> guidelines for customizing chunked output, and put it in a separate
> customization layer that imports docbook.xsl. That's because the template
> in component.xsl is not a chunking template, it is a template for element
> formatting. If you don't separate them, you probably won't get output for
> your article. See this reference for details:
>
> http://www.sagehill.net/docbookxsl/ChunkingCustomization.html
>
> Bob Stayton
> Sagehill Enterprises
>
>
>
> ----- Original Message ----- From: "Robert Pasternak" <>
> To: <>
> Sent: Friday, February 25, 2011 12:57 AM
> Subject: [docbook-apps] passing attributes from an ARTICLE element to an
> HTML element
>
>
>> Hi
>>
>> My Docbook based project has a modular structure, where each xml file
>> starts with an article element. Each article element specifies two
>> attributes: xml:id and xml:lang. For HTML output I use the
>> xhtml/profile-chunk.xsl transformation, and each article is
>> transformed into a standalone html file. The two attributes are added
>> to the div element containing the contents of the article, however I
>> would like these two attributes to be added to the enclosing html
>> element. And so, the first question is how to do that, and the second
>> is how to remove the xml:id attribute from the div element, so there
>> are no duplicated ids within the single html file.
>>
>> Thanks,
>> Robert
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail:
>> For additional commands, e-mail:
>>
>>
>>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail:
For additional commands, e-mail:
Next in thread →
Next in month →