X-Git-Url: https://git.ladys.computer/Shushe/blobdiff_plain/90810b4c234960e725e770f331b13c4687f407c8..c1a08dff0fcba3fc28ec3061a359d71efeb438be:/lib/catalog2parser.xslt

diff --git a/lib/catalog2parser.xslt b/lib/catalog2parser.xslt
index d1d2bab..a2eab12 100644
--- a/lib/catalog2parser.xslt
+++ b/lib/catalog2parser.xslt
@@ -1,8 +1,12 @@
 <?xml version="1.0"?>
 <!--
-⁌ ⛩️📰 书社 ∷ lib/catalog2parser.xslt
+SPDX-FileCopyrightText: 2023, 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: MPL-2.0
+-->
+<!--
+⁌ ⛩📰 书社 ∷ lib/catalog2parser.xslt
 
-© 2023–2024 Lady [@ Lady’s Computer]
+© 2023–2024 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/>.
@@ -13,15 +17,22 @@ 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:exslstr="http://exslt.org/strings"
 	xmlns:html="http://www.w3.org/1999/xhtml"
+	xmlns:nfo="http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#"
+	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 	xmlns:xslt="http://www.w3.org/1999/XSL/TransformAlias"
 	xmlns:书社="urn:fdc:ladys.computer:20231231:Shu1She4"
-	exclude-result-prefixes="catalog exslstr"
+	exclude-result-prefixes="catalog"
+	extension-element-prefixes="exslstr"
 	version="1.0"
 >
 	<namespace-alias stylesheet-prefix="xslt" result-prefix="#default"/>
 	<template match="/">
-		<xslt:transform version="1.0">
+		<xslt:transform extension-element-prefixes="exsl" version="1.0">
+			<xslt:param name="BUILDTIME" select="'1972-12-31T00:00:00Z'"/>
+			<xslt:param name="IDENTIFIER" select="false()"/>
+			<xslt:param name="SRCREV" select="false()"/>
+			<xslt:param name="THISREV" select="false()"/>
 			<xslt:variable name="书社:parsers">
 				<html:dl>
 					<for-each select="//catalog:uri">
@@ -79,18 +90,35 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
 			</for-each>
 			<xslt:template name="书社:apply-parsed-by">
 				<xslt:param name="id"/>
+				<xslt:param name="media-type"/>
 				<xslt:param name="result" select="/.."/>
 				<xslt:for-each select="$result/node()">
-					<xslt:copy>
-						<xslt:attribute name="书社:parsed-by">
-							<xslt:value-of select="$id"/>
-							<xslt:if test="@书社:parsed-by">
-								<xslt:text> </xslt:text>
-								<xslt:value-of select="@书社:parsed-by"/>
-							</xslt:if>
-						</xslt:attribute>
-						<xslt:copy-of select="@*[not(namespace-uri()='urn:fdc:ladys.computer:20231231:Shu1She4' and local-name()='parsed-by')]|node()"/>
-					</xslt:copy>
+					<xslt:choose>
+						<xslt:when test="self::*">
+							<xslt:copy>
+								<xslt:if test="string($id)!=''">
+									<xslt:attribute name="书社:parsed-by">
+										<xslt:value-of select="$id"/>
+										<xslt:if test="@书社:parsed-by">
+											<xslt:text>
+												<text> </text>
+											</xslt:text>
+											<xslt:value-of select="@书社:parsed-by"/>
+										</xslt:if>
+									</xslt:attribute>
+								</xslt:if>
+								<xslt:if test="string($media-type)!=''">
+									<xslt:attribute name="书社:media-type">
+										<xslt:value-of select="$media-type"/>
+									</xslt:attribute>
+								</xslt:if>
+								<xslt:copy-of select="@*[namespace-uri()!='urn:fdc:ladys.computer:20231231:Shu1She4' or local-name()!='parsed-by' and local-name()!='media-type']|node()"/>
+							</xslt:copy>
+						</xslt:when>
+						<xslt:otherwise>
+							<xslt:copy-of select="."/>
+						</xslt:otherwise>
+					</xslt:choose>
 				</xslt:for-each>
 			</xslt:template>
 			<xslt:template match="/">
@@ -112,7 +140,8 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
 							<xslt:apply-templates select="exsl:node-set($result)/node()" mode="书社:parse"/>
 						</xslt:variable>
 						<xslt:call-template name="书社:apply-parsed-by">
-							<xslt:with-param name="id" select="$parserdiv/html:dt"/>
+							<xslt:with-param name="id" select="string($parserdiv/html:dt)"/>
+							<xslt:with-param name="media-type" select="string(@type)"/>
 							<xslt:with-param name="result" select="exsl:node-set($reparsed-result)"/>
 						</xslt:call-template>
 					</xslt:when>