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] | [Elist Home]

Subject: Re: DOCBOOK-APPS: xhtml transform problems

Jirka Kosek <jirka@kosek.cz> writes:

> Eric Richardson wrote:
> > [...]
> > This piece of xhtml won't validate as only inline and special
> > block(map, applet etc.) are allowed inside of <p> whereas <pre> is
> > block, from what I can gather from the DTD and the nsgmls
> > validation error.
> DocBook allows elements like screen inside para. Stylesheet only
> converts DocBook <para>s to HTML <p>s and <screen>s to <pre>s. If you
> want to get correct HTML output, write screens on same level as paras:

I was going to say the same thing, but I reckon Eric's got a reason
for marking it up as he did-- there's a value in using para as the
same container for both the intro text and the <screen>.

> Cleaner solution would be to modify stylesheet to handle your code in
> proper way. This is doable in theory, but it would make stylesheet much
> more complicated and complex.

Well, I can think of one easy stylesheet tweak: change the "para"
template to generate <div class="para"> instead of <p>. Maybe a case
of a cure worse than the disease, because it'll change globally. But
not that big of a deal for anybody already using CSS to style pages.

I don't think it's a long-term solution, but until a better one comes
along... this one's not complicated, at least-- just change two lines
in one template, drop it into a customization file:

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"


<!-- ********************************************************************
     Simple DocBook stylesheet customization to generate <div class="para">
     in place of <p> (globally); prevents invalid instances where HTML
     block elements end up inside <p>, e.g. <p><pre></pre></p> 
     (<p> in HTML can only contain inline elements)

     Will need to use CSS to style div.para (e.g. margin-top & -bottom)

     ******************************************************************** -->

<xsl:template match="para">
  <div class="para">
    <xsl:if test="position() = 1 and parent::listitem">
        <xsl:attribute name="name">
          <xsl:call-template name="object.id">
            <xsl:with-param name="object" select="parent::listitem"/>

    <xsl:if test="@id">
      <a name="{@id}"/>


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

Powered by eList eXpress LLC