Multiple include directories can be provided, so long as the same
file subpath doesn’t exist in more than one of them.
+- **`DATADIR`:**
+ If set to the location of a directory, ⛩📰 书社 will run a two‐stage build.
+ In the first stage, only files in `SRCDIR` which match `FINDDATARULES` (see below) will be built, with files in `DATADIR` serving as includes.
+ In the second stage, the remaining files in `SRCDIR` will be built, with the files built during the first stage, in addition to any files in `INCLUDEDIR`, serving as includes.
+ Files built during the first stage are copied into `DESTDIR` alongside those from the second stage when installing.
+
+ This functionality is intended for sites where the bulk of the site can be built from a few data files which are expensive to create.
+
- **`BUILDDIR`:**
The location of the (temporary) build directory (default: `build`).
`make clean` will delete this, and it is recommended that it not be
default, to enable additional rules without overriding the existing
ones.
+- **`DATAEXT`:**
+ A list of file extensions which signify “data” files during a two‐stage build using `DATADIR`.
+
+- **`FINDDATARULES`:**
+ Rules to use with `find` when searching for data files.
+ By default, these rules are derived from `DATAEXT`.
+
+- **`EXTRAFINDDATARULES`:**
+ The value of this variable is appended to `FINDDATARULES` by
+ default, to enable additional rules without overriding the existing
+ ones.
+
- **`PARSERS`:**
A white·space‐separated list of parsers to use (default:
`$(THISDIR)/parsers/*.xslt`).
The value of this variable is appended to `PARSERS` by default, to
enable additional parsers without overriding the existing ones.
+- **`PARSERLIBS`:**
+ A white·space‐separated list of parser dependencies (default:
+ `$(THISDIR)/lib/split.xslt`).
+
+- **`EXTRAPARSERLIBS`:**
+ The value of this variable is appended to `PARSERLIBS` by default, to
+ enable additional parser dependencies without overriding the
+ existing ones.
+
- **`TRANSFORMS`:**
A white·space‐separated list of transforms to use (default:
`$(THISDIR)/transforms/*.xslt`).
The value of this variable is appended to `TRANSFORMS` by default, to
enable additional transforms without overriding the existing ones.
+- **`TRANSFORMLIBS`:**
+ A white·space‐separated list of transform dependencies (default:
+ `$(THISDIR)/lib/serialize.xslt`).
+
+- **`EXTRATRANSFORMLIBS`:**
+ The value of this variable is appended to `TRANSFORMLIBS` by default,
+ to enable additional transform dependencies without overriding the
+ existing ones.
+
- **`XMLTYPES`:**
A white·space‐separated list of media types or media type suffixes to
consider X·M·L (default: `application/xml text/xml +xml`).
media types into the appropriate H·T·M·L elements, and deletes
`<html:style>` elements from the body of the document and moves
them to the head.
+ This conversion happens during the finalization phase, after the main
+ transformation.
- **`transforms/metadata.xslt`:**
Provides basic `<html:head>` metadata.
- **`transforms/serialization.xslt`:**
Replaces `<书社:serialize-xml>` elements with the (escaped)
serialized X·M·L of their contents.
- This replacement happens during the application phase, after most
+ This replacement happens during the finalization phase, after most
other transformations have taken place.
If a `@with-namespaces` attribute is provided, any name·space nodes
- **`THISREV`:**
The value of the `THISREV` variable (if present).
-The following params are only available in transforms :—
-
-- **`PATH`:**
- The path of the output file (within `DESTDIR`).
-
## Output Wrapping
Provided at least one toplevel result element belongs to the H·T·M·L
`<html:head>` of the output.
The document being matched will contain the full transform result
- prior to wrapping as well as an `<xslt:include>` element (with an
- `@书社:id` attribute) for each transform which has a valid
- `<书社:id>`.
+ prior to wrapping as well as an `<书社:id>` element for each
+ transform.
The latter elements can be matched to enable transforms to provide
content _without_ matching any elements in the result; for example,
the following transform adds a link to a stylesheet to the
version="1.0"
>
<书社:id>example:add-stylesheet-links.xslt</书社:id>
- <template match="xslt:include[@书社:id='example:add-stylesheet-links.xslt']" mode="书社:metadata">
+ <template match="书社:id[string(.)='example:add-stylesheet-links.xslt']" mode="书社:metadata">
<html:link rel="stylesheet" type="text/css" href="/style.css"/>
</template>
</transform>
In both cases, attributes from various sources are combined with
white·space between them.
-Attribute application takes place after all ordinary transforms have
- completed.
+Attribute application takes place after each stage of the
+ transformation, including after the initial embedding phase.
Both elements ignore attributes in the `xml:` name·space, except for
`@xml:lang`, which ignores all but the first definition (including