From: Lady <redacted> Date: Mon, 27 May 2024 19:46:56 +0000 (-0400) Subject: Simplify 书社:literally transform output X-Git-Url: https://git.ladys.computer/Shushe/commitdiff_plain/730398089144826218494ae0e8c57b7cc9c56113 Simplify 书社:literally transform output Use literal result elements and attributes in cases where it is safe to do so. --- diff --git a/lib/catalog2transform.xslt b/lib/catalog2transform.xslt index d90ca33..16ed2e5 100644 --- a/lib/catalog2transform.xslt +++ b/lib/catalog2transform.xslt @@ -44,7 +44,9 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one <xslt:param name="THISREV" select="false()"/> <xslt:variable name="书社:source" select="/"/> <xslt:variable name="书社:about-fragment"> - <apply-templates select="document($METADATA)" mode="书社:literally"/> + <apply-templates select="document($METADATA)" mode="书社:literally"> + <with-param name="extension-element-namespaces" select="'http://exslt.org/common http://exslt.org/strings'"/> + </apply-templates> </xslt:variable> <xslt:variable name="书社:about" select="exsl:node-set($书社:about-fragment)"/> <xslt:variable name="书社:expansion-fragment"> diff --git a/lib/literally.xslt b/lib/literally.xslt index 203dfd3..d929f2f 100644 --- a/lib/literally.xslt +++ b/lib/literally.xslt @@ -18,8 +18,9 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one version="1.0" > <template match="node()" mode="书社:literally"> + <param name="extension-element-namespaces"/> <choose> - <when test="self::*"> + <when test="self::* and contains(concat(' http://www.w3.org/1999/XSL/Transform ', normalize-space($extension-element-namespaces), ' '), concat(' ', namespace-uri(), ' '))"> <xslt:element name="{name()}" namespace="{namespace-uri()}"> <for-each select="@*"> <xslt:attribute name="{name()}" namespace="{namespace-uri()}"> @@ -31,6 +32,23 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one <apply-templates mode="书社:literally"/> </xslt:element> </when> + <when test="self::*"> + <element name="{name()}" namespace="{namespace-uri()}"> + <for-each select="@*[not(contains(., '{') or contains(., '}'))]"> + <attribute name="{name()}" namespace="{namespace-uri()}"> + <value-of select="."/> + </attribute> + </for-each> + <for-each select="@*[contains(., '{') or contains(., '}')]"> + <xslt:attribute name="{name()}" namespace="{namespace-uri()}"> + <xslt:text> + <value-of select="."/> + </xslt:text> + </xslt:attribute> + </for-each> + <apply-templates mode="书社:literally"/> + </element> + </when> <when test="self::text()"> <xslt:text> <value-of select="."/>