X-Git-Url: https://git.ladys.computer/Shushe/blobdiff_plain/687dbc6036a8611ce377621818f9f4112ec6c2b3..7338b131dca1dee3159488ef23b8d2545f1a5289:/lib/catalog2transform.xslt?ds=sidebyside

diff --git a/lib/catalog2transform.xslt b/lib/catalog2transform.xslt
index 6d20460..ce94067 100644
--- a/lib/catalog2transform.xslt
+++ b/lib/catalog2transform.xslt
@@ -1,18 +1,19 @@
 <?xml version="1.0"?>
 <!--
-SPDX-FileCopyrightText: 2023, 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-FileCopyrightText: 2023, 2024, 2025 Lady <https://www.ladys.computer/about/#lady>
 SPDX-License-Identifier: MPL-2.0
 -->
 <!--
 ⁌ ⛩📰 书社 ∷ lib/catalog2transform.xslt
 
-© 2023–2024 Lady [@ Ladys Computer].
+© 2023–2025 Lady [@ Ladys 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/>.
 -->
 <!DOCTYPE transform [
 	<!ENTITY 书社 "urn:fdc:ladys.computer:20231231:Shu1She4">
+	<!ENTITY xhtml "http://www.w3.org/1999/xhtml">
 	<!ENTITY xml "http://www.w3.org/XML/1998/namespace">
 ]>
 <transform
@@ -21,7 +22,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
 	xmlns:exsl="http://exslt.org/common"
 	xmlns:exslfunc="http://exslt.org/functions"
 	xmlns:exslstr="http://exslt.org/strings"
-	xmlns:html="http://www.w3.org/1999/xhtml"
+	xmlns:html="&xhtml;"
 	xmlns:nie="http://www.semanticdesktop.org/ontologies/2007/01/19/nie#"
 	xmlns:nfo="http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#"
 	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
@@ -220,7 +221,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
 					<xslt:apply-templates select="$modalinput/node()" mode="书社:metadata"/>
 				</xslt:variable>
 				<xslt:variable name="metadata" select="exsl:node-set($metadata-fragment)"/>
-				<html:html>
+				<xslt:element name="html" namespace="&xhtml;">
 					<xslt:copy-of select="$nodes[self::html:html]/@*"/>
 					<xslt:if test="not($nodes[self::html:html]/@书社:archived-as) and $nodes/@书社:archived-as">
 						<xslt:attribute name="书社:archived-as">
@@ -237,9 +238,9 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
 							<xslt:value-of select="$nodes[self::html:*]/@lang|$nodes[self::svg:*]/@lang|$nodes/@xml:lang"/>
 						</xslt:attribute>
 					</xslt:if>
-					<html:head>
+					<xslt:element name="head" namespace="&xhtml;">
 						<xslt:copy-of select="$nodes[self::html:html]/html:head/@*|$nodes[self::html:head]/@*"/>
-						<html:title>
+						<xslt:element name="title" namespace="&xhtml;">
 							<xslt:for-each select="$metadata/html:title">
 								<xslt:value-of select="."/>
 								<xslt:if test="position()!=last()">
@@ -248,9 +249,14 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
 									</xslt:text>
 								</xslt:if>
 							</xslt:for-each>
-						</html:title>
+						</xslt:element>
 						<xslt:copy-of select="$metadata/node()[not(self::html:title or self::html:meta and @name='generator')]"/>
-						<html:meta name="generator">
+						<xslt:element name="meta" namespace="&xhtml;">
+							<xslt:attribute name="name">
+								<xslt:text>
+									<text>generator</text>
+								</xslt:text>
+							</xslt:attribute>
 							<xslt:attribute name="content">
 								<xslt:for-each select="$metadata/html:meta[@name='generator']">
 									<xslt:value-of select="@content"/>
@@ -271,15 +277,19 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
 									</xslt:text>
 								</xslt:if>
 							</xslt:attribute>
-						</html:meta>
-					</html:head>
-					<html:body>
-						<xslt:copy-of select="$nodes[self::html:html]/html:body/@*|$nodes[self::html:body]/@*"/>
+						</xslt:element>
+					</xslt:element>
+					<xslt:element name="body" namespace="&xhtml;">
+						<xslt:copy-of select="($nodes[self::html:html]/html:body/@*|$nodes[self::html:body]/@*)[not(namespace-uri()='&书社;' and local-name()='archived-as')]"/>
 						<xslt:apply-templates select="$modalinput/node()" mode="书社:header"/>
-						<xslt:copy-of select="$nodes[not(self::html:html or self::html:head or self::html:body)]|$nodes[self::html:html]/node()[not(self::html:head or self::html:body)]|$nodes[self::html:html]/html:body/node()|$nodes[self::html:body]/node()"/>
+						<xslt:for-each select="$nodes[not(self::html:html or self::html:head or self::html:body)]|$nodes[self::html:html]/node()[not(self::html:head or self::html:body)]|$nodes[self::html:html]/html:body/node()|$nodes[self::html:body]/node()">
+							<xslt:copy>
+								<xslt:copy-of select="@*[not(namespace-uri()='&书社;' and local-name()='archived-as')]|node()"/>
+							</xslt:copy>
+						</xslt:for-each>
 						<xslt:apply-templates select="$modalinput/node()" mode="书社:footer"/>
-					</html:body>
-				</html:html>
+					</xslt:element>
+				</xslt:element>
 			</xslt:template>
 			<xslt:template match="/">
 				<xslt:variable name="finalization-fragment">