This is the mail archive of the
docbook-apps@lists.oasis-open.org
mailing list .
Additional XEP extensions
- From: "Paul A. Hoadley" <paulh at logicsquad dot net>
- To: docbook-apps at lists dot oasis-open dot org
- Date: Sun, 02 Feb 2003 16:48:13 +1030
- Subject: DOCBOOK-APPS: Additional XEP extensions
Hello,
In the XSL stylesheets, fo/xep.xsl only generates rx:meta-fields with
name="author" and name="title" attributes. The RenderX extensions
also support name="keywords" and name="subject", so I've augmented the
xep-document-information template in my customisation layer to add the
latter two. It collects keyword and subjectterm elements from the
root down and just concatenates them into a comma-separated list, so
it is not very sophisticated -- there may be a better way of doing
this, such as collecting them only from the highest level *info
element.
I can file an RFE at SourceForge if anyone else thinks this is useful,
though my current approach is fairly crude.
----
<xsl:template name="xep-document-information">
<rx:meta-info>
<xsl:if test="//author[1]">
<xsl:element name="rx:meta-field">
<xsl:attribute name="name">author</xsl:attribute>
<xsl:attribute name="value">
<xsl:call-template name="person.name">
<xsl:with-param name="node" select="//author[1]"/>
</xsl:call-template>
</xsl:attribute>
</xsl:element>
</xsl:if>
<xsl:variable name="title">
<xsl:apply-templates select="/*[1]" mode="label.markup"/>
<xsl:apply-templates select="/*[1]" mode="title.markup"/>
</xsl:variable>
<xsl:element name="rx:meta-field">
<xsl:attribute name="name">title</xsl:attribute>
<xsl:attribute name="value">
<xsl:value-of select="$title"/>
</xsl:attribute>
</xsl:element>
<xsl:if test="//keyword">
<xsl:element name="rx:meta-field">
<xsl:attribute name="name">keywords</xsl:attribute>
<xsl:attribute name="value">
<xsl:for-each select="//keyword">
<xsl:value-of select="."/>
<xsl:if test="position() != last()">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:attribute>
</xsl:element>
</xsl:if>
<xsl:if test="//subjectterm">
<xsl:element name="rx:meta-field">
<xsl:attribute name="name">subject</xsl:attribute>
<xsl:attribute name="value">
<xsl:for-each select="//subjectterm">
<xsl:value-of select="."/>
<xsl:if test="position() != last()">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:attribute>
</xsl:element>
</xsl:if>
</rx:meta-info>
</xsl:template>
----
--
Paul.
mailto:paulh@logicsquad.net
mailto:paul.hoadley@student.adelaide.edu.au