Hi Robert,
My answers are below.
Bob Stayton
Sagehill Enterprises
[email protected]
----- Original Message -----
From: "Robert Nagle" <[email protected]>
To: <[email protected]>
Sent: Wednesday, October 14, 2009 3:11 AM
Subject: [docbook-apps] hr separator? insert external HTML code?
Is there a direct way you can insert a separator (i.e., like the <hr
tag) into the HTML output?
While doing research into that question, I notice that the XSL book
mentions a way to insert external HTML code into the page content
(i.e., not the footer or header)
http://www.sagehill.net/docbookxsl/InsertExtHtml.html#CodeInPage
I'm not quite sure I understand the directions here and the example.
Is it not enough just to add the code
</para>
<?dbhtml-include href="mycode.html"?>
<para>
...
in the appropriate place? (I'm assuming no).
Yes, that is sufficient, as long as mycode.html contains a well-formed XML
document.
To use a trivial example: Suppose mycode.html contained only:
<hr />
Would that be sufficient or would I need to wrap it inside html. i.e.,
<html>
<hr />
</html>
Either way works. The external file must be a well-formed XML file or it
will generate an error when it is opened by the XSLT document() function
that the processing instruction template employs. If you want to include a
well-formed XML element, then you don't need the <html> wrapper. However,
if you want to include a sequence of elements, a sequence does not
constitute a well-formed document. So wrap the sequence in <html></html>,
and the stylesheet will strip off the wrapper and use the sequence. It only
does that if the root element is <html>.
Judging from the context, I'm guessing that I would need to
create/modify a template. Can you confirm this?
No, this feature is already available in the stylesheet.
The XSL example given for customizing the header is:
<xsl:template name="user.header.content">
<xsl:variable name="codefile" select="document('mycode.html',/)"/>
<xsl:copy-of select="$codefile/htmlcode/node()"/>
</xsl:template>
However, that refers to a specific template called user.header.content
(which is already part of the docbook xsl sheets).
The user.header.content template is a placeholder template in the
stylesheets. You are just customizing it to do something useful. See:
http://www.sagehill.net/docbookxsl/EmptyTemplates.html
In my trivial example of inserting the hr tag via mycode.html, would
I need to invent a template name out of thin air? Or use an existing
one?
If a template is required, can you point me to an example of how to
accomplish this?
A new template is not required.
(Again, I realize that using a dbhtml-include statement simply to
insert an hr tag is trivial, but is useful for instructive purposes).
Understood. Let me know if it doesn't work for you.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]