Hi,
This error:

xsl:attribute: Cannot add attributes to an element if children
have been already added to the element.

is caused by your template named "say", specificially the <xsl:comment> output. Many of the templates open a start tag for an output element, then do several steps to generate appropriate attributes. Nothing must appear in the output before those attributes are completed. When it uses <xsl:comment>, it has inserted something into the output, and then any additional attributes cannot be added. If you remove the xsl:comment from "say", then that error goes away, and the fo file is generated.

The other errors about overlapped table rows are caused by the way rows are processed in DocBook. They are processed by handling the first row, and then recursively applying the row template to handle the next row to take into account any spans. On each recursion, a span value is passed as a parameter from one apply-templates to the next. When you insert your template with match="*" in your customization, you are intercepting the apply-templates to the next row. When your template does xsl:apply-imports to use the original row template, the span param is lost. The missing span param causes the error messages.

If your match avoided rows:

<xsl:template match="*[not(self::d:row)]">

then it works. I can't say offhand if there are templates for other elements that work this way, so in general I would say that using match="*" with xsl:apply-imports is not a safe practice with DocBook XSL.

In XSLT 1.0, it is not possible to use xsl:param with xsl:apply-imports. With XSLT 2.0, it is possible to do so, but it does not automatically pass along any params it receives.

Bob Stayton
Sagehill Enterprises
[EMAIL PROTECTED]


----- Original Message ----- From: "William R. (Bill) Greene" <[EMAIL PROTECTED]>
To: "DocBook Apps" <[email protected]>
Sent: Wednesday, September 03, 2008 7:26 PM
Subject: Re: [docbook-apps] Problem with tables


I've recreated my problem in a greatly simplified but complete set of files, which I have appended. I have also located the problem, but I do not understand it.

The command that I use is as follows:

xsltproc --xinclude --nonet --catalogs --output test.fo test.xsl test.docbook

If the template indicated by the comment in test.xsl below is commented out, the following output is seen, and test.fo is generated:

   Making portrait pages on USletter paper (8.5inx11in)
   Catalogs cleanup
   Free catalog entry

If the template is not commented out, the following output is seen, and test.fo is not generated:

   Making portrait pages on USletter paper (8.5inx11in)
   Processing book
   Processing chapter
   Processing table
   Processing tgroup
runtime error: file ../../resumatic/trunk/vendor/docbook-xsl- ns-1.74.0/fo/table.xsl line 478 element attribute xsl:attribute: Cannot add attributes to an element if children have been already added to the element.
   Processing thead
   Processing row
   Warning: overlapped row contains content!
   Finished processing row
   Finished processing thead
   Processing tfoot
   Processing row
   Warning: overlapped row contains content!
   Finished processing row
   Finished processing tfoot
   Processing tbody
   Processing row
   Warning: overlapped row contains content!
   Processing row
   Warning: overlapped row contains content!
   Processing row
   Warning: overlapped row contains content!
   Finished processing row
   Finished processing row
   Finished processing row
   Finished processing tbody
   Finished processing tgroup
   Finished processing table
   Finished processing chapter
   Finished processing book
   error: file test.docbook
   xsltRunStylesheet : run failed
   Catalogs cleanup
   Free catalog entry
   make: *** [try] Error 11

******************************************************************************
* test .docbook: *
******************************************************************************
<?xml version="1.0" encoding="utf-8"?>
<book
   version    ="5.0"
   xml:lang   ="en"
   xmlns      ="http://docbook.org/ns/docbook";
   xmlns:xlink="http://www.w3.org/1999/xlink";
   xmlns:xi   ="http://www.w3.org/2001/XInclude";>

  <xi:include href="test-separate.docbook"
              xmlns:xi="http://www.w3.org/2001/XInclude"/>
</book>
******************************************************************************
* test- separate.docbook: *
******************************************************************************
<?xml version="1.0" encoding="utf-8"?>
<chapter
   xml:id     ="separate"
   version    ="5.0"
   xml:lang   ="en"
   xmlns      ="http://docbook.org/ns/docbook";
   xmlns:xlink="http://www.w3.org/1999/xlink";
   xmlns:xi   ="http://www.w3.org/2001/XInclude";>

  <!-- From Walsh (http://docbook.org/tdg5/en/html/cals.table.html):  -->
  <table xml:id="ex.calstable" frame='all'>
    <title>Sample CALS Table</title>
    <tgroup cols='5' align='left' colsep='1' rowsep='1'>
      <colspec colname='c1'/>
      <colspec colname='c2'/>
      <colspec colname='c3'/>
      <colspec colnum='5' colname='c5'/>
      <thead>
        <row>
<entry namest="c1" nameend="c2" align="center">Horizontal Span</entry>
          <entry>a3</entry>
          <entry>a4</entry>
          <entry>a5</entry>
        </row>
      </thead>
      <tfoot>
        <row>
          <entry>f1</entry>
          <entry>f2</entry>
          <entry>f3</entry>
          <entry>f4</entry>
          <entry>f5</entry>
        </row>
      </tfoot>
      <tbody>
        <row>
          <entry>b1</entry>
          <entry>b2</entry>
          <entry>b3</entry>
          <entry>b4</entry>
<entry morerows='1' valign='middle'><para>Vertical Span</ para></entry>
        </row>
        <row>
          <entry>c1</entry>
<entry namest="c2" nameend="c3" align='center' morerows='1' valign='bottom'>Span Both</entry>
          <entry>c4</entry>
        </row>
        <row>
          <entry>d1</entry>
          <entry>d4</entry>
          <entry>d5</entry>
        </row>
      </tbody>
    </tgroup>
  </table>
</chapter>
******************************************************************************
* test .xsl: *
******************************************************************************
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
    version  ="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
    xmlns:d  ="http://docbook.org/ns/docbook";
    xmlns:fo ="http://www.w3.org/1999/XSL/Format";
    exclude-result-prefixes="d">

<xsl:import href="../../resumatic/trunk/vendor/docbook-xsl- ns-1.74.0/fo/docbook.xsl"/>

  <xsl:template name="say">
    <xsl:param name="s"></xsl:param>
    <xsl:message><xsl:value-of select="$s"/></xsl:message>
    <xsl:comment><xsl:value-of select="$s"/></xsl:comment>
  </xsl:template>

<!-- If the following template is uncommented, xsltproc encounters a run-time error when processing a tgroup: -->
<!--
  <xsl:template match="*">
    <xsl:call-template name="say">
      <xsl:with-param
          name="s"
          >Processing <xsl:value-of select="name()"/></xsl:with-param>
    </xsl:call-template>
    <xsl:apply-imports/>
    <xsl:call-template name="say">
      <xsl:with-param
          name="s"
>Finished processing <xsl:value-of select="name()"/></ xsl:with-param>
    </xsl:call-template>
  </xsl:template>
-->
</xsl:stylesheet>


---------------------------------------------------------------------
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]

Reply via email to