[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 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 bobs@sagehill.net ----- Original Message ----- From: "Robert Pasternak" <rp.info@gmail.com> To: "Bob Stayton" <bobs@sagehill.net> Cc: <docbook-apps@lists.oasis-open.org> 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 <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 >> >> >> > > --------------------------------------------------------------------- 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]