From: Lady <redacted> Date: Mon, 1 Jan 2024 19:00:12 +0000 (-0500) Subject: Improve asset transforms X-Git-Tag: 0.2.0~4 X-Git-Url: https://git.ladys.computer/Shushe/commitdiff_plain/05576f88d7808054799537e89c7888e870df66bf?ds=inline;hp=dbdfdb93a22caed9398f9523e85e4ccef37468cc Improve asset transforms This commit converts `audio/*`, `image/*` and `video/*` embeds to their appropriate H·T·M·L element, enables inline `<html:style>`s, and improves the handling of `text/css` embeds. --- diff --git a/README.markdown b/README.markdown index 893ac2c..5b5b84c 100644 --- a/README.markdown +++ b/README.markdown @@ -277,13 +277,10 @@ Transforms are used to convert X·M·L files into their final output, ⛩️📰 书社 comes with some transforms; namely :— - **`transforms/asset.xslt`:** - Converts `<html:object type="text/css">` elements into corresponding - `<html:link rel="stylesheet">` elements and - `<html:object type="text/javascript">` elements into corresponding - `<html:script>` elements. - This transform enables embedding of `text/css` and `text/javascript` - files, which ordinarily are considered assets (as they lack - associated parsers). + Converts `<html:object>` elements which correspond to recognized + 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. - **`transforms/metadata.xslt`:** Provides basic `<html:head>` metadata. diff --git a/transforms/asset.xslt b/transforms/asset.xslt index 90c8dbd..0242f43 100644 --- a/transforms/asset.xslt +++ b/transforms/asset.xslt @@ -9,22 +9,33 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one --> <transform xmlns="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" xmlns:html="http://www.w3.org/1999/xhtml" + xmlns:xslt="http://www.w3.org/1999/XSL/Transform" xmlns:书社="urn:fdc:ladys.computer:20231231:Shu1She4" - exclude-result-prefixes="书社" + exclude-result-prefixes="exsl" version="1.0" > <书社:id>urn:fdc:ladys.computer:20231231:Shu1She4:asset.xslt</书社:id> - <template match="html:object[@type='text/css']"> - <comment> - <text>[书社:CSS] </text> - <value-of select="@data"/> - </comment> - </template> - <template match="comment()[starts-with(., '[书社:CSS] ')]" mode="书社:metadata"> - <html:link rel="stylesheet" type="text/css" href="{substring-after(., '[书社:CSS] ')}"/> - </template> + <template match="html:style|html:object[@type='text/css']"/> <template match="html:object[@type='text/javascript']"> <html:script type="{@type}" src="{@data}"/> </template> + <template match="html:object[starts-with(@type, 'audio/')]"> + <html:audio controls="" src="{@data}"/> + </template> + <template match="html:object[starts-with(@type, 'image/') and not(@type='image/svg+xml')]"> + <html:img src="{@data}"/> + </template> + <template match="html:object[starts-with(@type, 'video/')]"> + <html:video controls="" src="{@data}"/> + </template> + <template match="xslt:include[@书社:id='urn:fdc:ladys.computer:20231231:Shu1She4:asset.xslt']" mode="书社:metadata"> + <for-each select="exsl:node-set($书社:expansion)//html:object[@type='text/css']"> + <html:link rel="stylesheet" type="text/css" href="{@data}"/> + </for-each> + <for-each select="exsl:node-set($书社:expansion)//html:style"> + <copy-of select="."/> + </for-each> + </template> </transform> diff --git a/transforms/metadata.xslt b/transforms/metadata.xslt index b5f180f..ac618fd 100644 --- a/transforms/metadata.xslt +++ b/transforms/metadata.xslt @@ -15,7 +15,6 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one xmlns="http://www.w3.org/1999/XSL/Transform" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:书社="urn:fdc:ladys.computer:20231231:Shu1She4" - exclude-result-prefixes="书社" version="1.0" > <书社:id>urn:fdc:ladys.computer:20231231:Shu1She4:metadata.xslt</书社:id>