]> Lady’s Gitweb - Shushe/blobdiff - lib/catalog2transform.xslt
Allow creation of metadata without matching result
[Shushe] / lib / catalog2transform.xslt
index 4a09235475aef4d5556f172843342bc47c5918db..e7640e8c97e606f51899eee34c1324803e86ac54 100644 (file)
@@ -2,7 +2,7 @@
 <!--
 ⁌ ⛩️📰 书社 ∷ lib/catalog2transform.xslt
 
-© 2023 Lady [@ Lady’s Computer]
+© 2023–2024 Lady [@ Lady’s Computer]
 
 This Source Code Form is subject to the terms of the Mozilla Public License, v 2.0.
 If a copy of the M·P·L was not distributed with this file, You can obtain one at <https://mozilla.org/MPL/2.0/>.
@@ -21,36 +21,43 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
        <template match="/">
                <xslt:transform exclude-result-prefixes="catalog exsl" version="1.0">
                        <xslt:param name="catalog" select="'catalog'"/>
+                       <xslt:variable name="书社:expansion">
+                               <xslt:apply-templates select="/" mode="书社:expand"/>
+                       </xslt:variable>
+                       <xslt:variable name="书社:result">
+                               <xslt:apply-templates select="exsl:node-set($书社:expansion)/*"/>
+                       </xslt:variable>
                        <for-each select="//catalog:uri">
-                               <xslt:include href="{@uri}"/>
+                               <xslt:include href="{@uri}">
+                                       <if test="contains(@name, ':')">
+                                               <attribute name="书社:id">
+                                                       <value-of select="@name"/>
+                                               </attribute>
+                                       </if>
+                               </xslt:include>
                        </for-each>
                        <xslt:template match="/" priority="1">
-                               <xslt:variable name="expansion">
-                                       <xslt:apply-templates select="." mode="书社:expand"/>
-                               </xslt:variable>
-                               <xslt:variable name="result">
-                                       <xslt:apply-templates select="exsl:node-set($expansion)/*"/>
-                               </xslt:variable>
                                <xslt:variable name="metadata">
-                                       <xslt:copy-of select="exsl:node-set($result)/html/head/*"/>
-                                       <xslt:apply-templates select="exsl:node-set($result)" mode="书社:metadata"/>
+                                       <xslt:copy-of select="exsl:node-set($书社:result)/html/head/*"/>
+                                       <xslt:apply-templates select="exsl:node-set($书社:result)" mode="书社:metadata"/>
+                                       <xslt:apply-templates select="document('')/xslt:transform/xslt:include" mode="书社:metadata"/>
                                </xslt:variable>
                                <html:html>
-                                       <xslt:copy-of select="exsl:node-set($result)/html:html/@*"/>
+                                       <xslt:copy-of select="exsl:node-set($书社:result)/html:html/@*"/>
                                        <html:head>
-                                               <xslt:copy-of select="exsl:node-set($result)/html:html/html:head/@*"/>
+                                               <xslt:copy-of select="exsl:node-set($书社:result)/html:html/html:head/@*"/>
                                                <html:title>
                                                        <xslt:for-each select="exsl:node-set($metadata)/html:title">
                                                                <xslt:value-of select="."/>
                                                        </xslt:for-each>
                                                </html:title>
-                                               <xslt:copy-of select="exsl:node-set($metadata)/*[not(self::html:title)]"/>
+                                               <xslt:copy-of select="exsl:node-set($metadata)/node()[self::comment() or self::* and not(self::html:title)]"/>
                                                <xslt:if test="not(exsl:node-set($metadata)/html:meta[@name='generator'])">
                                                        <html:meta name="generator" content="⛩️📰 书社"/>
                                                </xslt:if>
                                        </html:head>
                                        <html:body>
-                                               <xslt:copy-of select="exsl:node-set($result)/*[not(self::html:html or self::html:body)]|exsl:node-set($result)/html:html/*[not(self::html:head or self::html:body)]|exsl:node-set($result)/html:html/html:body/*|exsl:node-set($result)/html:body/*"/>
+                                               <xslt:copy-of select="exsl:node-set($书社:result)/*[not(self::html:html or self::html:body)]|exsl:node-set($书社:result)/html:html/*[not(self::html:head or self::html:body)]|exsl:node-set($书社:result)/html:html/html:body/*|exsl:node-set($书社:result)/html:body/*"/>
                                        </html:body>
                                </html:html>
                        </xslt:template>
This page took 0.041118 seconds and 4 git commands to generate.