<?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/catalog2parser.xslt
-© 2023–2024 Lady [@ Lady’s 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 rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+]>
<transform
xmlns="http://www.w3.org/1999/XSL/Transform"
xmlns:catalog="urn:oasis:names:tc:entity:xmlns:xml:catalog"
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"
</xslt:for-each>
</xslt:template>
<xslt:template match="/">
- <xslt:apply-templates select="node()" mode="书社:parse"/>
+ <xslt:variable name="about">
+ <xslt:apply-templates select="node()" mode="书社:about"/>
+ </xslt:variable>
+ <xslt:variable name="result">
+ <xslt:apply-templates select="node()" mode="书社:parse"/>
+ </xslt:variable>
+ <xslt:element name="书社:parsed">
+ <xslt:element name="书社:result">
+ <xslt:copy-of select="$result"/>
+ </xslt:element>
+ <xslt:element name="书社:metadata">
+ <xslt:element name="rdf:RDF" namespace="&rdf;">
+ <xslt:element name="rdf:Description" namespace="&rdf;">
+ <xslt:copy-of select="$about"/>
+ </xslt:element>
+ </xslt:element>
+ </xslt:element>
+ </xslt:element>
</xslt:template>
<xslt:template match="@*|node()" priority="-1">
<xslt:copy>
<xslt:apply-templates select="@*|node()" mode="书社:parse"/>
</xslt:copy>
</xslt:template>
+ <xslt:template match="@*|node()" mode="书社:about" priority="-1">
+ <xslt:apply-templates select="@*|node()" mode="书社:about"/>
+ </xslt:template>
<xslt:template match="html:script[@type]" mode="书社:parse" priority="1">
<xslt:variable name="parserdiv" select="exsl:node-set($书社:parsers)//html:div[html:dd=current()/@type]"/>
<xslt:choose>
<xslt:when test="$parserdiv">
- <xslt:variable name="result">
+ <xslt:variable name="result-fragment">
<xslt:apply-templates select="."/>
</xslt:variable>
- <xslt:variable name="reparsed-result">
- <xslt:apply-templates select="exsl:node-set($result)/node()" mode="书社:parse"/>
+ <xslt:variable name="applied-fragment">
+ <xslt:call-template name="书社:apply-parsed-by">
+ <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($result-fragment)"/>
+ </xslt:call-template>
</xslt:variable>
- <xslt:call-template name="书社:apply-parsed-by">
- <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:apply-templates select="exsl:node-set($applied-fragment)/node()" mode="书社:parse"/>
</xslt:when>
<xslt:otherwise>
<xslt:apply-templates select="."/>