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
[email protected]
----- Original Message -----
From: "Robert Pasternak" <[email protected]>
To: <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]