OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

docbook-apps message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]

Subject: Re: [docbook-apps] passing attributes from an ARTICLE element to anHTML 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" ...>
   <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?


On Sat, Feb 26, 2011 at 11:04 PM, Bob Stayton <bobs@sagehill.net> 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
> bobs@sagehill.net
> ----- Original Message ----- From: "Robert Pasternak" <rp.info@gmail.com>
> To: <docbook-apps@lists.oasis-open.org>
> 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: docbook-apps-unsubscribe@lists.oasis-open.org
>> For additional commands, e-mail: docbook-apps-help@lists.oasis-open.org

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]