X-Git-Url: https://git.ladys.computer/Shushe/blobdiff_plain/2024d501192c7399c0791dec5ba0d3004613aefc..3dc36d1f23aff7cb60b498d88e503b619a7bc543:/README.markdown?ds=sidebyside diff --git a/README.markdown b/README.markdown index 1973e02..643a4d8 100644 --- a/README.markdown +++ b/README.markdown @@ -73,9 +73,13 @@ Compilation involves the following steps :⁠— 5. ⛩️📰 书社 uses the dependency tree to establish prerequisites for each output file. -6. ⛩️📰 书社 compiles each output file to `build/public`. +6. ⛩️📰 书社 compiles each output file to `build/result`. -7. ⛩️📰 书社 copies the output files to `public`. +7. ⛩️📰 书社 symlinks most output files from `build/result` to + `build/public`, but it does some additional processing instead on + those which indicate a non‐X·M·L desired final output form. + +8. ⛩️📰 书社 copies the final resulting files to `public`. You can use `make list` to list each identified source file or include alongside its computed type and dependencies. @@ -83,19 +87,23 @@ As this is a Make‐based program, steps will only be run if the corresponding buildfile or output file is older than its prerequisites. -## Namespaces +## Name·spaces -The ⛩️📰 书社 namespace is `urn:fdc:ladys.computer:20231231:Shu1She4`. +The ⛩️📰 书社 name·space is `urn:fdc:ladys.computer:20231231:Shu1She4`. -This document uses a few namespace prefixes, with the following +This document uses a few name·space prefixes, with the following meanings :⁠— -| Prefix | Expansion | -| -------: | :----------------------------------------- | -| `html:` | `http://www.w3.org/1999/xhtml` | -| `xlink:` | `http://www.w3.org/1999/xlink` | -| `xslt:` | `http://www.w3.org/1999/XSL/Transform` | -| `书社:` | `urn:fdc:ladys.computer:20231231:Shu1She4` | +| Prefix | Expansion | +| ---------: | :-------------------------------------------- | +| `catalog:` | `urn:oasis:names:tc:entity:xmlns:xml:catalog` | +| `exsl:` | `http://exslt.org/common` | +| `exslstr:` | `http://exslt.org/strings` | +| `html:` | `http://www.w3.org/1999/xhtml` | +| `svg:` | `http://www.w3.org/2000/svg` | +| `xlink:` | `http://www.w3.org/1999/xlink` | +| `xslt:` | `http://www.w3.org/1999/XSL/Transform` | +| `书社:` | `urn:fdc:ladys.computer:20231231:Shu1She4` | ## Setup and Configuration @@ -117,6 +125,7 @@ In every case, you may supply your own implementation by overriding the - `mkdir` (requires support for `-p`) - `mv` - `od` (requires support for `-t x1`) +- `pax` (only when generating archives) - `printf` - `rm` - `sed` @@ -126,6 +135,7 @@ In every case, you may supply your own implementation by overriding the - `touch` - `tr` (requires support for `-d`) - `uuencode` (requires support for `-m` and `-r`) +- `uudecode` (requires support for `-m` and `-r`) - `xargs` (requires support for `-0`) - `xmlcatalog` (provided by `libxml2`) - `xmllint` (provided by `libxml2`) @@ -287,7 +297,7 @@ New ⛩️📰 书社 parsers which target plaintext formats should have an `` element with no `@name` or `@mode` and whose `@match` attribute… -- Starts with an appropriately‐namespaced qualified name for a +- Starts with an appropriately‐name·spaced qualified name for a `` element. - Follows this with the string `[@type=`. @@ -344,7 +354,7 @@ Parsers are applied *prior* to embedding (and can be used to generate embeds); transforms are applied *after*. It is **strongly recommended** that auxillary templates in parsers be - namespaced (by `@name` or `@mode`) whenever possible, to avoid + name·spaced (by `@name` or `@mode`) whenever possible, to avoid conflicts between parsers. ### Attributes added during parsing @@ -426,6 +436,29 @@ Transforms are used to convert X·M·L files into their final output, To undo this behaviour, remove the `@itemscope` and `@itemtype` attributes from the embed during the transformation phase. +- **`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 + other transformations have taken place. + + If a `@with-namespaces` attribute is provided, any name·space nodes + on the toplevel serialized elements whose U·R·I’s correspond to the + definitions of the provided prefixes, as defined for the + `<书社:serialize-xml>` element, will be declared using name·space + attributes on the serialized elements. + Otherwise, only name·space nodes which _differ_ from the definitions + on the `<书社:serialize-xml>` element will be declared. + The string `#default` may be used to represent the default + name·space. + Multiple prefixes may be provided, separated by white·space. + + When it comes to name·spaces used internally by ⛩️📰 书社, the + prefix used by ⛩️📰 书社 may be declared _in addition to_ the + prefix(es) used in the source document(s). + It is not possible to selectively only declare one prefix for a + name·space to the exclusion of others. + The following are recommendations on effective creation of transforms :⁠— @@ -433,10 +466,10 @@ The following are recommendations on effective creation of It is likely an error if two transforms have templates which match the same element (unless the templates have different priority). -- Namespace templates (with `@name` or `@mode`) whenever possible. +- Name·space templates (with `@name` or `@mode`) whenever possible. - Set `@exclude-result-prefixes` on the root `xslt:transform` element - to reduce the number of declared namespaces in the final result. + to reduce the number of declared name·spaces in the final result. ## Global Params @@ -522,8 +555,9 @@ This mechanism can be used to allow transforms to insert content Output wrapping can be entirely disabled by adding a `@书社:disable-output-wrapping` attribute to the top‐level element in the result tree. -This attribute will also prevent wrapping non‐H·T·M·L embeds with an - ``. +It will not be performed on outputs whose root elements are + `<书社:archive>`, `<书社:base64-binary>`, or `<书社:raw-text>` + (described below). ## Applying Attributes @@ -540,12 +574,37 @@ In both cases, attributes from various sources are combined with Attribute application takes place after all ordinary transforms have completed. -Both elements ignore attributes in the `xml:` namespace, except for +Both elements ignore attributes in the `xml:` name·space, except for `@xml:lang`, which ignores all but the first definition (including any already present on the root element). On H·T·M·L and S·V·G elements, `@lang` has the same behaviour as `@xml:lang`. +## Other Kinds of Output + +There are a few special elements in the `书社:` name·space which, if + they appear as the toplevel element in a transformation result, cause + ⛩️📰 书社 to produce something other than an X·M·L file. +They are :⁠— + +- **`<书社:archive>`:** + Each child element with a `@书社:archived-as` attribute will be + archived as a separate file in a resulting tarball (this attribute + gives the file name). + These elements will be processed the same as the root elements of any + other file (e·g, they will be wrapped; they can themselves specify + non X·M·L output types, ⁊·c). + Other child elements will be ignored. + +- **`<书社:base64-binary>`:** + The text nodes in the transformation result will, after removing all + Ascii whitespace, be treated as a Base·64 string, which is then + decoded. + +- **`<书社:raw-text>`:** + A plaintext (U·T·F‐8) file will be produced from the text nodes in + the transformation result. + ## License This repository conforms to [REUSE][].