This commit adds two new modes akin to `书社:metadata`: `书社:header`,
which supplies nodes to insert at the beginning of the `<html:body>`,
and `书社:footer`, which supplies nodes to insert at the end. Like
`书社:metadata`, these modes do not run if output wrapping is disabled.
node of the result in the following modes to fill in areas of the
wrapper :—
+- **`书社:header`:**
+ The result of matching in this mode is prepended into the
+ `<html:body>` of the output (before the transformation result).
+
+- **`书社:footer`:**
+ The result of matching in this mode is appended into the
+ `<html:body>` of the output (after the transformation result).
+
- **`书社:metadata`:**
The result of matching in this mode is inserted into the
`<html:head>` of the output.
<xslt:apply-templates select="@*|node()" mode="书社:expand"/>
</xslt:copy>
</xslt:template>
+ <xslt:template match="text()" mode="书社:header"/>
+ <xslt:template match="text()" mode="书社:footer"/>
<xslt:template match="text()" mode="书社:metadata"/>
<xslt:template match="/" mode="书社:wrap">
<xslt:variable name="metadata">
</xslt:if>
</html:head>
<html:body>
+ <xslt:apply-templates select="document('')/xslt:transform/xslt:include" mode="书社:header"/>
+ <xslt:apply-templates select="." mode="书社:header"/>
<xslt:copy-of select="*[not(self::html:html or self::html:body)]|html:html/*[not(self::html:head or self::html:body)]|html:html/html:body/*|html:body/*"/>
+ <xslt:apply-templates select="." mode="书社:footer"/>
+ <xslt:apply-templates select="document('')/xslt:transform/xslt:include" mode="书社:footer"/>
</html:body>
</html:html>
</xslt:template>