First, for Bob, yes, I know the width attribute was not valid; it was just for the example.
Wow, Bob, you are right. It was a namespace issue. I had actually tried d:chapter, but was unsure whether the element name to the right of the slash needed to be namespaced as well. If you do d:chapter but not d:para, then it does NOT work. You must do both. Thanks for your help. Robert On Mon, Jan 14, 2013 at 11:57 PM, Bob Stayton <[email protected]> wrote: > ** > OK, that's more clear. The import statement indicates that you are using > the namespaced stylesheets, and the use of @xml:id in the match attribute > indicates that your document is DocBook 5. So any element names used in > the stylesheet must be in the DocBook namespace, and so must be preceded by > the namespace prefix: > > <xsl:template match="d:chapter[@xml:id = 'mypreface']/d:para" > mode="class.attribute" > > > <xsl:param name="width" select="local-name(.)"/> > <xsl:attribute name="width">50px</xsl:attribute> > </xsl:template> > Then it should output the width attribute. > > I should point out that a width attribute on <p> is not valid HTML5 and > will likely not pass epubcheck3, if that matters. > > Bob Stayton > Sagehill Enterprises > [email protected] > > *From:* Robert Nagle <[email protected]> > *Sent:* Monday, January 14, 2013 9:02 PM > *To:* Bob Stayton <[email protected]> > *Cc:* apps docbook <[email protected]> > *Subject:* Re: [docbook-apps] epub3 + adding customized attribute and > value to p tag? > > Oops, I pasted things incorrectly again! (But again, when I tried the > correct form, the output would generate, but the chapter with the > xml:id="mypreface" would NOT add a 'width = "50px"' value. > > > > <?xml version="1.0" encoding="UTF-8"?> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xmlns="http://www.w3.org/1999/xhtml" xmlns:d=" > http://docbook.org/ns/docbook" > xmlns:date="http://exslt.org/dates-and-times" xmlns:saxon=" > http://icl.com/saxon" > exclude-result-prefixes="d date saxon" version="1.0"> > > > <xsl:import > href="../../../../1latest/docbook-xsl-ns-1.78.0/epub3/chunk.xsl"/> > > > <xsl:param name="use.id.as.filename">1</xsl:param> > > > <xsl:template match="chapter[@xml:id = 'mypreface']/para" > mode="class.attribute" > > <xsl:param name="width" select="local-name(.)"/> > <xsl:attribute name="width">50px</xsl:attribute> > </xsl:template> > > > > </xsl:stylesheet> > > > > On Mon, Jan 14, 2013 at 10:58 PM, Robert Nagle > <[email protected]>wrote: > >> (Whoops, I didn't paste it accurately into my email. But the code I >> actually used (see below) did include that part, and it still not did not >> yield the output I wanted. I tried this several times). >> >> >> <?xml version="1.0" encoding="UTF-8"?> >> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >> xmlns="http://www.w3.org/1999/xhtml" xmlns:d=" >> http://docbook.org/ns/docbook" >> xmlns:date="http://exslt.org/dates-and-times" xmlns:saxon=" >> http://icl.com/saxon" >> exclude-result-prefixes="d date saxon" version="1.0"> >> >> >> <xsl:import >> href="../../../../1latest/docbook-xsl-ns-1.78.0/epub3/chunk.xsl"/> >> <xsl:param name="use.id.as.filename">1</xsl:param> >> >> >> >> >> <xsl:template match="chapter[@xml:id = 'mypreface']/para" >> mode="class.attribute" > >> >> <xsl:param name="width" select="local-name(.)"/> >> <xsl:attribute name="width">50px</xsl:attribute> >> </xsl:template> >> >> >> >> </xsl:stylesheet> >> >> >> >> >> On Mon, Jan 14, 2013 at 9:26 PM, Bob Stayton <[email protected]> wrote: >> >>> ** >>> Hi Robert, >>> You seem to have left off the mode="class.attribute" in your template. >>> In its current form it is processing in normal mode, which effectively >>> kills the output for that element. >>> >>> Bob Stayton >>> Sagehill Enterprises >>> [email protected] >>> >>> *From:* Robert Nagle <[email protected]> >>> *Sent:* Saturday, January 12, 2013 2:33 AM >>> *To:* apps docbook <[email protected]> >>> *Subject:* [docbook-apps] epub3 + adding customized attribute and value >>> to p tag? >>> >>> Hi, there, >>> >>> I am trying to add custom attribute values to all para tags inside a >>> specific chapter(the reason for this will be explained in a later >>> question). >>> >>> About a year or so ago, Bob suggested a way to insert new attributes and >>> values into html output. >>> https://lists.oasis-open.org/archives/docbook-apps/201108/msg00091.html >>> >>> However, when I try it using the epub 3 stylesheets, it doesn't succeed: >>> >>> My goal here is to add a custom attribute and value for every p tag >>> inside the <chapter xml:id="mypreface"> >>> >>> ******************************* MY SOURCE XML >>> <?xml version="1.0" encoding="UTF-8"?> >>> <?oxygen RNGSchema=" >>> http://www.oasis-open.org/docbook/xml/5.0/rng/docbook.rng" type="xml"?> >>> >>> <book xmlns="http://docbook.org/ns/docbook" xmlns:xi=" >>> http://www.w3.org/2001/XInclude" >>> xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" >>> xml:id="robert-book"> >>> >>> >>> <chapter xml:id="mypreface"> >>> <title>First</title> >>> <para> this is my good <emphasis role="bold">bold >>> </emphasis>first para</para> >>> <para> This is my good second para</para> >>> >>> </chapter> >>> >>> <chapter xml:id="bad1"> >>> <title>Second</title> >>> <para> this is my bad<emphasis role="bold">bold</emphasis>first >>> para</para> >>> <para> This is my bad second para</para> >>> </chapter> >>> >>> <chapter xml:id="bad2"> >>> <title>Third </title> >>> <para> 2this is my bad<emphasis >>> role="bold">bold</emphasis>first para</para> >>> <para> 2 This is my bad second para</para> >>> </chapter> >>> >>> *************************************************************MY >>> CUSTOMIZATION LAYER >>> >>> <?xml version="1.0" encoding="UTF-8"?> >>> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >>> xmlns="http://www.w3.org/1999/xhtml" xmlns:d=" >>> http://docbook.org/ns/docbook" >>> xmlns:date="http://exslt.org/dates-and-times" xmlns:saxon=" >>> http://icl.com/saxon" >>> exclude-result-prefixes="d date saxon" version="1.0"> >>> >>> <xsl:import >>> href="../../../../1latest/docbook-xsl-ns-1.78.0/epub3/chunk.xsl"/> >>> >>> <xsl:template match="chapter[@xml:id = 'mypreface']/para" > >>> <xsl:param name="width" select="local-name(.)"/> >>> <xsl:attribute name="width">50px</xsl:attribute> >>> </xsl:template> >>> </xsl:stylesheet> >>> >>> ********************************************************************* >>> (I also changing the xpath statement to d:chapter[@xml:id = >>> 'preface']/d:para with the same result) >>> >>> I would expect every p tag in the RESULT output to contain >>> 'width="50px". But instead I see for the first chapter this result: >>> >>> ... >>> <body><header></header> >>> <section class="chapter" title="First" epub:type="chapter" >>> id="mypreface"> >>> <div class="titlepage"> >>> <div> >>> <div><h1 class="title">First</h1></div> >>> </div> >>> </div> >>> <p> this is my good <span class="bold"><strong>bold >>> </strong></span>first para</p> >>> <p> This is my good second para</p></section><footer></footer></body> >>> >>> ************************************************************************************ >>> >>> I'm not sure what I'm doing wrong; have I written the xpath wrong? For >>> the previous xsl snippet Bob suggested which I used for adding custom >>> attributes, this was pre-epub3. How would you do this in epub3? Or am I >>> making a syntax error of some sort? >>> >>> Thanks for your help >>> >>> >>> -- >>> Robert Nagle >>> 6121 Winsome Ln #56C, Houston TX 77057-5581 >>> (H) 713 893 3424/ (W) 832-251-7522 Carbon Neutral Since Jan 2010 >>> http://www.robertnagle.info >>> >> >> >> >> -- >> Robert Nagle >> 6121 Winsome Ln #56C, Houston TX 77057-5581 >> (H) 713 893 3424 <713%20893%203424>/ (W) 832-251-7522 Carbon Neutral >> Since Jan 2010 >> http://www.robertnagle.info >> > > > > -- > Robert Nagle > 6121 Winsome Ln #56C, Houston TX 77057-5581 > (H) 713 893 3424/ (W) 832-251-7522 Carbon Neutral Since Jan 2010 > http://www.robertnagle.info > -- Robert Nagle 6121 Winsome Ln #56C, Houston TX 77057-5581 (H) 713 893 3424/ (W) 832-251-7522 Carbon Neutral Since Jan 2010 http://www.robertnagle.info
