This is the mail archive of the
docbook-apps@lists.oasis-open.org
mailing list .
Re: [docbook-apps] Re: XSL customization
On Sun, Apr 27, 2003 at 02:08:39AM -0400, Sam Steingold wrote:
> > * In message <20030425203938 dot A15096 at sco dot com>
> > * On the subject of "Re: XSL customization"
> > * Sent on Fri, 25 Apr 2003 20:39:39 -0700
> > * Honorable Bob Stayton <bobs at sco dot com> writes:
> >
> > See this doc:
> > http://www.sagehill.net/xml/docbookxsl/CustomMethods.html
> thanks, this was quite useful!
>
> more questions in the order of increasing complexity:
>
> 1. how do I append to a parameter? I don't want to list all the stuff
> in generate.toc all other again, so I tried
>
> <xsl:param name="generate.toc">
> refentry toc
> $generate.toc
> </xsl:param>
>
> with no success.
XSL does not allow variable values to be modified once
they are set in a given scope. It is one of the first
things you learn when writing XSL, and it takes some
getting used to. You pretty much
have to keep the whole list in your customization.
> 2. I want <literal role="foo">...</literal> to transform to
> <tt role="foo">...</tt>.
>
> <xsl:template match="literal[ at role = 'type' or @role = 'sexp']">
> <tt role="@role"><xsl:apply-templates/></tt>
> </xsl:template>
>
> does not work
Look up Attribute Value Template in your XSL reference.
You need to use this syntax:
<tt role="{ at role}"><xsl:apply-templates/></tt>
> 3. I want <emphasis role="strong">...<emphasis> to transform to
> <strong>...</strong>
>
> <xsl:template match="emphasis[ at role = 'strong']">
> <strong><xsl:apply-templates/></strong>
> </xsl:template>
>
> does not work either
Works for me. What do you get?
> 4. if a varlistentry has several term elements, I want them to be
> separated by a line break, not ", ". DSSSL:
>
> (element (varlistentry term)
> (make sequence
> (process-children-trim)
> (if (not (last-sibling?))
> (make empty-element gi: "BR")
> (literal ""))))
>
> XSL??
You need to customize this template in html/lists.xsl:
<xsl:template match="varlistentry/term">
<span class="term">
<xsl:call-template name="anchor"/>
<xsl:apply-templates/>
<xsl:text>, </xsl:text>
</span>
</xsl:template>
Change:
<xsl:text>, </xsl:text>
To:
<br/>
There is another template with priority="2" that
handles the last term, so you don't get a <br>
after every one.
> 5. Is there a way to insert comments into the __output__ files?
> Ideally, I want to preserve comments in the input file, but, IIUC,
> they are not available to the XSLT processor.
> So, I would need to find an element which may occur at any place
> (like a comment can!) and create a template to translate it into a
> comment (for further non-XSLT processing).
Comments are available to the XSLT processor, matched with
a node type expression comment(), which is not a function
even though it looks like one. This template will pass through
your comments:
<xsl:template match="comment()">
<xsl:comment><xsl:value-of select="."/></xsl:comment>
</xsl:template>
You might want to get a good XSLT reference to help with
some of these syntax issues. I use Micheal Kay's
XSLT Programmer's Reference (2nd ed.).
--
Bob Stayton 400 Encinal Street
Publications Architect Santa Cruz, CA 95060
Technical Publications voice: (831) 427-7796
The SCO Group fax: (831) 429-1887
email: bobs at sco dot com
---------------------------------------------------------------------
To unsubscribe, e-mail: docbook-apps-unsubscribe at lists dot oasis-open dot org
For additional commands, e-mail: docbook-apps-help at lists dot oasis-open dot org